GRE
Da GRE ein sehr schnelles Tunnelprotokoll ist und wenig Overhead erzeugt ist es für die Verbindung zwischen Routern in Rechenzentren sehr gut geeigent.
Interface anlegen
Um die einzelnen Hoods miteinander zu verbinden werden die jeweiligen Router über GRE-Tunnel miteinander verbunden. Dafür muss auf beiden Seiten ein passendes Interface angelegt werden. Hierfür muss man mit dem Admin des jeweiligen Tunnelpartners in Kontakt treten. Eine unvollständige Liste an Peeringangeboten findet sich hier: Portal:Layer3Peering.
Ein GRE-Tunnel kann sowohl IPv4, als auch IPv6 Daten transportieren. Es genügt daher, einen Tunnel entweder über IPv4 oder IPv6 aufzubauen.
Da Babel über IPv6-Multicasts kommuniziert, müssen dem Interface noch link-local Adressen hinzugefügt (passiert nicht immer automatisch) und Multicast aktiviert werden. Am besten generiert man sich die link-local zufällig um Kollisionen zu vermeiden.
Die Debian Interfacekonfiguration sollte dann etwa so aussehen. Der Interfacename (Platzhalter "<IFNAME>") kann frei gewählt werden (meist maximal 15 Zeichen):
auto <IFNAME> iface <IFNAME> inet6 static address fe80::IRGENDWAS/64 # IPv6 GRE pre-up ip -6 tunnel add $IFACE mode ip6gre local EIGENEPUBLICIP remote REMOTEPUBLICIP ttl 255 post-down ip tunnel del $IFACE # Alternativ: IPv4 GRE #pre-up ip -4 tunnel add $IFACE mode gre local EIGENEPUBLICIP remote REMOTEPUBLICIP ttl 255 #post-down ip tunnel del $IFACE # Enable Multicast for Babel up ip link set dev $IFACE multicast on # iif rules post-up ip -6 rule add iif $IFACE prio 200 table fff pre-down ip -6 rule del iif $IFACE prio 200 table fff iface <IFNAME> inet static address 10.83.252.x/32 scope link # iif rules post-up ip -4 rule add iif $IFACE prio 200 table fff pre-down ip -4 rule del iif $IFACE prio 200 table fff
Die Interfacekonfiguration kann dann über den Aufruf von ifup <IFNAME>
bzw. ifdown <IFNAME>
gestartet bzw. gestoppt und damit das Interface konfiguriert bzw. dekonfiguriert werden.
Abschließend müssen GRE Interfaces in die Datei "/etc/default/babeld" eingefügt werden. (Siehe Freifunk-Gateway_aufsetzen/Babel)
Verbindung testen
Nach Aufruf von ip link
bzw. ip addr
sollte ein passender Eintrag für den Tunnel auftauchen:
7: <IFNAME>@NONE: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1448 qdisc noqueue state UNKNOWN group default qlen 1 link/gre6 EIGENEPUBLICIP peer REMOTEPUBLICIP inet 10.83.252.x/32 brd 10.83.252.x scope link <IFNAME> valid_lft forever preferred_lft forever inet6 fe80::IRGENDWAS/64 scope link valid_lft forever preferred_lft forever
Ein Multicast Ping auf das GRE-Tunnel-Interface zeigt, ob die Gegenstelle korrekt erreichbar ist:
ping ff02::1%<IFNAME>