## Feste IP Adresse Anlegen 

Um Fehler auszuschließen am besten statische IP-Adressen benutzen, die außerhalb des Bereiches vom lokalen DHCP-Servers (zB. F!Box) liegen.Default route dann manuell zum lokalen uplink gateway (zB zur F!Box) setzen.  
Konfiguration rebootfest machen (/etc/rc.conf bei BSD, /etc/network/interfaces bei Debian). Die im Folgenden als Beispiel verwendeten private-IP-Adressen natürlich durch die real konfigurierten ersetzen. Wenn man die Netzwerkkonfiguration der APU versemmelt und nicht mehr per ssh drankommt, gibt's ja zum Glück noch die serielle
Verbindung:-)

In meinem Fall habe ich mich entschieden für die Adressen:
 
Apu (Debian)  : 192.168.1.100  
Laptop        : 192.168.1.99  

Einzelheiten zu der Datei interfaces sind [hier](https://wiki.ffdo.de/_edit/Community/Bildung/FF@home/Debian10%20mit%20Tinc%20und%20Bird) zu finden.  

## Für die Datenweitergabe zwischen den Netzen ist der folgende Eintrag nötig.  

/etc/sysctl.conf  

    # Uncomment the next line to enable packet forwarding for IPv4
    net.ipv4.ip_forward=1  

## Verzeichnisstruktur anlegen 

sudo mkdir -p /etc/tinc/lan/hosts/  # für ein lokales Netz  
sudo mkdir -p /etc/tinc/wan/hosts/  # für ein Netz mit öffentlicher ip  

Unter OpenBSD sind die Pfade hier zu finden: @hoerde:/usr/local/etc/tinc/...  
Der Parameter -p unterdrückt die Anzeige eines Fehlers, wenn /lan/ und/oder /hosts/ schon vorhanden sind; sonst werden die Verzeichnisse lan und hosts erzeugt.

## Konfigurationsdateien "lan" und "wan" anlegen 

Nun müssen eine Reihe von Konfigurationsdateien und -scripten angelegt werden damit Tinc ordnungsgemäß
seinen Dienst verrichtet.  
Die Inhalte und das Vorgehen werden weiter unten beschrieben.  
"apu" und "laptop" müssen entsprechend der [ip-Liste](https://wiki.ffdo.de/Community/Bildung/FF@home/IP-Adressen) 
umbenannt werden in z.B. "berghofen" und "berglap"  

- /etc/tinc/lan/tinc.conf
- /etc/tinc/lan/rsa_key.priv (wird mit tincd erzeugt)
- /etc/tinc/lan/tinc-up 
- /etc/tinc/lan/hosts/apu
- /etc/tinc/lan/hosts/laptop  
Dabei sind hosts/apu und hosts/laptop auf beiden Geräten identisch, die anderen gerätespezifisch.  
Der Pfad lautet entweder /etc/tinc/lan/ oder /etc/tinc/wan/.  


## Tinc-Konfigurationsdatei 

vi /etc/tinc/lan/tinc.conf  
tinc Instanz aufsetzen (Beschreibung für tinc 1.0.x) Tipp! Für das Übertragen der Einstellungen am besten jeweils mit dem Befehl "cat" arbeiten.  
Für die tinc-Instanz mit dem Namen "lan" ungefähr Folgendes in die config Datei vi etc/tinc/lan/tinc.conf schreiben:

 Name = apu  
 Device = /dev/net/tun  
 Mode = switch  
 AddressFamily = ipv4  
 BindToAddress = 192.168.1.100  
 Port = 10001  
 MaxTimeout = 30  
 GraphDumpFile = /var/run/tinc.lan.dot  
 #LocalDiscovery = yes  
 ConnectTo = laptop # z.B. berglap  

Und auf dem Laptop ähnliche Daten, bis auf: "Name,BindToAddress und ConnectTo".

Name = laptop  
Device = /dev/net/tun  
Mode = switch  
AddressFamily = ipv4  
BindToAddress = 192.168.1.99  
Port = 10001  
MaxTimeout = 30  
GraphDumpFile = /var/run/tinc.lan.dot  
#LocalDiscovery = yes  
ConnectTo = apu # z.B. berghofen  

## Auf beiden Geräten die Schlüsselpaare generieren:
Anmerkung: bei mir funktionierte der Befehl nur mit Angabe des Pfades.

tincd -n lan -K 4096 oder mit Pfad  
/usr/sbin/tincd -n lan -K 4096  
ebenso für wan:  
tincd -n wan -K 4096  

Die Ausgabe sieht etwa so aus:  
Generating 4096 bits keys:  
.............................................................................  
.............................................................................  
............................................................................................++++ p  
...........................................................++++ q  
Done.  
Please enter a file to save private RSA key to [/etc/tinc/lan/rsa_key.priv]:  
...  

## /etc/tinc/lan/tinc-up und /etc/tinc/wan/tinc-up erstellen  
In tinc.conf haben wir das Device /dev/net/tun festgelegt. Dieses wird unter Debian beim Aufruf von tincd erstellt  
und muss aktiviert werden. Dies geschieht mit der Datei tinc-up.  
 
`!/bin/sh`  
`IP=193.43.220.165`   
`NETLEN=27`  
 
`ip a add $IP/$NETLEN brd 193.43.220.191 dev $INTERFACE`  
`ip link set $INTERFACE mtu 1504 up` 

IP=193.43.220.165 # Die Variable IP für das wan wird gesetzt.  
IP=192.168.40.1 # Die Variable IP für das lan wird gesetzt.
Die öffentliche ip ist die des tun Gerätes für das wan. Debian erstellt 2 unabhängige Geräte tun,  
einmal im Verzeichnis /etc/tinc/lan/ für das lan und dann für das wan, beide müssen aktiviert werden.  
Die ip für das tun im lan ist z.B. 192.168.40.1  
NETLEN=27  
Die Variable $NETLEN wird gesetzt, sie bestimmt die Netzgröße 193.40.220.160 - 193.43.220.191.  

Im lan beträgt die Netzgröße 192.168.40.0 - 192.168.40.31 und kann auch größer gewählt werden, wenn notwendig.  

`ip a add $IP/$NETLEN brd 193.43.220.191 dev $INTERFACE`  
`ip link set $INTERFACE mtu 1504 up`  

Der Wert von INTERFACE ist wan. Die Netztmaske $ip/$NETLEN ist 193.43.220.165/27.  
Das Setzen der MTU ist besonders wichtig, voreingestellt sind 1500, hier werden aber  
wegen der vpn im Nordstadtrechner 4 Byte mehr benötigt, also 1504.  

tinc-up kann auch in der Datei interfaces abgebildet werden.  

## Die IP-Adressen eintragen  
Dann in den public key Dateien ..  
vi /etc/tinc/lan/hosts/apu  
und  
vi /etc/tinc/lan/hosts/laptop  
die IP-Adresse des hosts oben ergänzen:
hier zum Beispiel die Änderung für den Apu

Address = 192.168.1.100  
Port = 10001  
für das 192er Netz und  
Address = 130.180.53.22 #hoerde  
Port = 661

-----BEGIN RSA PUBLIC KEY-----  
MIICCgKCAgEAwirLKOYuwraf+MneMpzWqKhv8qCcZCC7yFAN2y+OnT5lXzV/LgwQ  
[...]  

Nun die Datei .../tinc/lan/hosts/apu von der APU an die gleiche Stelle
auf dem Laptop kopieren.  
Und umgekehrt .../laptop auf die APU.  
Für das wan netz müssen entsprechend die publickey dateien der partner (hoerde, nordstadt,...) auf die APU kopiert werden.     
Genauso muss die publickey Datei der APU nach hoerde und nordstadt kopiert werden.  

## Konfiguration rebootfest machen und starten  
`$:sudo systemctl enable tinc`  
`$:sudo systemctl enable tinc@lan`  
`$:sudo systemctl enable tinc@wan`  
und  
`$:sudo systemctl start tinc`  
`$:sudo systemctl start tinc@lan`  
`$:sudo systemctl start tinc@wan`  

## Funktionstest
In Debian kann man mit systemctl überprüfen, ob tinc automatisch nach einem Reboot läuft und ob es nach dem Einstellen der Schlüssel  
auch funktioniert:  
`$:sudo systemctl status tinc@lan` für das lan  
`$:sudo systemctl status tinc@wan` für das wan  
oder nach Änderungen:  
`$:sudo systemctl restart tinc@lan` für das lan  
`$:sudo systemctl restart tinc@wan` für das wan  

Falls die Fehlermeldung auftaucht: Can't write to Linux tun/tap device (tap mode) /dev/net/tun: Input/output error  
Mit `$:ip a` prüfen, ob das tun Device erstellt wurde.  
Mit `$:ls -al /dev/net/tun` prüfen, ob das Device rw ist für root.  
Laut [tinc-Manual](https://tinc-vpn.org/documentation/tinc.pdf) Seite 28:  
‘Can’t write to /dev/net/tun: No such device’  
• You forgot to ‘modprobe tun’.  
• You forgot to compile ‘Universal TUN/TAP driver’ in the kernel.  
• The tun device is located somewhere else in /dev/.  

modprobe stellt sicher, dass das tun Device auch geladen wird, hat hier geholfen.  
Ein "systemctl restart tinc@lan oder wan" reicht nicht, am Sichersten ist ein reboot.    

