Spiele mit DirectAccess
Über DirectAccess hatte ich schon einiges erzählt, und natürlich auch ausprobiert. Was ich aber noch nie angesehen habe, war DirectAccess ohne IPv6 im inneren oder äußeren Netz, also total legacy. In der Schulung habe ich die Gelegenheit dazu und möchte die Ergebnisse nicht vorenthalten.
IPv4 only Lab
Nachdem der DirectAccess Client in die weite Welt verschwunden ist, und er voller Verzweiflung nach Hause telefoniert hat, bietet sich folgendes Bild.
C:\> ipconfig Ethernet adapter Ethernet 2: Connection-specific DNS Suffix . : Link-local IPv6 Address . . . . . : fe80::a19f:cc85:1320:8c4%5 IPv4 Address. . . . . . . . . . . : 131.107.0.2 Subnet Mask . . . . . . . . . . . : 255.255.0.0 Default Gateway . . . . . . . . . : Tunnel adapter iphttpsinterface: Connection-specific DNS Suffix . : IPv6 Address. . . . . . . . . . . : 2002:836b:c8:1000:1934:30a2:9e84:cdf4 Temporary IPv6 Address. . . . . . : 2002:836b:c8:1000:f037:3b8d:cabc:bfcb Link-local IPv6 Address . . . . . : fe80::1934:30a2:9e84:cdf4%24 Default Gateway . . . . . . . . . :
Es gibt also ein Interface im Internet mit öffentlichen Adressen ohne IPv6 Versorgung. Und dann gibt es den Tunnel nach Hause. Da sowohl Client als auch der DirectAccess Server öffentliche IPs haben, wurde der Tunnel mit 6to4-Adressen aufgebaut.
In den Schulungsunterlagen steht Notice the IP address for Tunnel Adapter is IPHTTPSInterface starting with 2002. This is an IP-HTTPS address. (Fehler sind so übernommen)
Nein, Microsoft! Es ist eine 6to4 Adresse. Offenbar habt Ihr wirklich keine praktische Erfahrungen mit IPv6.
Die zugehörige Routingtabelle zeigt:
c:\> route print -6 =========================================================================== Interface List 5...00 15 5d 64 4d 4d ......Microsoft Hyper-V Network Adapter #2 1...........................Software Loopback Interface 1 24...00 00 00 00 00 00 00 e0 iphttpsinterface =========================================================================== IPv6 Route Table =========================================================================== Active Routes: If Metric Network Destination Gateway 1 331 ::1/128 On-link 24 4171 2002::/16 fe80::d92f:34d4:3add:e715 24 331 2002:836b:c8::/48 fe80::d92f:34d4:3add:e715 24 331 2002:836b:c8::/64 fe80::d92f:34d4:3add:e715 24 331 2002:836b:c8:1::/64 fe80::d92f:34d4:3add:e715 24 331 2002:836b:c8:5::/64 fe80::d92f:34d4:3add:e715 24 331 2002:836b:c8:1000::/64 On-link 24 331 2002:836b:c8:1000:1934:30a2:9e84:cdf4/128 On-link 24 331 2002:836b:c8:1000:f037:3b8d:cabc:bfcb/128 On-link 24 331 fd68:d6bf:56b6:7777::/96 fe80::d92f:34d4:3add:e715 5 271 fe80::/64 On-link 24 331 fe80::/64 On-link 24 331 fe80::1934:30a2:9e84:cdf4/128 On-link 5 271 fe80::a19f:cc85:1320:8c4/128 On-link 1 331 ff00::/8 On-link 5 271 ff00::/8 On-link 24 331 ff00::/8 On-link =========================================================================== Persistent Routes: None
Das Routingziel ist eine Link-Local-Adresse, wie es sich für IPv6 gehört. Prima! Und die Adresse ist auch über den Tunnel erreichbar.
C:\>netsh int ipv6 sho nei 24 Internet Address Physical Address Type -------------------------------------------- ----------------- ----------- 2002:836b:c8:1000:d92f:34d4:3add:e715 Reachable (Router) fe80::d92f:34d4:3add:e715 Reachable (Router)
Spielt man nun mit Browser und Explorer im Netz rum, gibt es offene Verbindungen:
C:\> netstat -n Active Connections Proto Local Address Foreign Address State TCP 131.107.0.2:49782 131.107.0.200:443 ESTABLISHED TCP [2002:836b:c8:1000:f037:3b8d:cabc:bfcb]:49785 [fd68:d6bf:56b6:7777::ac10:c8]:80 ESTABLISHED TCP [2002:836b:c8:1000:f037:3b8d:cabc:bfcb]:61893 [fd68:d6bf:56b6:7777::ac10:b]:80 ESTABLISHED
Die Verbindungen sind also offenbar über IPv6 zu einem ULA-Ziel (bäh!).
Das DirectAccess-Gateway macht noch NAT64, bettet also die IPv4 Adressen der LAN-Geräte ins IPv6 ein. Sieht man deutlich.
Dazu muss das Gateway offenbar auch DNS64 machen, um die DNS Antworten umzubiegen. Das sieht man leicht:
c:\>ipconfig /displaydns Windows IP Configuration directaccess-webprobehost.adatum.com ---------------------------------------- Record Name . . . . . : directaccess-WebProbeHost.Adatum.com Record Type . . . . . : 28 Time To Live . . . . : 213 Data Length . . . . . : 16 Section . . . . . . . : Answer AAAA Record . . . . . : fd68:d6bf:56b6:7777::ac10:c8
Aber warum macht der Client das? Der hat doch einen ganz anderen DNS Server?
C:\>netsh name show eff DNS Effective Name Resolution Policy Table Settings Settings for .Adatum.com ---------------------------------------------------------------------- DirectAccess (Certification Authority) : DirectAccess (IPsec) : disabled DirectAccess (DNS Servers) : 2002:836b:c8:3333::1 DirectAccess (Proxy Settings) : Bypass Proxy Settings for DirectAccess-NLS.Adatum.com ---------------------------------------------------------------------- DirectAccess (Certification Authority) : DirectAccess (IPsec) : disabled DirectAccess (DNS Servers) : DirectAccess (Proxy Settings) : Use default browser settings
Der Client hat also eine Policy für die Namensauflösung, die bei bestimmten Domains einen anderen DNS Server befragt. Genau, das Gateway.
C:\> ping lon-svr1.adatum.com Pinging lon-svr1.adatum.com [fd68:d6bf:56b6:7777::ac10:b] with 32 bytes of data: Reply from fd68:d6bf:56b6:7777::ac10:b: time=4ms Reply from fd68:d6bf:56b6:7777::ac10:b: time=10ms Reply from fd68:d6bf:56b6:7777::ac10:b: time=1ms Ping statistics for fd68:d6bf:56b6:7777::ac10:b: Packets: Sent = 3, Received = 3, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 1ms, Maximum = 10ms, Average = 5ms
Allerdings funktioniert das nur, wenn diese Policy Regeln auch von der Applikation berücksichtigt werden:
C:\> nslookup lon-svr1.adatum.com Server: UnKnown Address: 131.107.0.100 DNS request timed out. timeout was 2 seconds. *** Request to UnKnown timed-out
Fragt man den richtigen Server, gibt es ganz andere Antworten:
C:\> nslookup lon-svr1.adatum.com 2002:836b:c8:3333::1 Server: UnKnown Address: 2002:836b:c8:3333::1 Non-authoritative answer: Name: lon-svr1.adatum.com Addresses: fd68:d6bf:56b6:7777::ac10:b 172.16.0.11
All das ist mir all die Jahre verborgen geblieben, weil ich IPv6 ausgerollt hatte.
Ich vermisse nichts.
Was IPv6 ändert
Wird auf dem Außeninterface natives IPv6 eingesetzt, verschwinden sofort die 2002-er 6to4 Adressen. Dazu ist anzumerken:
- Das im Lab die Kommunikation geklappt hatte, liegt daran, dass Microsoft das 2002:836b:c8:1000::/64 auf dem Interface betreibt.
- Um mit 6to4 Adressen zu kommunizieren, muss man sich auf externe 6to4 Gateways verlassen. Dies kommt ins Spiel, weil der DNS Server 2002:836b:c8:3333::1 angesprochen wird.
- Da beide Hosts über den IPv4-HTTPS-Tunnel IPv6 im externen Routing komplett umgehen, benötigen sie keine 6to4 Router im Internet.
- Da beide Server extern öffentliche IPv4 Adressen haben, wird überhaupt 6to4 benutzt. Steht ein Gerät hinter NAT wird es auf Teredo zurück fallen.
- Teredo funktioniert nicht mit allen NAT-Typen, speziell gibt es Probleme, wenn die öffentliche NAT-IP nicht stabil ist (z.B. bei Carrier Grade NAT oder Large Scale NAT)
- Mit RFC 6540 ist IPv6 auf den Außeninterfaces Pflicht für die ISPs.
Wird IPv6 im LAN eingesetzt, verschwindet sofort das fc00::/7 ULA Netz. Stattdessen bekommen die Clients die gleiche IP, wie sie auch im LAN hätten. Das hat folgende Implikationen:
- Der Client ist intern, wie extern unter der gleichen IP ansprechbar.
- Die Fernwartung wird damit im Unternehmen unabhängig vom Aufenthaltsort des Clients.
- Da Server und Clients IPv6 einsetzen, entfällt DNS64 und NAT64.
- Applikationen können mit allen benötigten Ports Verbindungen in alle benötigten Richtungen ausführen. Es ist nicht notwendig im DirectAccess-Server NAT-Helper pro Protokoll zu haben.
- Auf diese Weise funktionieren Protokolle wie Telefonie, Videokonferenzen, FTP, etc. pp. einfach auch extern.
- Fremdapplikationen, die ihre eigene Namensauflösung fahren, funktionieren problemlos, weil sich nur das Routing zum DNS Server ändert. Es ist nicht länger notwendig, sich Domainabhängig an unterschiedliche DNS Server zu wenden.
Man sollte sich also wirklich überlegen, ob man weiter auf IPv6 verzichten will.