Forum: PC-Programmierung DHCP Failover, Clientverhalten


von Stefan L. (timpi)


Lesenswert?

Hallo,

Im Netz bin ich noch nicht so richtig fündig geworden, aber vielleicht 
kann mir hier einer den richtigen Weg zeigen. Folgende Situation:

* 2 DHCP-Server im failover-Betrieb
* DHCP-Client erhält IP-Konfiguration von DHCP1 (DISCOVER, REQUEST)
* DHCP1 fällt aus (Unicast-REQUESTs werden nicht beantwortet)
* DHCP2 springt ein und bestätigt auf ein Broadcast-DHCPREQUEST des 
Clients die IP-Konfiguration.

Die Frage: An welchen Server muss der Client die nächte 
DHCPREQUEST-Unicast-Message schicken? An DHCP1, weil er derjenige war 
der sich beim ersten DISCOVER gemeldet hat und nun für diesen Client 
'zuständig' ist oder an DHCP2, weil es der Server war, der die 
Konfiguration beim letzten REQUEST vergeben/bestätigt hat?
Gibt es dazu irgendwo eine Spezifikation/Richtlinie oder kann das jeder 
machen wie er will?

timpi.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Grundregel: wenn's nicht im zugehörigen RFC (oder STD) steht, ist
es nicht spezifiziert. ;-)

Ich würde das aber anders angehen: beide Server benutzen die gleiche
öffentlich sichtbare IP-Adresse (u. U. zusätzlich zu einer zweiten,
die jeder für sich hat).  Über einen zweiten Link ("heartbeat")
tauschen sie sich regelmäßig den Systemzustand aus.  Fällt der
heartbeat aus, dann übernimmt derjenige, der den Ausfall des
anderen feststellt, die öffentliche IP-Adresse.  Damit die Clients
die damit im Zusammenhang stehende Änderung der MAC-Adresse
möglichst schnell bemerken, versendet er zusätzlich noch ein
`gratuitous ARP'.

Natürlich sollte der Statusaustausch über den Heartbeat auch und
insbesondere den aktuellen Stand der DHCP-Datenbank beinhalten, damit
der übernehmende Server im Zweifelsfalle exakt im Bilde ist, welche
Leases gerade aktiv an wen vergeben worden sind.

von (prx) A. K. (prx)


Lesenswert?

Ein klassischer Ansatz für redundantes DHCP sind zwei völlig voneinander 
unabhängige gleichzeitig aktive DHCP-Server mit getrennten IP-Ranges, 
also beispielsweise 192.168.177.1-100 und 192.168.177.101-200. Da muss 
nichts synchronisiert werden und Zuständigkeitsstreiteren gibts auch 
nicht.

Das eignet sich natürlich weniger für explizite DHCP-Reservierungen, 
aber für den verbreiteteren Fall austauschbarer Adressen ist das 
ziemlich simpel. In gerouteten Netzen mit zentralem DHCP müssen die 
Router dafür in der Lage sein, mehrere Helper-Adressen einzurichten.

von Stefan L. (timpi)


Lesenswert?

Danke erst einmal.
Die Infrastruktur ist 'gottgegeben', unterzieht sich derzeit einem 
Wandel und dessen Wege sind unergründlich ;-). Und Einfluss habe ich 
nicht darauf.

Ich möchte nur vermeiden, dass die derzeitige Lösung später nochmal 
Probleme bereitet und ich das Ganze anpassen muss.

timpi.

von Peter II (Gast)


Lesenswert?

oder einfach 2 windows-Server, die in einem AD sind, verwenden. Damit 
haben beide Server die gleiche Datenbank weil die dhcp daten mit ins AD 
repliziert werden.

von miks (Gast)


Lesenswert?

Peter II schrieb:
> oder einfach 2 windows-Server, die in einem AD sind, verwenden. Damit
> haben beide Server die gleiche Datenbank weil die dhcp daten mit ins AD
> repliziert werden.

Welche Windows Server Version macht das?
Ich kenne nur DNS AD Integriert.

von Roland P. (pram)


Lesenswert?

> Ein klassischer Ansatz für redundantes DHCP sind zwei völlig voneinander
> unabhängige gleichzeitig aktive DHCP-Server mit getrennten IP-Ranges,
> also beispielsweise 192.168.177.1-100 und 192.168.177.101-200. Da muss
> nichts synchronisiert werden und Zuständigkeitsstreiteren gibts auch
> nicht.

Nach meinem Verständnis ist das eine "dumme Idee":
1. Client sendet Broadcast
2. beide DHCPs antworten
3. Antwort von DHCP1 trifft aber ein paar us eher ein.
4. Client bekommt die IP 192.168.177.1
nach ein paar Minuten versucht er die Lease zu erneurn, diesmal kommt 
die Antwort von DHCP2 erster an. Client wechselt die IP auf 
192.168.177.101

Oder hab ich da wo einen Denkfehler?

Gruß
Roland

von (prx) A. K. (prx)


Lesenswert?

Roland Praml schrieb:

> nach ein paar Minuten versucht er die Lease zu erneurn,
> die Antwort von DHCP2 erster an. Client wechselt die IP auf
> 192.168.177.101

Nein, denn diese Wiederauffrischung ist kein Broadcast, sondern wird an 
den DHCP-Server adressiert, der die Adresse vergeben hatte. So lange der 
darauf reagiert gibt es keine neue Adresse.

Eine neue Adresse gibt es erst, wenn dieser Server mit Ablauf der 
Gültigkeit nicht erreicht werden konnte. Und das ist dann ja auch der 
Sinn der Sache.

NB: Diese Prozedur ist bereits in der Thread-Frage selbst beschrieben.

von (prx) A. K. (prx)


Lesenswert?

Stefan L. schrieb:

> Die Frage: An welchen Server muss der Client die nächte
> DHCPREQUEST-Unicast-Message schicken?

Die englische Wikipedia erwähnt dieses Thema (rebinding) und verweist 
ansonsten auf: https://tools.ietf.org/html/draft-ietf-dhc-failover-12

von Stefan L. (timpi)


Lesenswert?

A. K. schrieb:
> Roland Praml schrieb:
>
>> nach ein paar Minuten versucht er die Lease zu erneurn,
>> die Antwort von DHCP2 erster an. Client wechselt die IP auf
>> 192.168.177.101
>
> Nein, denn diese Wiederauffrischung ist kein Broadcast, sondern wird an
> den DHCP-Server adressiert, der die Adresse vergeben hatte. So lange der
> darauf reagiert gibt es keine neue Adresse.
>

Naja, nicht ganz. Die ersten REQUESTs (nach ½ lease time) sind Unicasts 
an den bekannten DHCP-Server. Antwortet der nicht, so werden (nach 87,5% 
lease-time) Broadcast-REQUESTs geschickt und in meinem Fall antwortet 
der zweite Server (der eine Kopie der leases des ersten Servers besitzt) 
darauf mit den passenden Parametern.

Werden unabhängige IP-Bereiche benutzt, dann erhält der Client bei 
seinem Broadcast vom zweiten Server ein DHCPNAK, fällt zurück in den 
INIT-Status (Dekonfigurieren des Interfaces) und der komplette 
DHCP-Prozess beginnt von vorn.
Sämtliche Dienste, die auf diesem Interface arbeiten (bzw, die IP des 
Interfaces zum Arbeiten benötigen), müssten beendet und nach 
Adressvergabe neu gestartet werden.


> Die englische Wikipedia erwähnt dieses Thema (rebinding) und verweist
> ansonsten auf: https://tools.ietf.org/html/draft-ietf-dhc-failover-12

Die RFC2131 ist da schon recht ausführlich, nur in diesem einen Punkt 
nicht. Und in der erwähnten Draft habe ich nichts über das 
Client-Verhalten in diesem Fall gefunden. Die bezieht sich mehr auf die 
Kommunikation zwischen den DHCP-Servern.

timpi.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.