/meshnet

UDP tunnelling mesh network based virtual ethernet network

Primary LanguageMakefileGNU General Public License v3.0GPL-3.0

MeshNet

This is a small mesh tunnelling system for Linux. The basic idea is that it allows multiple remote nodes to act as if they are all connected to the same local ethernet network. Each node maintains a list of the addresses of all the other nodes in the network and automatically distributes the list to any new nodes that connect.

Communication is over UDP, so you will need to set up port forwarding on NAT gateways (home routers, etc).

All communication is encrypted with AES rijndael-128.

A node, when connecting to the network, needs to know the address of one other node to begin communication. That can be any node on the network - there is no "master" node.

Configuration is performed through a configuration file which consists of a list of key/value pairs. The default sample file contains:

psk         WellingtonBootsAreMadeOfRubber
ifup        /usr/local/etc/meshnet/ifup
ifdown      /usr/local/etc/meshnet/ifdown
peer        1.2.3.4,2.3.4.5
ip          3.4.5.6
port        3647
announce    30
fork        no
  • psk - The pre-shared key for encryption
  • peer - A list of peers to connect to initially - can include :port
  • ip - The outside-facing IP address of this machine
  • port - The UDP port to communicate on
  • announce - The number of seconds between auto-announcements
  • fork - yes/no - fork into the background
  • ifup - a script to run when the interface comes up - $1 is the interface name.
  • ifdown - a script to run when the interface goes down - $1 is the interface name.