# Installation unter Debian

### Beschreibung:

die installation ist so einfach, wie sie für einen Tunnel noch nie da gewesen ist.  
Einfach paket installieren, fertig.  
  
Das automatische starten des Tunnels wird mit post-up befehlen in der Netzwerkkonfig realisert..  
keine unnötigen startscripte etc.  
Und das beste auch noch einfach für ansible bau bar.

### Installation:

Das paket n2n und falls man später benötigt das Paket bridge-utils

```
apt install n2n bridge-utils
```

Das Routing sollte in der sysctl auch aktiviert sein, wenn ip routing und nicht Layer 2 benötigt wird

```
nano /etc/sysctl.conf 
```

Inhalt am Ende anfügen

```
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1

```

nun anwenden

```
sysctl -p
```

Das wars schon.

### Inbetriebnahme

####   
Server starten

n2n besteht aus einem Server Dienst der nur listener ist, möchte man das der Server also da wo der Listener ist auch ein VPN Teilnehmer wird, **braucht er auch eine Verbindung (edge Client)!**  
Dieser listener wird supernode genannt

Server starten, mit nohup bringen wir das ding in den Hintergrund dann den Pfad zu supernode -l gibt den port an. Dann geben wir das ganze auch noch in eine logfile, damit wir darin wenn nötig debuggen können

```
nohup /usr/bin/supernode -l {{ supernode_port }} > /var/log/supernode.log 2>&1 &

Beispiel:

nohup /usr/bin/supernode -l 5555 > /var/log/supernode.log 2>&1 &
```

Damit läuft der Listenener auch schon.  
um den Server zu beenden den Prozess einfach killen mit pkill

```
pkill supernode
```

In einer /etc/network/interfaces würde das ganze so aussehen. Sobald das interface up ist, startet der Server.  
Wird das interface beendet wird der server gekillt

```
auto enp6s18
iface enp6s18 inet static
    address 192.168.178.138
    netmask 255.255.255.0
    gateway 192.168.178.1
    dns-nameservers 8.8.8.8 8.8.4.4
    post-up nohup /usr/bin/supernode -l 5555 > /var/log/supernode.log 2>&1 &
    pre-down /usr/bin/pkill supernode


```

#### Verbindungen aufbauen

mit dem prgramm edge, hier die Parameter

```
  /usr/sbin/edge -r -d <netzwerkdevicename> -c "layer2" -k "meinultrageheimespasswort>" -a vpn-seite-ip -l "supernodehost:supernodeport" -f > /var/log/n2n_edge
  
  Parameter:
  -r das routen automatisch erstellt werden sollen
  -d wie das netzwerkdevice heißen soll, dies wird mit ip a angezeigt. wir nennen es einfach n2n0
  -c community namen muss bei allen teilnehmern gleich sein, die in eine gruppe sollen
  -k das super sicher hash passwort um so länger um so besser, muss auch bei allen gleich sein, die in eine gruppe sollen
  -a die eigen interne ip des vpn adapters
  -l dieip/hostname des supernode:denport des supernodes
  -f soll im fordergrund laufen
  >  /var/log/n2n_edge  ausgabe in log file
  
  Hier der ganze Befehl
  /usr/sbin/edge -r -d n2n0 -c "layer2" -k "supergeheimespasswort" -a 10.10.2.1 -l "167.235.xxx.xxx:5555" -f > /var/log/n2n_edge
  
  Und schon baut er eine Verbindung zum supernode auf
  am zweiten client der gleiche befehl nur die ip ist anderns, beispiel
  /usr/sbin/edge -r -d n2n0 -c "layer2" -k "supergeheimespasswort" -a 10.10.2.2 -l "167.235.xxx.xxx:5555" -f > /var/log/n2n_edge
  
```

mit ip a hier vom zeiten client sieht man die netzwerkkonfig:

```
 n2n0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1400 qdisc fq_codel master br0 state UNKNOWN group default qlen 1000
    link/ether 4a:30:8d:45:50:db brd ff:ff:ff:ff:ff:ff
    inet 10.10.2.2/24 brd 10.10.2.255 scope global n2n0
       valid_lft forever preferred_lft forever
    inet6 fe80::4830:8dff:fe45:50db/64 scope link 
       valid_lft forever preferred_lft forever

```

Nun sollten wir in der lage sein, 10.10.2.1 anzupingen.  
Mit dem Befehl

```
/usr/bin/pkill edge
```

Können wir die Verbindung wieder beenden

Verbindung über die interfaces mittels post-up Sektion starten

```
auto enp6s18
iface enp6s18 inet static
    address 192.168.178.138
    netmask 255.255.255.0
    gateway 192.168.178.1
    dns-nameservers 8.8.8.8 8.8.4.4
    post-up /usr/sbin/edge -r -d n2n0 -c "layer2" -k "meingeheimespasswort" -a 10.10.2.2 -l "167.235.xxx.xxx:5555" -f > /var/log/n2n_edge
    pre-down /usr/bin/pkill edge
```

Damit ist die Grundlegende installation abgeschlossen