Wyobraź sobie, że mamy sieć jak na zdjęciu. Sześć hostów w sieci z jedną warstwą 2, bez sieci VLAN. Sieć powinna być podzielona na dwie podsieci, każda z jednym serwerem DHCP. Serwery DHCP mają ustalone adresy IP, więc oczywiście wiedzą, do której podsieci należą.
Następnie podłączają się nowi klienci. Nie wiedzą nic o podsieci, w której powinni być, i wysyłają DHCPDISCOVER do transmisji Ethernet 255.255.255.255, więc trafia ona na oba serwery DHCP. Oba serwery odpowiadają ofertą. Oto moje pytanie: Skąd klient wie, który DHCPOFFER powinien zaakceptować?
networking
dhcp
Michael Niemand
źródło
źródło
Odpowiedzi:
Najprostsza odpowiedź - kto pierwszy, ten lepszy.
Jeśli masz wiele sieci VLAN, a 10.10.10.0/24 jest na innej sieci VLAN niż 10.10.20.0/24 - transmisja nie przekroczy sieci VLAN.
Jeśli serwer DHCP byłby w osobnej sieci VLAN dla klientów, iphelper na interfejsie routingu między sieciami VLAN skierowałby emisję do właściwej lokalizacji.
W twoim scenariuszu, w którym masz 2 oddzielne sieci w ramach tej samej sieci VLAN (lub jej brak) obsługujących różne podsieci - to wyścig.
DHCP Służy przy użyciu następujących transakcji:
Wszystko to dzieje się na portach UDP 67 dla serwera i 68 dla klienta.
Jak tylko krok 2 zostanie osiągnięty - klient przestanie „nasłuchiwać” odpowiedzi innych serwerów DHCP - z przyjemnością poradzi sobie z pierwszym serwerem, aby zwrócić na niego uwagę.
Na marginesie - w rzeczywistości istnieje dobrze znana seria ataków DoS (Denial of Service), które naruszają to prawo. Atakujący podłącza urządzenie, które odpowiada i wysyła pakiety DHCPOFFER, a następnie nie wysyła DHCPACK, gdy jest o to poproszony ... w kółko. Istnieje również inny atak DoS, w którym „fałszywe” serwery DHCP oferują adresy, których nie można routować lub które powodują konflikt z innymi adresami IP, których węszy do sieci.
źródło
Istniejący odpowiedź od @ Fazer87 jest zasadniczo poprawna w praktyce i polecam upvoting i przyjmując ją. Ta odpowiedź nieco dokładniej analizuje drobny szczegół.
Oba serwery DHCP mogą odpowiedzieć komunikatem DHCPOffer.
Klient DHCP może je akceptować na zasadzie „kto pierwszy, ten lepszy”. Takie podejście nie jest jednak wymagane.
RFC2131 określa:
Tak więc, jeśli drugi serwer DHCP zaoferował dłuższą rezerwację adresu IP lub zaoferował serwer czasu, w którym drugi nie, lub może miał niestandardowe pole, które klient zaprogramował tak, aby mógł preferować, może zaakceptować drugą ofertę.
Zazwyczaj podejście „kto pierwszy, ten lepszy” zapewni ci ofertę, która nie była przeprowadzana przez kilka przeskoków na różnych urządzeniach (reemisje BOOTP), więc jest to dobry protokół do zastosowania, jeśli nie masz powodu, aby się tym przejmować.
Byłem przy jednym projekcie, w którym niestandardowe urządzenie wolałoby DHCPOffer, który zawierałby serwer TFTP, na którym można było znaleźć zaktualizowane oprogramowanie.
źródło