You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
switch_st 2dd3f8e878 Add Android app example 6 years ago
android Add Android app example 6 years ago
debian Initial SVN import of n2n v2 8 years ago
doc Added instructions for using n2n on MacOS 6 years ago
openwrt/kamikaze Initial SVN import of n2n v2 8 years ago
scripts Modify README in the source_manifest to README.md 7 years ago
win32 Initial SVN import of n2n v2 8 years ago
CMakeLists.txt Moved to 2.3.x release 6 years ago
COPYING Initial SVN import of n2n v2 8 years ago
INSTALL Initial SVN import of n2n v2 8 years ago
LICENSE Initial commit 8 years ago
Makefile Renamed n2n.a -> libn2n.a 6 years ago
README.md Update README.md 6 years ago
benchmark.c Refreshed copyright and added contributors list 6 years ago
contributors.txt Refreshed copyright and added contributors list 6 years ago
edge.8 Initial SVN import of n2n v2 8 years ago
edge.c Added termination variable to edge loop 6 years ago
edge_utils.c Add support for Android 6 years ago
example_edge_embed.c Added termination variable to edge loop 6 years ago
gen_keyfile.py Initial SVN import of n2n v2 8 years ago
lzoconf.h Initial SVN import of n2n v2 8 years ago
lzodefs.h Initial SVN import of n2n v2 8 years ago
minilzo.c Initial SVN import of n2n v2 8 years ago
minilzo.h Initial SVN import of n2n v2 8 years ago
n2n.c Add support for Android 6 years ago
n2n.h Add support for Android 6 years ago
n2n.spec Moved to 2.3.x release 6 years ago
n2n_keyfile.c Refreshed copyright and added contributors list 6 years ago
n2n_keyfile.h Refreshed copyright and added contributors list 6 years ago
n2n_transforms.h Code rework 6 years ago
n2n_v2.7 Initial SVN import of n2n v2 8 years ago
n2n_wire.h Refreshed copyright and added contributors list 6 years ago
sn.c Refreshed copyright and added contributors list 6 years ago
supernode.1 Initial SVN import of n2n v2 8 years ago
test.c Refreshed copyright and added contributors list 6 years ago
transform_aes.c Refreshed copyright and added contributors list 6 years ago
transform_null.c Refreshed copyright and added contributors list 6 years ago
transform_tf.c Add support for Android 6 years ago
tuntap_freebsd.c Refreshed copyright and added contributors list 6 years ago
tuntap_linux.c Minor code cleanup 6 years ago
tuntap_netbsd.c Refreshed copyright and added contributors list 6 years ago
tuntap_osx.c Refreshed copyright and added contributors list 6 years ago
twofish.c Initial SVN import of n2n v2 8 years ago
twofish.h Initial SVN import of n2n v2 8 years ago
version.c Initial SVN import of n2n v2 8 years ago
wire.c Refreshed copyright and added contributors list 6 years ago

README.md

Edge node

You need to start an edge node on each host you want to connect with the same community.

  1. become root

  2. create tun device: $ tunctl -t tun0

  3. enable the edge process

$ ./edge -d n2n0 -c mynetwork -k encryptme -u 99 -g 99 -m 3C:A0:12:34:56:78 -a 1.2.3.4 -l a.b.c.d:xyw

or

$ N2N_KEY=encryptme ./edge -d n2n0 -c mynetwork -u 99 -g 99 -m 3C:A0:12:34:56:78 -a 1.2.3.4 -l a.b.c.d:xyw

Once you have this worked out, you can add the -f option to make edge detach and run as a daemon.

Note that -d, -u, -g and -f options are not available for Windows.

Supernode

You need to start the supernode once

  1. ./supernode -l 1234 -v

Dropping Root Privileges and SUID-Root Executables (UNIX)

The edge node uses superuser privileges to create a TAP network interface device. Once this is created root privileges are not required and can constitute a security hazard if there is some way for an attacker to take control of an edge process while it is running. Edge will drop to a non-privileged user if you specify the -u <uid> and -g <gid> options. These are numeric IDs. Consult /etc/passwd.

You may choose to install edge SUID-root to do this:

  1. Become root
  2. chown root:root edge
  3. chmod +s edge
  4. done

Any user can now run edge. You may not want this, but it may be convenient and safe if your host has only one login user.

Running As a Daemon (UNIX)

Unless given -f as a command line option, edge will call daemon(3) after successful setup. This causes the process to fork a child which closes stdin, stdout and stderr then sets itself as process group leader. When this is done, the edge command returns immediately and you will only see the edge process in the process listings, eg. from ps or top.

If the edge command returns 0 then the daemon started successfully. If it returns non-zero then edge failed to start up for some reason. When edge starts running as a daemon, all logging goes to syslog daemon.info facility.

IPv6 Support

n2n supports the carriage of IPv6 packets within the n2n tunnel. N2n does not yet use IPv6 for transport between edges and supernodes.

To make IPv6 carriage work you need to manually add IPv6 addresses to the TAP interfaces at each end. There is currently no way to specify an IPv6 address on the edge command line.

eg. under linux:

on hostA: [hostA] $ /sbin/ip -6 addr add fc00:abcd:1234::7/48 dev n2n0

on hostB: [hostB] $ /sbin/ip -6 addr add fc00​:abcd:​1234::6/48 dev n2n0

You may find it useful to make use of tunctl from the uml-utilities package. Tunctl allow you to bring up a TAP interface and configure addressing prior to starting edge. It also allows edge to be restarted without the interface closing (which would normally affect routing tables).

Once the IPv6 addresses are configured and edge started, IPv6 neighbor discovery packets flow (get broadcast) and IPv6 entities self arrange. Test your IPv6 setup with ping6 - the IPv6 ping command.

Performance Notes

The time taken to perform a ping test for various ciphers is given below:

Test: ping -f -l 8 -s 800 -c 10000 <far_edge>

AES (-O0) 11820 TF (-O0) 25761

TF (-O2) 20554

AES (-O3) 12532 TF (-O3) 14046 NULL (-O3) 10659


(C) 2007-18 - ntop.org and contributors