Community/Bildung/FF@home/11 Tinc konfigurieren

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 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 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 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.