Mamy sale szkoleniowe, w których normalnie zainstalowany jest system Windows XP (przez PXE). „Normalna” infrastruktura DNS / DHCP to serwery Windows. Pokój szkoleniowy ma swoją własną sieć VLAN (inną niż serwery Windows), więc najbardziej prawdopodobne jest, że pomocnik IP dla żądań DHCP jest aktywny na routerze Cisco, do którego podłączone są wszystkie komputery z tego pokoju.
Teraz chcieliśmy przekonwertować niektóre komputery PC na system Linux. Pomysł był następujący: umieść własnego laptopa z serwerem DHCP w sieci VLAN pokoju i zastąp „normalną” odpowiedź DHCP. Pomysł polegał na tym, że powinno to działać, ponieważ bezpośrednio podłączony serwer DHCP w tej sieci VLAN powinien mieć szybszy czas odpowiedzi niż „normalny” serwer DHCP znajdujący się w pewnej odległości od tej sieci VLAN.
Okazało się, że to nie zadziałało. Aby działało, musieliśmy ręcznie zwolnić dzierżawę oryginalnego serwera DHCP.
Na laptopie widzieliśmy klienta żądającego adresu IP i „nasz” dhcp wysyłał NACK do żądania IP systemu Windows, zanim zaoferowaliśmy własną odpowiedź.
Stare pytanie: Dlaczego to nie zadziałało zgodnie z oczekiwaniami? Co sprawia, że komputer odzyskuje dawną dzierżawę?
Aktualizacja 2012-08-08:
Problem odzyskiwania został wyjaśniony w DHCP-RFC. To wyjaśnia, dlaczego komputer odzyskuje dawną dzierżawę.
Teraz zwalniamy adres IP z serwera Windows-DHCP przed kolejną próbą.
Znowu - wygrywa serwer Windows-DHCP.
Podejrzewam, że istnieje jakiś algorytm dla klienta dhcp, który określa „najlepszą” odpowiedź dhcp dla klienta. Nowe pytanie brzmi:
Jak klient wybiera „najlepszą” odpowiedź?
źródło
Odpowiedzi:
To, jak klient reaguje na wiele odpowiedzi DHCP, zależy od dostawcy, nawet oprogramowania układowego.
Warianty, które widziałem przez lata to:
1) Zaakceptuj pierwszy, niezależnie od tego, czy jest to ACK czy NACK.
2) Weź pierwszą ACK, całkowicie zignoruj NACK.
3) Weź ostatnie otrzymane potwierdzenie ACK w ustalonym przedziale czasu (zwykle 5–10 sekund).
Przykład: kilka lat temu mieliśmy problemy z urządzeniami wielofunkcyjnymi Ricoh.
Mieliśmy 2 serwery DHCP. Jeden podał adresy, drugi tylko dodatkowe opcje DHCP. Drugi serwer zawsze odpowiedział jako pierwszy.
Używany wariant Ricoh 1), nawet jeśli pierwsza oferta zawierała tylko opcje DHCP. Ricoh zmienił go na wariant 2) z aktualizacją oprogramowania układowego po tym, jak im wyjaśniliśmy problem.
źródło
OFFER
pakietach decyduje system kliencki.ACK
aNACK
pakiety są wysyłane tylko w odpowiedzi na aREQUEST
, które pojawia się dopiero po tym, jak klient „zdecyduje”, którą ofertę wybrać. To całkiem fajny błąd w drukarkach!Zakładając, że router nadal działa jako przekaźnik DHCP i przekazuje żądanie do oryginalnego serwera, powodem tego jest po prostu dlatego, że serwer DHCP systemu Windows powiedział mu, aby poszedł naprzód i używał adresu IP. W tym przypadku DHCPNACK z nowego serwera jest nieistotny, ponieważ klient DHCP rozważy wszystkie odpowiedzi, a ponieważ otrzymał ofertę z Windows DHCP DHCP, jest bardzo zadowolony z jego użycia.
źródło
Jeśli nic innego nie pomoże - RTFM (przeczytaj dokładną instrukcję). W tym przypadku pierwszy był hitem.
RFC 2131 opisuje operacje DHCP.
Sekcja 1.6 stanowi, że DHCP musi :
Ciekawym pytaniem jest, w jaki sposób cel ten osiąga się u klienta, który nie ma wiedzy o swojej przeszłości. Rozdział 3.2 przedstawia:
Tak więc serwer DHCP posiadający aktywną dzierżawę uzyskuje pierwszeństwo poprzez użycie skrótu w protokole.
Odtąd Laptop-DHCP-Server jest ignorowany przez Klienta.
Tak więc rozwiązaniem w naszym przypadku będzie prawdopodobnie (zaktualizuję to, kiedy faktycznie to przetestujemy):
źródło
Nowe pytanie powinno prawdopodobnie dotyczyć innego pytania - tytuł pytania w ogóle nie pasuje do większości treści pytania.
W każdym razie, w odniesieniu do tego, jak klient wybiera, z którą ofertą pójść, w przypadku, gdy nie ma bieżącej dzierżawy: to zależy od klienta, ale w każdej implementacji klienta DHCP, o której wiem, jest to prosty wyścig .
RFC 2131 obejmuje to:
Istnieje szkic IETF , który wydaje się martwy, który dodałby konfigurowalność do procesu selekcji, a także wspomina o słabych implementacjach klienta (ponad dziesięć lat temu, ale niewiele się zmieniło):
Posiadanie dwóch serwerów DHCP obsługujących tę samą sieć z inną konfiguracją powoduje tylko wyścigi, co nie jest pożądane z punktu widzenia niezawodności lub przewidywalności. Naprawdę nie ma powodu, dla którego nie można uzyskać jednego serwera DHCP zapewniającego to, czego potrzebujesz.
źródło