ISATAP
Was ist ISATAP?
ISATAP (Intra-Site Automatic Tunnel Addressing Protocol) ist eine von Cisco und Microsoft entwickelte Variante des 6to4-Mechanismus, bei dem ebenfalls ein automatischer Tunnel aufgebaut und die IPv6-Adresse aus der lokalen IPv4-Adresse gebildet wird.
Dennoch gibt es einige fundamentale Unterschiede:
- ISATAP benutzt pro IPv4-Host ein /128 aus dem normalen Unicast-Adressbereich des eigenen Providers, während 6to4 pro IPv4-Host ein /48 aus dem speziell dafür reservierten Bereich 2002::/16 vergibt.
- ISATAP ist ein rein lokales Protokoll zwischen dem Provider und dem Client ("Intra-Site"), während bei 6to4 die Relays global verteilt sein können. Dies bedeutet, dass bei ISATAP die IPv4-Erreichbarkeit des Clients nur vom Relay aus gegeben sein muss, was auch Hosts mit privater IP-Adresse die Benutzung eröffnet.
- ISATAP ist leicher zu debuggen, da alle potentiellen Relays innerhalb einer Administration stehen müssen
- ISATAP benutzt DNS-Anfragen zur Feststellung des Relays (isatap.<domain>), während 6to4 die globale Anycast-Adresse 192.88.99.1 benutzt.
Adressen
ISATAP benutzt zur Generierung der Interface-IP den Algorithmus
:0000:5EFE:<ipv4:addr>
Die IPv4-Adresse muss in Hexadezimalnotation angegeben werden. Ist das ISATAP-Prefix also
2001:4CA0:0:FE00::/64
so ist die ISATAP-Adresse des Clients mit der IP 129.187.48.194
2001:4CA0:0:FE00:0:5EFE:129.187.48.194/128 oder 2001:4CA0:0:FE00:0:5EFE:81BB:30C2/128
Konfiguration Windows
Windows versucht in der Standardkonfiguration, den Hostnamen isatap aufzulösen (unter Nutzung der lokalen DNS-Suchlisten) und zu der dort eingetragenen IP-Adresse einen ISATAP-Tunnel aufzubauen. In den relevanten Standarddomains des Münchner Wissenschaftsnetzes ist dieser Hostname konfiguriert. Sofern sich der Client außerhalb dieser Domains befindet (beispielsweise in einem Lehrstuhlnetz) kann das Relay auch manuell konfiguriert werden. Hierzu muss eine Eingabeaufforderung als Administrator geöffnet und das folgende Kommando eingegeben.
C:\> netsh interface ipv6 isatap set router isatap-relay.lrz.de
Windows richtet beim Booten, sofern kein natives IPv6 auf dem Ethernet verfügbar und die Relay-Adresse entsprechend konfiguriert ist wird automatisch einen passenden ISATAP-Tunnel ein, holt sich mittels Router Advertisement beim Relay das Prefix und konfiguriert die passende Adresse. IPv6 kann dann sofort benutzt werden. Im Gegensatz zu einem von Windows ebenfalls automatisch eingerichteten 6to4-Interface wird ein ISATAP-Tunnel gegenüber IPv4 präferiert.
Konfiguration Linux
Die Unterstützung von ISATAP in Linux wird durch das freie Tool isatapd von Sascha Hlusiak realisiert. Der folgende Aufruf wird für die Benutzer im MWN empfohlen:
isatapd --mtu 1280 isatap-relay.lrz.de
Binärpakete für isatapd sind in den meisten Linux-Distributionen enthalten. Bei Debian und Ubuntu ist es nach der Installation von isatapd (mittels apt-get install isatapd) nur noch nötig, die Variable ISATAP_ROUTERS in der Datei /etc/default/isatapd auf isatap-relay.lrz.de zu setzen.
Auf älteren Kernelversionen und anderen Betriebssystemen kann ISATAP auch durch einen herkömmlichen IPv6-in-IP-Tunnel simuliert werden. Dies erfordert allerdings eine manuelle Konfiguration der Adressierungsparameter. Außerdem ist diese Einrichtungsmethode nicht ganz standardkonform, da damit nicht mit anderen ISATAP-Clients, die das gleiche Relay benutzen, kommuniziert werden kann.
Ein Beispielscript für die Linuxplattform (unter Verwendung von /sbin/ip) lautet wie folgt:
ISATAP_RELAY="10.156.33.6" # isatap-relay.lrz.de
IPV6_PREFIX="2001:4CA0:0:FE00::" # LRZ ISATAP-Prefix
IPV4=$(ip route get ${ISATAP_RELAY} | head -n1 | sed 's/.*src \([0-9\.]\+\).*/\1/')
ip tunnel add isatap mode sit remote ${ISATAP_RELAY} ttl 63
ip link set isatap up
ip -6 addr add ${IPV6_PREFIX}5EFE:${IPV4}/128 dev isatap
ip -6 route add default dev isatap
Konfiguration MacOS X
Die Unterstützung von ISATAP in MacOSX ist derzeit nicht existent. Es existierte eine sehr unvollständige Implementierung mittels Miredo. Die Unterstützung wurde aber in aktuelleren Versionen wieder entfernt. Analog zu Linux kann man ISATAP durch einen manuellen IPv6-in-IPv4 Tunnel konfigurieren.
ISATAP_RELAY="10.156.33.6" # isatap-relay.lrz.de
IPV6_PREFIX="2001:4CA0:0:FE00::" # LRZ ISATAP-Prefix
IPV4=$(ifconfig $(route get ${ISATAP_RELAY} | grep interface | sed -e 's/ interface: //') | egrep '\<inet\>' | awk '{print $2;}')
ifconfig gif0 tunnel ${IPV4} ${ISATAP_RELAY}
ifconfig gif0 inet6 ${IPV6_PREFIX}5EFE:${IPV4} prefixlen /128
route -n add -inet6 default ${IPV6_PREFIX}5EFE:${IPV4}
Hierbei ist leider das Wissen um die IPv4-Adresse des Relays (isatap-relay.lrz.de) und das IPv6-Prefix des ISATAP-Relays vonnöten.