Was ist eigentlich DHCP?
Laut Wikipedia wird das Dynamic Host Configuration Protocol (DHCP) als ein Kommunikationsprotokoll in der Computertechnik beschrieben.
Es ermöglicht die Zuweisung von Netzwerkkonfigurationen, hauptsächlich die IP-Adresse, Subnetzmaske, die Gateway-Adresse und einen oder mehrere DNS-Server, an Clients durch einen DHCP-Server.
DHCP wurde im RFC 2131 definiert und bekam von der Internet Assigned Numbers Authority (IANA) die UDP-Ports 67 und 68 zugewiesen.
Kurz gesagt, bekommt ein Gerät, welches mit einem Netzwerk verbunden wird, eine IP-Adresse und die notwendigen weiteren Daten, um mit anderen Geräten im Netzwerk oder Internet kommunizieren zu können.
Jedes Gerät benötigt dazu eine eigene IP-Adresse, die in diesem Bereich nur einmalig verwendet werden darf.
Somit hat ein DHPC-Service seine Vorteile gegenüber einer manuellen Vergabe dieser Daten an alle Geräte in diesem Netzwerk:
Die doppelt Vergabe der IP-Adresse wird vermieden und die Stations bekommen alle notwendigen Informationen geliefert.
Die Verwendung eines DHCP-Services kann aber auch Sicherheitsbedenken aufrufen:
Zusätzliche DHCP-Server, die irrtümlich oder vorsätzlich in ein Netzwerk hinzugefügt wurden, können zu starken Problemen im Netzwerk führen oder sogar Geräte und Daten umleiten, ohne, dass der Anwender davon etwas mitbekommt.
Aber das soll hier nicht das Thema sein.
Wie erhält nun der Netzwerk-Client seine Informationen, damit er mit anderen Geräten oder Diensten im Netzwerk kommunizieren kann?
Der Client, der an ein Netzwerk angeschlossen wird und eine IP-Adresse benötigt, sendet zunächst einen Broadcast – eine DHCPDISCOVER-Nachricht an alle DHCP-Server, die sie empfangen können
Dabei ist der UDP-Quellport 68 und der UDP-Zielport 67.
Die DHCP-Server antworten mit DHCPOFFER und machen Vorschläge für eine IP-Adresse. Das geschieht entweder mit einem Broadcast an die Adresse 255.255.255.255 mit UDP-Quellport 67 und UDP-Zielport 68 oder mit einem Unicast an die vorgeschlagene IP-Adresse und die MAC-Adresse des Clients.

DHCP Optionen
Neben den bisher erwähnten Informationen können weitere Parameter für die Clients mitgegeben werden.
Es gibt klar definierte Zusatzoptionen, wie zum Beispiel:
Option 1 die Subnetzmaske (Subnetmask) oder
Option 3 der verwendete Router.
Eine komplette Liste hierzu gibt es z.B. bei der IANA (Internet Assigned Number Authority).
Ich konzentriere mich in diesem Artikel auf die Optionen 43 und 60.
Die DHCP Option 43 ist Vendor Specific, also speziell für Hersteller gedacht. Hersteller haben somit die Möglichkeit eigene Werte und Daten von dieser Option zu erhalten. Das ist eine tolle Sache, die aber leider auch einen Haken hat.
Da diese Option allen Herstellern zur Verfügung steht, gibt es zum einen keine klaren Vorgaben oder Definitionen, was in welcher Form eingetragen werden sollte, das kann jeder Hersteller selber verwalten. Zum anderen bereitet es zusätzliche Probleme, wenn sich die Hersteller von DHCP-Server und DHCP-Client unterscheiden, denn auch die Art und Weise, wie ein DHCP-Server die präsentierten Daten übermittelt und der Client diese benötigt, kann variieren (Werte in String, Binary Code oder Hexadezimal).
Die Option 60
Mit optionalen Werten (im String-Format) kann der DHCP-Server nur bestimmten Clients zusätzliche Informationen zusenden. Anstatt die Informationen aus der Option 43 an alle Clients in diesem Subnetz zu senden, kann dies also nur an die Clients verschickt werden, die per Definition (String-Wert aus Option 60) als die passenden erkannt werden.
Der Client sendet in seiner DHCP-Anfrage (DHCP discovery message) seine Client-Informationen mit, die der DHCP-Server abgleichen kann.
Ein Beispiel hierfür wäre ein Cisco Access Point aus eine bestimmten Modellreihe:
Cisco AP C9120AX
Ich kam zu dem Entschluss mich näher mit den DHCP Optionen auseinander zusetzen, da ich, vermutlich wie viele anderen auch, auf das Problem gestoßen bin, dass sich neu hinzugefügte Access Points nicht selbstständig mit dem WLAN Controller verbunden haben.
Herstellerabhängig gibt es unterschiedliche Verfahren, wie ein neuer WLAN AP nach einem möglichen WLC sucht.
Am Beispiel von Cisco gibt es drei Wege einen frisch ausgepackten oder auch zurück gesetzten Access Point dazu zubewegen nach einem WLC zu suchen.
- Der Cisco Access Point bekommt die IP-Adresse des WLAN-Controllers über die DHCP-Option 43 mitgeteilt und kann sich direkt an die übermittelte IP-Adresse wenden.
Das funktioniert meist im gleichen Netzwerk-Segment oder innerhalb eines VLANs am besten (Layer 2).
- Sollte keine Information vom DHCP-Server mitgeschickt werden, versucht der AP den FQDN:
- CISCO-LWAPP-CONTROLLER.localdomain oder
- CISCO-CAPWAP-CONTROLLER.localdomain bei dem DNS-Server aufzulösen, um vom diesem eine passende IP-Adresse zurück zu bekommen. (Meist eher Layer 3, abhängig von der Architektur der Infrastruktur)
- Sollte auch das nicht funktionieren, bleibt nur das manuelle Eintragen des oder der WLC(s) in der Access Point Konfiguration. Das geht per CLI (Command Line Interface) via Console-Anschluss.
In meinem Fall gab die Namesauflösung des DNS-Servers leider keinen passenden Eintrag zurück, das kann an unterschiedlichen Ursachen liegen.
Nicht in jedem Netzwerk hat man die Möglichkeit sich persönlich um solche Server und Dienste zu kümmern. Somit war der DHCP-Server meine erste Wahl.
Jetzt ging es an das Eingemachte. Zum einen musste ich nun herausfinden, in welcher Form der Cisco Access Point (DHCP-Client) die Werte aus der DHCP-Option 43 benötigt und zum anderen, wie der DHCP-Server die Eintragungen umsetzt, damit der Cisco AP diese versteht.
Wie schon erwähnt, gibt es keine einheitlichen Formate oder Umsetzungsprozesse für die Option 43. Ein Windows DHCP-Server wird das anders handhaben, als Hersteller A oder B einer Firewall mit DHCP-Server-Funktion.
Der Aufbau einer DHCP Option 43
Suboption | Anzahl der Folgewerte | Vendor-specific information
| 241 | 04 | 192 | 168 | 1 | 10 |
Der Eine benötigt Einträge in binärer Form aber mit Semikolon getrennt:
241;04;192;168;1;510
Für AireOS Access Points wird eher folgendes verwendet:
WLC IP Adresse 192.168.1.10 – Management IP
DHCP Option 43:
0xf104.c0a8.010a
Der Wert 0xf1 = 241
ein Anderer verwendet Hex-Werte in der Form von:
f1040a01010a
Oder eine Mischform aus beiden:
f1;04;0a;01;01;0a
DHCP-Server eines Cisco-Gerätes:
Internal DHCP pool in Cisco router or switch can use as follows:
ip dhcp pool VLAN20
network 172.168.10.0 255.255.255.0
default-router 172.168.10.1
dns-server 83.68.72.2
option 43 hex f104aca80a02 <= 04-indicates one controller/aca80a02-“controller ip:172.168.10.2 in hexadecimal”
option 60 ascii “Cisco AP c3700”
DHCP-Server-Einträge eines Windows-Servers:


Wenn alles geklappt hat, dann zeigt sich das auch über den Consolen-Zugriff auf dem Cisco Access Point:

Mein Fazit
Alle Einträge in der DHCP-Server Option 43 bleiben undefiniert, da somit alle Möglichkeiten für die Hersteller offen bleiben, was sie dem DHCP-Client zusätzlich mitgeben wollen.
Die unterschiedlichen Umsetzungsverfahren verschiedener Hersteller macht es allerdings kompliziert und man wird es in den Einzelfällen austesten müssen. Selbst bei einem Hersteller kann es sich schon zwischen unterschiedlichen Software-Versionen ändern.
Da Cisco vor einigen Jahren im WLAN-Bereich von dem AireOS auf das IOS XE umgestiegen ist, haben sich auch die Verfahren für Option 43 geändert.
Die Dokumentation der Hersteller ist da der erste Ansatz. Wenn zwei unterschiedliche Hersteller für DHCP-Server und DHCP-Client eingesetzt werden, kann dies den Kommunikationsweg erschweren.
In meinem letzten Fall war es eine Sonicwall als DHCP-Server und Cisco Access Points (IOS XE) als DHCP-Clients.
Folgender Eintrag führte letztendlich zum Erfolg:
241,04,192,168,1,10
Die Dezimalzahl 241 ist der HEX-Wert: F1 oder f1 (0xf1)
Die 04 zeigt an, dass 4 bytes folgen (es folgt die IP-Adresse)
Die IP-Adresse wird in diesem Fall als Dezimalzahl in Kommas getrennt dargestellt
Wenn man mehr als einen WLC angeben möchte, ändert sich der zweite Wert von 04 auf 08 und bei drei Stück auf 12:
241,08,192,168,1,10,192,168,1,11
Wenn man das Grundprinzip hinter den DHCP-Optionen verstanden hat, fällt es einem leichte, die möglichen Varianten zu testen.
Die Hersteller nutzen unterschiedliche Sub-Options:
Cisco = 241
Ubiquiti = 1 oder 3
Extreme = 1
usw. da hilft einem meist die Web-Recherche oder die Hersteller-Angaben weiter.
Quellenangaben:
https://www.iana.org/assignments/bootp-dhcp-parameters/bootp-dhcp-parameters.xhtml#options
https://www.rfc-editor.org/rfc/rfc2132.txt
https://de.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol
Schreibe einen Kommentar