DHCP Failover, Clientverhalten

#2606574
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.
Moderator Persönliche Seite #2606779
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.
#2606796
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.
#2607557
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
#2607570
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.
#2607593
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren