Freifunk-Gateway aufsetzen/gre

Aus Freifunk Franken
Wechseln zu:Navigation, Suche

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