Giter Club home page Giter Club logo

pairmesh's Introduction

LICENSE Language Build Status Go Report Card GitHub release GitHub release date Coverage Status GoDoc

What is PairMesh?

The mission of PairMesh is to provide network infrastructure for remote collaboration and work.

By setting up a security P2P virtual private LAN network among multiple devices to solve the networking problems of off-site network access and remote collaboration. It can easily meet the requirments of remote work collaboration, remote debugging, intranet penetration, NAS/Git server access, etc.

  • Easy to use

    PairMesh node discovery peers throgh PairMesh Control Plane and configuration of virtual network devices to set up a virtual network in seconds automatically, avoiding any manual configuration steps. The client provides a UI interface to display device information, network topology and node operations. PairMesh Control Plane provides a web dashboard for PairMesh node operations, key management and network maintainence.

  • Blazing Fast

    PairMesh automatically forms P2P networks with other PairMesh nodes after obtaining network topology information from the PairMesh Control Plane. The network traffic will bypass a central service and transmit to peer nodes directly, making communication between networks formed by PairMesh extremely fast.

  • Security

    Using the latest security framework Noise Protocol and the latest cryptography technologies, multiple security mechanisms are included in the communication between Pairmesh and Control Plane as well as between PairMesh nodes to ensure data integrity, security, and speed of traffic between PairMesh networks while having the best encryption and decryption performance.

    • All requests from PairMesh nodes and Control Plane need to verify the Token bound with machine information to ensure that illegal nodes can be prevented from joining the network even if the Token is leaked.
    • The TCP connections between PairMesh and Relay servers will be verified with the signature of node information in the handshake phase, and only those nodes whose information is signed by Control Plane can be used for subsequent communication.
    • All nodes use different keys, and each node pair of the whole topology network uses a unique key to avoid key leakage affecting the security of the whole network.

Quick Start

  • How to build PairMesh
    # Linux/macOS Terminal
    make pairmesh
    
    # Windows PowerShell
    go build -o bin/PairMesh.exe  -ldflags "-s -w -H=windowsgui -X github.com/pairmesh/pairmesh/version.GitHash=$(git describe --no-match --always --dirty) -X github.com/pairmesh/pairmesh/version.GitBranch=$(git rev-parse --abbrev-ref HEAD)" ./cmd/pairmesh
  • Use PairMesh managed control plane service (Chinese Only).
  • Self-hosted PairMesh control plane.

Architecture

The following diagram shows the overall architecture of PairMesh, where the PairMesh node is an application installed on the end device, responsible for managing the local virtual NIC device and discovering information about other nodes from the Control Plane service, as well as establishing P2P communication connections with other nodes, encrypting and decrypting data and processing traffic data in the network.

Architecture

Community

You can join these discussion forum and chats to discuss and ask PairMesh related questions:

Contributing

PairMesh is developed by an open and friendly community. Everybody is cordially welcome to join the community and contribute to PairMesh. We value all forms of contributions, including, but not limited to:

  • Code reviewing of the existing patches
  • Documentation and usage examples
  • Community participation in forums and issues
  • Code readability and developer guide
  • We welcome contributions that add code comments and code refactor to improve readability
  • We also welcome contributions to docs to explain the design choices of the internal
  • Test cases to make the codebase more robust
  • Tutorials, blog posts, talks that promote the project

Here are guidelines for contributing to various aspect of the project:

Any other question? Reach out to the PairMesh Discussion forum to get help!

Development Guidelines

Version

Each time when initiating a releasse, there are places to notice to bump up verions:

  • version/version.go: MajorVersion/MinorVersion/PatchVersion
  • build/windows_installer.nsi: PRODUCT_VERSION

License

PairMesh is under the Apache 2.0 license. See the LICENSE file for details.

pairmesh's People

Contributors

echobygo avatar hi-windy avatar lingkeyang avatar vodkaslime avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.