Git Product home page Git Product logo

pairmesh / pairmesh Goto Github PK

View Code? Open in Web Editor NEW
179.0 18.0 40.0 3.13 MB

The next-generation security Mesh VPN implementation based on Golang.

Home Page: https://www.pairmesh.com

License: Apache License 2.0

Makefile 0.33% Go 81.06% Shell 0.17% C 0.12% Objective-C 1.82% JavaScript 1.15% HTML 0.11% Vue 4.58% NSIS 0.83% Rich Text Format 9.83%
vpn p2p-network noise-protocol golang mesh mesh-networks mesh-vpn p2p-vpn

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

  • Prerequisites
    • Golang >= v1.17.
  • 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 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 ximply avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pairmesh's Issues

ubuntu 18.04 使用报错

Bug Report

Please answer these questions before submitting your issue. Thanks!

  1. What did you do?
sudo bin/pairmesh -k <secrety-key>
  1. What did you expect to see?
    success

  2. What did you see instead?

/opt/pairmesh/pairmesh: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by /opt/pairmesh/pairmesh)
/opt/pairmesh/pairmesh: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /opt/pairmesh/pairmesh)
ubuntu@VM-0-3-ubuntu /o/pairmesh> lsb_release 
  1. What version of PairMesh are you using (PairMesh --version)?
    v0.0.1 release

Support switch languages in the context menu

Feature Request

The current context menu is default to Chinese and it's better to provide a menu item to support switch to other languages. Further more, we can detect system language as the initial language.

Add badges for PairMesh repository

Reference: https://github.com/pingcap/tidb

[![LICENSE](https://img.shields.io/github/license/pingcap/tidb.svg)](https://github.com/pingcap/tidb/blob/master/LICENSE)
[![Language](https://img.shields.io/badge/Language-Go-blue.svg)](https://golang.org/)
[![Build Status](https://travis-ci.org/pingcap/tidb.svg?branch=master)](https://travis-ci.org/pingcap/tidb)
[![Go Report Card](https://goreportcard.com/badge/github.com/pingcap/tidb)](https://goreportcard.com/report/github.com/pingcap/tidb)
[![GitHub release](https://img.shields.io/github/tag/pingcap/tidb.svg?label=release)](https://github.com/pingcap/tidb/releases)
[![GitHub release date](https://img.shields.io/github/release-date/pingcap/tidb.svg)](https://github.com/pingcap/tidb/releases)
[![CircleCI Status](https://circleci.com/gh/pingcap/tidb.svg?style=shield)](https://circleci.com/gh/pingcap/tidb)
[![Coverage Status](https://codecov.io/gh/pingcap/tidb/branch/master/graph/badge.svg)](https://codecov.io/gh/pingcap/tidb)
[![GoDoc](https://img.shields.io/badge/Godoc-reference-blue.svg)](https://godoc.org/github.com/pingcap/tidb)

Re-assign primary relay server for a device after relay server changed

Feature Request

Is your feature request related to a problem? Please describe:

  1. Start a portal, start a relay server, say server 1
  2. A node tries to log in. Portal assigns its primary server as server 1, and stores it in database
  3. Then relay server failover or something similar happens, say server 1 is no longer online. We have a new server 2.
  4. But the node still keeps getting server 1 as its primary server when getting information from portal.
  5. The node tries to reconnect to grab graph, do connections, etc, but just could not go through,
  6. So we need to automatically re-assign the new server 2 as node's primary relay server.

Describe the feature you'd like:
Whenever node greps primary server information for itself, the portal would check if the server is up online.
If yes, then just return this valid server.
If not, then automatically choose another valid one as the node's new primary relay server.

Describe alternatives you've considered:
N/A

Teachability, Documentation, Adoption, Migration Strategy:
As described above

Support sqlite in debug mode

Feature Request

Is your feature request related to a problem? Please describe:

Describe the feature you'd like:

Describe alternatives you've considered:

Teachability, Documentation, Adoption, Migration Strategy:

Support customize api/web gateway address for Windows

Feature Request

Is your feature request related to a problem? Please describe:

Describe the feature you'd like:

Describe alternatives you've considered:

Teachability, Documentation, Adoption, Migration Strategy:

Support Linux on ARM64

Feature Request

Is your feature request related to a problem? Please describe:

Describe the feature you'd like:

Describe alternatives you've considered:

Teachability, Documentation, Adoption, Migration Strategy:

Add documentation: how to benchmark PairMesh

Feature Request

Is your feature request related to a problem? Please describe:

Describe the feature you'd like:

Describe alternatives you've considered:

Teachability, Documentation, Adoption, Migration Strategy:

Panicked on linux

Bug Report

Please answer these questions before submitting your issue. Thanks!

  1. What did you do?
./bin/pairmesh -k <key>
  1. What did you expect to see?

Normal running

  1. What did you see instead?4.
2022-04-04T05:40:29.736+0800    WARN    Client connection transporter terminated        {"addr": "139.198.29.15:2328"}
panic: send on closed channel

goroutine 38 [running]:
github.com/pairmesh/pairmesh/internal/relay.(*Client).Send(0xc000280300, 0x2, {0x961280, 0xc000280440})
        /home/lonng/devel/pairmesh/pairmesh/internal/relay/client.go:63 +0xb8
github.com/pairmesh/pairmesh/node/mesh.(*Manager).probePeers(0xc00059c280)
        /home/lonng/devel/pairmesh/pairmesh/node/mesh/manager.go:273 +0x37c
github.com/pairmesh/pairmesh/node/mesh.(*Manager).Tick(...)
        /home/lonng/devel/pairmesh/pairmesh/node/mesh/manager.go:167
github.com/pairmesh/pairmesh/node/driver.(*NodeDriver).pullPeerGraph(0xc00051c120, {0x96bef8, 0xc0002de540})
        /home/lonng/devel/pairmesh/pairmesh/node/driver/pull_peers.go:84 +0x445
created by github.com/pairmesh/pairmesh/node/driver.(*NodeDriver).Drive
        /home/lonng/devel/pairmesh/pairmesh/node/driver/driver.go:218 +0x191
  1. What version of PairMesh are you using (PairMesh --version)?

Many virtual network interfaces left

Bug Report

Please answer these questions before submitting your issue. Thanks!

  1. What did you do?
    Just keep starting and stopping pairmesh

  2. What did you expect to see?
    virtual network interfaces should be automatically cleaned up

  3. What did you see instead?

jiachen@Jiachens-Mini pairmesh % ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
	options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP>
	inet 127.0.0.1 netmask 0xff000000
	inet6 ::1 prefixlen 128
	inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
	nd6 options=201<PERFORMNUD,DAD>
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
anpi1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=400<CHANNEL_IO>
	ether 4e:af:59:d2:5e:25
	inet6 fe80::4caf:59ff:fed2:5e25%anpi1 prefixlen 64 scopeid 0x4
	nd6 options=201<PERFORMNUD,DAD>
	media: none
	status: inactive
anpi0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=400<CHANNEL_IO>
	ether 4e:af:59:d2:5e:24
	inet6 fe80::4caf:59ff:fed2:5e24%anpi0 prefixlen 64 scopeid 0x5
	nd6 options=201<PERFORMNUD,DAD>
	media: none
	status: inactive
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=50b<RXCSUM,TXCSUM,VLAN_HWTAGGING,AV,CHANNEL_IO>
	ether 14:98:77:76:9a:3a
	nd6 options=201<PERFORMNUD,DAD>
	media: autoselect (none)
	status: inactive
en4: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=400<CHANNEL_IO>
	ether 4e:af:59:d2:5e:04
	nd6 options=201<PERFORMNUD,DAD>
	media: none
	status: inactive
en5: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=400<CHANNEL_IO>
	ether 4e:af:59:d2:5e:05
	nd6 options=201<PERFORMNUD,DAD>
	media: none
	status: inactive
en2: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
	options=460<TSO4,TSO6,CHANNEL_IO>
	ether 36:bb:a6:33:61:c0
	media: autoselect <full-duplex>
	status: inactive
en3: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
	options=460<TSO4,TSO6,CHANNEL_IO>
	ether 36:bb:a6:33:61:c4
	media: autoselect <full-duplex>
	status: inactive
ap1: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
	options=400<CHANNEL_IO>
	ether 36:98:77:82:e7:99
	media: autoselect
	status: inactive
en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=6463<RXCSUM,TXCSUM,TSO4,TSO6,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM>
	ether 14:98:77:82:e7:99
	inet6 fe80::40e:593:1af2:21e6%en1 prefixlen 64 secured scopeid 0xc
	inet 192.168.0.128 netmask 0xffffff00 broadcast 192.168.0.255
	nd6 options=201<PERFORMNUD,DAD>
	media: autoselect
	status: active
en6: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=6467<RXCSUM,TXCSUM,VLAN_MTU,TSO4,TSO6,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM>
	ether c8:d9:d2:dc:36:eb
	nd6 options=201<PERFORMNUD,DAD>
	media: autoselect (none)
	status: inactive
bridge0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=63<RXCSUM,TXCSUM,TSO4,TSO6>
	ether 36:bb:a6:33:61:c0
	Configuration:
		id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
		maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
		root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
		ipfilter disabled flags 0x0
	member: en2 flags=3<LEARNING,DISCOVER>
	        ifmaxaddr 0 port 9 priority 0 path cost 0
	member: en3 flags=3<LEARNING,DISCOVER>
	        ifmaxaddr 0 port 10 priority 0 path cost 0
	nd6 options=201<PERFORMNUD,DAD>
	media: <unknown type>
	status: inactive
awdl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
	options=400<CHANNEL_IO>
	ether 46:d2:2f:f3:f7:84
	inet6 fe80::44d2:2fff:fef3:f784%awdl0 prefixlen 64 scopeid 0xf
	nd6 options=201<PERFORMNUD,DAD>
	media: autoselect
	status: active
llw0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=400<CHANNEL_IO>
	ether 46:d2:2f:f3:f7:84
	inet6 fe80::44d2:2fff:fef3:f784%llw0 prefixlen 64 scopeid 0x10
	nd6 options=201<PERFORMNUD,DAD>
	media: autoselect
	status: active
utun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1380
	inet6 fe80::1407:b59a:58ff:88f0%utun0 prefixlen 64 scopeid 0x11
	nd6 options=201<PERFORMNUD,DAD>
utun1: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 2000
	inet6 fe80::c023:f6c7:52:81b%utun1 prefixlen 64 scopeid 0x12
	nd6 options=201<PERFORMNUD,DAD>
utun2: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1000
	inet6 fe80::ce81:b1c:bd2c:69e%utun2 prefixlen 64 scopeid 0x13
	nd6 options=201<PERFORMNUD,DAD>
  1. What version of PairMesh are you using (PairMesh --version)?
    0.0.1 on mac m1

Linux taking too long exiting and cleaning up

Bug Report

Please answer these questions before submitting your issue. Thanks!

  1. What did you do?
    ctrl + c to a running pairmesh node.

  2. What did you expect to see?
    Should be pretty fast to shut and do the clean up.

  3. What did you see instead?
    Taking quite a while.

  4. What version of PairMesh are you using (PairMesh --version)?
    0.0.1 on Ubuntu 21.10, amd64, kernel 5.13.0-37-generic

Support shortcut for Windows

Feature Request

Is your feature request related to a problem? Please describe:

Describe the feature you'd like:

Describe alternatives you've considered:

Teachability, Documentation, Adoption, Migration Strategy:

compile error

General Question

env:
CentOS Linux release 7.9.2009 (Core)
Linux 3.10.0-1160.21.1.el7.x86_64 #1 SMP Tue Mar 16 18:28:22 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

make error:
gofmt (simplify)
GO111MODULE=on CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -ldflags '-w -s -X "github.com/pairmesh/pairmesh/version.GitHash=a39b637" -X "github.com/pairmesh/pairmesh/version.GitBranch=master" ' -o bin/pairmesh ./cmd/pairmesh
cmd/pairmesh/main.go:17:8: //go:build comment without // +build comment
make: *** [pairmesh] error 1

Endpoint params for nodes

Feature Request

Is your feature request related to a problem? Please describe:
env variable is not reliable. MacOS and Windows have different ways of setting and handling env. And it's not a sustainable way of deploying to many users.

Describe the feature you'd like:
Let's YAML the nodes, just like how we YAML portal and relay

Describe alternatives you've considered:
N/A

Teachability, Documentation, Adoption, Migration Strategy:
N/A

{connect: address already in use} after externalAddressChanged

Bug Report

Please answer these questions before submitting your issue. Thanks!

  1. What did you do and what did you see?

Just started pairmesh and logged in. Got:

jiachen@Jiachens-Mini pairmesh % sudo ./bin/pairmesh -k <pmkey>

2022-03-19T00:05:56.356-0700    INFO    Startup node successfully
2022-03-19T00:05:56.356-0700    INFO    Driver initialized successfully
2022-03-19T00:06:36.492-0700    INFO    Receive login callback  {"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhY2Nlc3NfdXVpZCI6IjYzYWI1ZWVmLWI1YzgtNDI4OC1iM2NkLTdmYTg2ZjFjZDhmOSIsImF1dGhfa2V5X2lkIjowLCJhdXRob3JpemVkIjp0cnVlLCJleHAiOjE2NDg2NzM1OTYsIm1hY2hpbmVfaWQiOiJmOWMwZDc3YmQxODI4OTFlN2E0YjRkYjNiMDhkMWQ4NDMzOTY0NjA3MTJlMDZlNGIyMzJlNTQ5NjIyZWM0N2FjIiwidXNlcl9pZCI6IjE0OTE3MDI1NjQ5NTYxNDc3MTIiLCJ2ZW5kb3IiOjB9.SjiVSOVhiwUAd0YxZ0HmgFVXkb1C0NcmR2XqHEsd3IM"}
2022-03-19T00:06:36.494-0700    INFO    Save the latest configuration   {"path": "/Users/jiachen/Library/Application Support/pairmesh/pairmesh.conf", "config": {"token":"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhY2Nlc3NfdXVpZCI6IjYzYWI1ZWVmLWI1YzgtNDI4OC1iM2NkLTdmYTg2ZjFjZDhmOSIsImF1dGhfa2V5X2lkIjowLCJhdXRob3JpemVkIjp0cnVlLCJleHAiOjE2NDg2NzM1OTYsIm1hY2hpbmVfaWQiOiJmOWMwZDc3YmQxODI4OTFlN2E0YjRkYjNiMDhkMWQ4NDMzOTY0NjA3MTJlMDZlNGIyMzJlNTQ5NjIyZWM0N2FjIiwidXNlcl9pZCI6IjE0OTE3MDI1NjQ5NTYxNDc3MTIiLCJ2ZW5kb3IiOjB9.SjiVSOVhiwUAd0YxZ0HmgFVXkb1C0NcmR2XqHEsd3IM","fast_key":"","dh_key":{"Private":"AwyNLVFXOG85So6vSpmY+WrA0TSTk27n4H+ts9vJQ0s=","Public":"uHgRD2zB2aHK3s/mvk4FmQJWA+kwQt2urwtZpF6MvlU="},"port":61683,"machine_id":"f9c0d77bd182891e7a4b4db3b08d1d843396460712e06e4b232e549622ec47ac","once_alert":false}}
2022-03-19T00:06:37.878-0700    INFO    Preflight request successful
2022-03-19T00:06:37.935-0700    INFO    Set virtual device address finished     {"address": "100.68.80.110"}
2022-03-19T00:06:37.935-0700    INFO    Driver preflight finished
2022-03-19T00:06:37.935-0700    INFO    All background threads running
2022-03-19T00:06:39.410-0700    INFO    Relay client noise protocol handshake is finished
2022-03-19T00:06:39.730-0700    INFO    Relay client noise protocol handshake is finished
2022-03-19T00:06:48.086-0700    INFO    ExternalAddressChanged  {"address": "207.6.111.156:61683"}
2022-03-19T00:11:10.080-0700    ERROR   Dial remote address failed      {"address": "207.6.111.156:55889", "error": "dial udp 0.0.0.0:61683->207.6.111.156:55889: connect: address already in use"}
2022-03-19T00:11:10.080-0700    ERROR   Dial remote address failed      {"address": "192.168.50.129:34542", "error": "dial udp 0.0.0.0:61683->192.168.50.129:34542: connect: address already in use"}
2022-03-19T00:11:40.080-0700    ERROR   Dial remote address failed      {"address": "207.6.111.156:55889", "error": "dial udp 0.0.0.0:61683->207.6.111.156:55889: connect: address already in use"}
2022-03-19T00:11:40.080-0700    ERROR   Dial remote address failed      {"address": "192.168.50.129:34542", "error": "dial udp 0.0.0.0:61683->192.168.50.129:34542: connect: address already in use"}
2022-03-19T00:12:10.082-0700    ERROR   Dial remote address failed      {"address": "207.6.111.156:55889", "error": "dial udp 0.0.0.0:61683->207.6.111.156:55889: connect: address already in use"}
2022-03-19T00:12:10.082-0700    ERROR   Dial remote address failed      {"address": "192.168.50.129:34542", "error": "dial udp 0.0.0.0:61683->192.168.50.129:34542: connect: address already in use"}
2022-03-19T00:12:40.081-0700    ERROR   Dial remote address failed      {"address": "207.6.111.156:55889", "error": "dial udp 0.0.0.0:61683->207.6.111.156:55889: connect: address already in use"}
2022-03-19T00:12:40.081-0700    ERROR   Dial remote address failed      {"address": "192.168.50.129:34542", "error": "dial udp 0.0.0.0:61683->192.168.50.129:34542: connect: address already in use"}
2022-03-19T00:13:10.081-0700    ERROR   Dial remote address failed      {"address": "207.6.111.156:55889", "error": "dial udp 0.0.0.0:61683->207.6.111.156:55889: connect: address already in use"}
2022-03-19T00:13:10.081-0700    ERROR   Dial remote address failed      {"address": "192.168.50.129:34542", "error": "dial udp 0.0.0.0:61683->192.168.50.129:34542: connect: address already in use"}
2022-03-19T00:13:40.081-0700    ERROR   Dial remote address failed      {"address": "207.6.111.156:55889", "error": "dial udp 0.0.0.0:61683->207.6.111.156:55889: connect: address already in use"}
2022-03-19T00:13:40.081-0700    ERROR   Dial remote address failed      {"address": "192.168.50.129:34542", "error": "dial udp 0.0.0.0:61683->192.168.50.129:34542: connect: address already in use"}
2022-03-19T00:14:10.081-0700    ERROR   Dial remote address failed      {"address": "207.6.111.156:55889", "error": "dial udp 0.0.0.0:61683->207.6.111.156:55889: connect: address already in use"}
2022-03-19T00:14:10.084-0700    ERROR   Dial remote address failed      {"address": "192.168.50.129:34542", "error": "dial udp 0.0.0.0:61683->192.168.50.129:34542: connect: address already in use"}
2022-03-19T00:14:40.082-0700    ERROR   Dial remote address failed      {"address": "207.6.111.156:55889", "error": "dial udp 0.0.0.0:61683->207.6.111.156:55889: connect: address already in use"}
2022-03-19T00:14:40.082-0700    ERROR   Dial remote address failed      {"address": "192.168.50.129:34542", "error": "dial udp 0.0.0.0:61683->192.168.50.129:34542: connect: address already in use"}
2022-03-19T00:15:10.082-0700    ERROR   Dial remote address failed      {"address": "207.6.111.156:55889", "error": "dial udp 0.0.0.0:61683->207.6.111.156:55889: connect: address already in use"}
2022-03-19T00:15:10.085-0700    ERROR   Dial remote address failed      {"address": "192.168.50.129:34542", "error": "dial udp 0.0.0.0:61683->192.168.50.129:34542: connect: address already in use"}
  1. What version of PairMesh are you using?
    PairMesh version baby alpha. OS M1 macOS Monterey

Support Windows on ARM64

Build failed:

D:\devel\pairmesh\pairmesh> 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
# github.com/pairmesh/pairmesh/node/entry
node\entry\entry_gui.go:268:13: app.baseApp.auto.IsEnabled undefined (type *autostart.App has no field or method IsEnabled)
node\entry\entry_gui.go:269:22: app.baseApp.auto.Disable undefined (type *autostart.App has no field or method Disable)
node\entry\entry_gui.go:271:22: app.baseApp.auto.Enable undefined (type *autostart.App has no field or method Enable)
node\entry\entry_gui.go:280:91: app.baseApp.auto.IsEnabled undefined (type *autostart.App has no field or method IsEnabled)
node\entry\gui_windows.go:119:31: app.baseApp.auto.IsEnabled undefined (type *autostart.App has no field or method IsEnabled)
node\entry\gui_windows.go:263:31: app.baseApp.auto.IsEnabled undefined (type *autostart.App has no field or method IsEnabled)
PS D:\devel\pairmesh\pairmesh> cd go-build\cb\cb976874e6582a71ec640a70371007756633f7bf7c07bd69d26161438c20729a-d(pairmesh_windows)

Support FreeBSD

Feature Request

Is your feature request related to a problem? Please describe:

Describe the feature you'd like:

Describe alternatives you've considered:

Teachability, Documentation, Adoption, Migration Strategy:

Replace the wintun dependence

Feature Request

Is your feature request related to a problem? Please describe:

Describe the feature you'd like:

Describe alternatives you've considered:

Teachability, Documentation, Adoption, Migration Strategy:

Tracking issue for network unstable

Feature Request

Is your feature request related to a problem? Please describe:

Describe the feature you'd like:

Describe alternatives you've considered:

Teachability, Documentation, Adoption, Migration Strategy:

Support shortcut for MacOS

Feature Request

Is your feature request related to a problem? Please describe:

Describe the feature you'd like:

Describe alternatives you've considered:

Teachability, Documentation, Adoption, Migration Strategy:

Better documentation on setup configs

Feature Request

Is your feature request related to a problem? Please describe:
N/A

Describe the feature you'd like:
A better documented config guidelines for service bootcamps and setups

Describe alternatives you've considered:
N/A

Teachability, Documentation, Adoption, Migration Strategy:
N/A

Support local storage cache in debug mode

Feature Request

Is your feature request related to a problem? Please describe:

Describe the feature you'd like:

Describe alternatives you've considered:

Teachability, Documentation, Adoption, Migration Strategy:

Support customize api/web gateway address for MacOS

Feature Request

Is your feature request related to a problem? Please describe:

Describe the feature you'd like:

Describe alternatives you've considered:

Teachability, Documentation, Adoption, Migration Strategy:

Provide guide: how to deploy PairMesh on Kubernetes

Feature Request

Is your feature request related to a problem? Please describe:

Describe the feature you'd like:

Describe alternatives you've considered:

Teachability, Documentation, Adoption, Migration Strategy:

Deep dive - Windows wintun driver uninstall error

Bug Report

Please answer these questions before submitting your issue. Thanks!

  1. What did you do?
    Try to start PairMesh.exe binary.

  2. What did you expect to see?
    Shoud be able to start and see icon in systray

  3. What did you see instead?
    Program exited with error notes

  4. What version of PairMesh are you using (PairMesh --version)?
    PairMesh v0.0.1 on Windows 11, AMD Ryzen 5 3500U CPU

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.