In diesem Kapitel wird beschrieben, wie über den Tunnelbroker Freenet6 ein Netzwerk an den globalen 6Bone angeschlossen werden kann.
Damit ein möglichst realitätsnahes Szenario erreicht wird, wird ein heterogenes Netz aufgebaut, welches aus einem Dual-Stack-Teilnetz (Subnetz A) und einem IPv6-Only-Netz (Subnetz B) besteht (Abbildung 11.1). Der IPv4-Teil im Subnetz A besitzt keine Konnektivität zum IPv4-Internet und dient im Wesentlichen dazu, DNS-Anfragen über IPv4 zu ermöglichen, was für den Betrieb älterer Windows- sowie Mac OS X-Clients nötig ist (diese unterstützen das DNS-Protokoll über IPv6 noch nicht). Der Linux-Router und der Cisco 2611XM routen nur IPv6. Auf dem Linux-Router läuft zusätzlich der DNS-Server für das IPv6-Netz.
Grundsätzlich kann jeder beliebige Tunnelbroker benutzt werden, in der Schweiz bietet sich z. B. derjenige von Dolphin an. Der Vorteil des Brokers Freenet6 ist, dass bei Bedarf ein ganzes Netz mit einem /48-Präfix über den Tunnel geroutet wird und es auch möglich ist, von einer dynamischen IPv4-Adresse aus einen Tunnel aufzubauen.
Zunächst muss bei Freenet6 ein Account eröffnet werden, mit welchem später der Tunnel automatisch konfiguriert wird. Freenet6 benutzt dazu ein eigenes Protokoll namens Tunnel Setup Protocol (TSP), für welches für diverse Betriebssysteme ein Client existiert. Im folgenden wird die Installation des Linux-TSP-Clients beschrieben.
Auf der Freenet6-Download-Seite kann ein Debian-Paket des Tunnel Setup Protocol Clients tspc bezogen werden. Dieses wird mit dpkg installiert:
dpkg -i freenet6-client-1.0-1_i386.deb
Die Konfiguration erfolgt über die Datei tspc.conf:
tsp_version=1.0.1 tsp_dir=/etc/freenet6-client auth_method=any # IP-Adresse des Routers client_v4=160.85.162.9 # Freenet6 User-ID userid=da-zhw-2003 passwd=geheim # Linux-System template=linux # Tunnel-Endpunkt server=tsps2.freenet6.net retry_delay=0 #Tunnel-Interface if_tunnel=sit1 # Router host_type=router prefixlen=48 if_prefix=eth1
Weitere Informationen hierzu finden sich in der man-Page (man 5 tspc.conf).
In der Standardkonfiguration wird automatisch auf dem in der Zeile if_prefix angegebenen Interface der radvd gestartet. Da im vorliegenden Fall Zebra das Prefix Advertisement übernimmt, kann die entsprechende Zeile im Setup-Skript auskommentiert werden:
# Folgende Zeile kann auskommentiert werden: # Exec $rtadvd -u radvd -C $rtadvdconfigfile
Der tcpc kann dann gestartet werden. Die Ausgabe sieht etwa wie folgt aus:
# tspc -f /etc/freenet6-client/tspc.conf -v tspc - Tunnel Server Protocol Client Loading configuration file Connecting to server Send request Process response from server TSP_HOST_TYPE router TSP_TUNNEL_INTERFACE sit1 TSP_HOME_INTERFACE eth1 TSP_CLIENT_ADDRESS_IPV4 160.85.162.9 TSP_CLIENT_ADDRESS_IPV6 3ffe:0bc0:8000:0000:0000:0000:0000:1595 TSP_SERVER_ADDRESS_IPV4 206.123.31.115 TSP_SERVER_ADDRESS_IPV6 3ffe:0bc0:8000:0000:0000:0000:0000:1594 TSP_TUNNEL_PREFIXLEN 128 TSP_PREFIX 3ffe:0bc0:0593 TSP_PREFIXLEN 48 TSP_VERBOSE 1 TSP_HOME_DIR /etc/freenet6-client --- Start of configuration script. --- Script: linux.sh sit1 setup Setting up link to 206.123.31.115 Removing old IPv6 address 3ffe:bc0:8000::1595/128 This host is: 3ffe:0bc0:8000:0000:0000:0000:0000:1595/128 Adding default route Router configuration Kernel setup net/ipv6/conf/all/forwarding = 1 Adding prefix to eth1 Removing old IPv6 address 3ffe:bc0:593:1::1/64 Create new /etc/freenet6-client/tsprtadvd.conf Starting radvd: /usr/sbin/radvd -u radvd -C /etc/freenet6-client/tsprtadvd.conf --- End of configuration script. --- Exiting with return code : 0 (0 = no error)
Zebra übernimmt in erster Linie das Routing-Advertisement im Subnetz A, ausserdem wird der ripngd mitgestartet (ripngd=yes in /etc/zebra/daemons), damit die Routing-Informationen mit dem Cisco-Router ausgetauscht werden. Die Konfigurationsdateien sehen wie folgt aus:
interface eth0 interface eth1 ip address 10.0.1.3/24 ipv6 address 3ffe:bc0:593:1::1/64 ipv6 nd send-ra ipv6 nd prefix-advertisement 3ffe:bc0:593:1::/64
router ripng network eth1
Damit die DNS-Namensauflösung auch über IPv4 funktioniert, muss ein IPv4-DNS vorhanden sein, diese Aufgabe übernimmt maradns auf dem Linux-Router. Damit rekursive Anfragen beantwortet werden, muss in der mararc die Zeile recursive_acl = "10.0.1.0/24" vorhanden sein. Zebra und Maradns können dann gestartet werden:
# /etc/init.d/zebra start # /etc/init.d/maradns start
Die Aufgabe des Cisco besteht einerseits darin, die Pakete aus dem Subnetz B zum Linux-Router zu leiten, damit diese über den Tunnel zum 6Bone gelangen, andererseits übernimmt er die Vergabe von IPv6-Adressen im Subnetz B über Stateless Autoconfiguration. Die Konfiguration des ersten Interfaces sieht folgendermassen aus:
R5(config)#int f0/0 R5(config-if)#ipv6 enable R5(config-if)#ipv6 address autoconfig R5(config-if)#ipv6 rip ripng enable R5(config-if)#ip address 10.0.1.2 255.255.255.0
Das Interface sucht sich die IPv6-Adresse selbst anhand der Router-Advertisements des Linux-Routers. Die IPv4-Adresse könnte auch weggelassen werden, dann wäre der Router jedoch nur über IPv6 ansprechbar. RIPng wird zusätzlich noch aktiviert.
Auf dem zweiten Interface wird ebenfalls RIPng aktiviert, zusätzlich wird auch das Router-Advertising eingeschaltet.
R5(config)#int f0/1 R5(config-if)#ipv6 enable R5(config-if)#ipv6 address 3FFE:BC0:593:2::/64 eui-64 R5(config-if)#ipv6 nd ra-interval 60 R5(config-if)#ipv6 nd prefix 3FFE:BC0:593:2::/64 R5(config-if)#ipv6 rip ripng enable
Die benutzte Konfiguration kann Anhang C.2.8 entnommen werden.
Die IPv6-Konfiguration läuft über Stateless Autoconfiguration automatisch ab, die IPv4-Adressen werden im Subnetz A manuell vergeben. Zusätzlich muss auf diesen Hosts der Nameserver 10.0.1.3 eingetragen werden. Auf dem Linux-PC im Subnetz B muss ein per IPv6 erreichbarer DNS-Server eingetragen werden, eine Liste von frei zugänglichen IPv6-fähigen Nameservern findet sich bei fpsn.net.
Um die Anbindung zu testen, kann in einem ersten Schritt versucht werden, mit ping6 und traceroute6 einen IPv6-Host zu erreichen, z. B. www.kame.net. Es zeigt sich so auch sofort, ob die Namensauflösung korrekt arbeitet.
# ping6 -n www.kame.net PING www.kame.net(2001:200:0:8002:203:47ff:fea5:3085) from 3ffe:bc0:8000::1595 : 56 data bytes 64 bytes from 2001:200:0:8002:203:47ff:fea5:3085: icmp_seq=1 ttl=55 time=401 ms 64 bytes from 2001:200:0:8002:203:47ff:fea5:3085: icmp_seq=2 ttl=55 time=400 ms 64 bytes from 2001:200:0:8002:203:47ff:fea5:3085: icmp_seq=3 ttl=55 time=394 ms 64 bytes from 2001:200:0:8002:203:47ff:fea5:3085: icmp_seq=4 ttl=55 time=395 ms 64 bytes from 2001:200:0:8002:203:47ff:fea5:3085: icmp_seq=5 ttl=55 time=394 ms 64 bytes from 2001:200:0:8002:203:47ff:fea5:3085: icmp_seq=6 ttl=55 time=393 ms --- www.kame.net ping statistics --- 6 packets transmitted, 6 received, 0% loss, time 5051ms rtt min/avg/max/mdev = 393.198/396.426/401.348/3.156 ms
Hat dies funktioniert, so kann mit einem IPv6-fähigen Browser (z. B. Mozilla) auf einen IPv6-Webserver zugegriffen werden, z. B. http://ipv6.cyberlink.ch/.
Die Erreichbarkeit von aussen kann über Online-Testtools getestet werden, die auf verschiedenen Webseiten angeboten werden (z. B. bei Join, vgl. Abb. 11.2).
Falls die Verbindung nicht zustande kommt, sollte zuerst sichergestellt werden, dass das IP-Protokoll 41 (6-over-4, 0x29 Hex) auf keiner Firewall und keinen Routern gefiltert oder blockiert wird.