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ź?