Stateful IPv6 autoconfiguration mit Windows Server 2008 R2 DHCP

​IPv6 Adressverteilung mit Windows Server 2008 R2 ist schon etwas tricky… Deshalb gibt’s hier die Anleitung, was in einem reinem Windows-Netzwerk, basierend auf Windows 7 und Windows Server 2008 R2, zu beachten ist.
Die Grundlagen zu IPv6 setze ich jetzt einfach mal voraus.

IPv6 Subnetz – Was ist das Richtige für mich?

Nachdem die ganze öffentliche Vergabe von IPv6 Adressen noch sehr schleppend ist, lohnt der Aufbau vorher eigentlich nicht. Die Telekom will bis Ende 2011 auch Endanwendern IPv6 anbieten. Wer aber schon gewappnet sein will, wenn’s dann doch soweit ist, kann sich schon mal mit dem Thema vertraut machen.
Es gibt einen Standard-IPv6-Bereich, der vergleichbar mit dem private Class A / B / C Netzen von IPv4 ist, eine sog. Site local address. Übrigens, die Link local address (fe80::/64) ist mit der 169.254.0.0/16 bei IPv4 vergleichbar. Wenn man also noch keine offizielle, von der IETF oder dem ISP zugewiesene IPv6 hat, sollte auch nicht auf die Idee kommen irgendeine zu verwenden. Das macht früher oder später nur Probleme und man muss erneut umstellen. Folgende Site local Adresse ist frei verfügbar:

Site local: fec0::
Subnetz prefix length: 64

Gleiches Netz, andere Schreibweise:
Address prefix: fec0::/64
Man könnte auch ein anderes Subnetz innerhalb von fec0 verwenden, allerdings bevorzuge ich kurze Schreibweisen. Beispiel für ein Subnetz wäre: fec0:0:0:1::
Die Übersicht über alle Adressen gibt’s hier: http://www.iana.org/assignments/ipv6-address-space/ipv6-address-space.xml

Testumgebung

Server A:
Windows 2008 R2
AD, DNS
IPv6: fec0::3
Server B:
Windows 2008 R2
DHCP
IPv6: fec0::2
Client:
Windows 7
IPv6: DHCP (z.B. fec0::aaaa)
In dieser Umgebung gibt es keinen IPv6 fähigen Router und damit auch kein Gerät was per Router Discovery gefunden wird.

Statische IPv6 vergeben

Nachdem IPv6 mittlerweile standardmäßig aktiv ist, muss man in den Protokolleigenschaften lediglich eine statische IP-Adresse eintragen, hier am Server B:
image
Server A erhält die IP fec0::3.
Über ping -6 fec0::3 kann man die IPv6 Konnektivität von A nach B überprüfen (wenn ich den Parameter -6 nicht angebe, versucht Windows es zuerst über IPv6. Mit dem Parameter erzwingt man das Ganze):
image

Konfiguration DHCP-Server

Während der Installation der DHCP-Server Rolle, wird man gefragt, ob man den DHCP im Stateless oder Stateful Modus betreiben möchte, für diesen Verwendungszweck ist Stateful die richtige Wahl.
DHCP-Bereich: fec0:: /64
Ausnahmen:

  • fec0::ffff bis fec0::ffff:ffff:ffff:ffff (ich möchte dass meine Clients möglichst kurze Adressen bekommen, und 65.000 IP’s reichen mir)
  • fec0::1 bis fec0::20 (meine statischen IPv6 Adressen sind im Bereich 1-20, deshalb soll dieser nicht per DHCP vergeben werden)

Server Options:

  • 00023 DNS Recursive Name Server IPv6 Addresss: fec0::3

Wenn ich jetzt am Client meine IPv6 Adresse per ipconfig /renew6 erneuere, bekomme ich z.B. fec0::aaaa
Starte ich einen ping vom Client zum Server (ping -6 fec0::3) kann es passieren, dass ich nur PING: transmit failed. General failure. Bekomme. Als nächstes sollte man den ping über link local Adresse (fe80::/64) versuchen, das sollte klappen. In diesem Fall hilft der nächste Schritt.

Zusätzliche Konfiguration am DHCP-Server

An dieser Stelle scheitert man ganz gerne. IPv6 ist auf das sog. Router Advertisement angewiesen, damit ein Routing im Netzwerk möglich ist. Nun steht uns aber kein IPv6 fähiger Router zur Verfügung, d.h. der DHCP-Server soll diese Aufgabe übernehmen. Dazu sind ein paar Kniffe über netsh notwendig. Ohne das Router Advertisement bekommt der Client auch keine Route ins eigene Netz zugewiesen. Über den folgenden Befehl kann man sich die Routen anzeigen lassen:
netsh int ipv6 show route
Hier fehlt fec0:: – unser neues Netz.
Damit es als Route hinzugefügt wird, muss man am DHCP-Server folgendes konfigurieren:

  1. Auf der Netzwerkkarte Advertise=enabled setzen
  2. Für die entsprechende Route, also fec0::, die Eigenschaft publish=enabled setzen

Schritt 1:
Man muss die ID der betroffenen Netzwerkkarte herausfinden: netsh int ipv6 show int
Anschließend muss Advertise=enabled gesetzt werden: netsh int ipv6 set int <ID> advertise=enabled   // optional noch: rou=en (das sollte schon enabled sein)
Schritt 2:
Anschließend die Route hinzufügen: netsh int ipv6 add route fec0::/64 publish=enabled
Falls es die schon gibt, kann man die Eigenschaft publish wie folgt ändern: netsh int ipv6 set route fec0::/64 publish=enabled
Update, mit einem Service Pack hat sich scheinbar der Syntax geändert, z.B.: netsh int ipv6 set route fec0::/64 „LAN“ publish=yes
image
Anschließend sollte ein ping vom Client zu Server A & B möglich sein. Alle weiteren IPv6 fähigen Clients können dann ohne zusätzliche Konfiguration über IPv6 kommunizieren.

Troubleshooting Tools

Wertvolle Helfer auf der Kommandozeile, die speziell auf IPv6 losgehen:

  • ping –6 <hostname>
  • tracert –6 <hostname>
  • ipconfig /release6
  • ipconfig /renew6
  • netsh int ipv6 show int
  • netsh int ipv6 show int <ID>
  • netsh int ipv6 show route
Teilen

Autor: Dennis Hobmaier

Dennis Hobmaier ist Solution Designer bei Kapsch BusinessCom AG. Er hat über 15 Jahre Erfahrung in IT-Enterprise Umgebung aller Größenordnungen und bedient Kunden aus den unterschiedlichsten Branchen. Als MCSE SharePoint hat er tiefgreifende Kenntnisse in den Bereichen Microsoft Active Directory, Windows, SharePoint und Office 365. Gerne teilt er seine Projekterfahrung mit Ihnen.

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahren Sie mehr darüber, wie Ihre Kommentardaten verarbeitet werden .