2. Část projektu
Představme si následující situaci:
Protože routery defaultně zahazují broadcasty, boot-up broadcast poslaný dhcp klientem na síti 192.168.1.0 se nedostane až k dhcp serveru a klient tedy nezíská IP adresu.
Proto se router musí nakonfigurovat tak aby propouštěl dhcp broadcasty. K tomu slouží příkaz :
ip helper-address Adresa Dhcp serveru
Tento příkaz se zadává v konfiguračním módu rozhraní routeru, od kterého se předpokládá, že bude přijímat dhcp broadcasty.
V našem případě na eth0 192.168.1.1 zadáme příkaz ip helper-address 192.168.2.254.
Díky tomuto příkazu nebude router forwardovat všechny broadcasty, pouze následujících 8 UDP potů:
|
Tímto bude router forwardovat všechny broadcasty tohoto typu. Ale mi jsme chtěli jen port 67.
K tomu slouží příkaz :
no ip forward-protocol číslo portu.
Pozn.:
Obecně se pomocí příkazu ip forward-protocol číslo portu nastavuje - které typy broadcastů (ze kterého portu) nebude server zahazovat.
Tedy v globálním konfiguračním módu musíme ještě zadat :
no ip
forward-protocol udp 37
no ip forward-protocol udp 49
no ip
forward-protocol udp 53
no ip
forward-protocol udp 68
no ip forward-protocol udp 69
no ip
forward-protocol udp 137
no ip forward-protocol udp 138
Jak to funguje?
Tedy když na rozhraní routeru eth1 dostane broadcast typu dhcp, router změní beoadcast v unicast, doplní v paketu v poli gateway ip address adresu rozhraní, na které to přišlo a pak to pošle na danou adresu serveru 198.162.2.254. Adresa v poli gateway ip address bude pak sloužit jako gateway pro dhcp klienta. Server jakmile přijme paket, najde pool adres, který má gateway nastaven na danou gateway ip address. Přidělí adresu z poolu a pošle to zpět na router a ten to přepošle přímo k dhcp klientovi.
Ukázka komunikace DHCP klient vs DHCP server
Ukázka komunikace DHCP server vs DHCP client
Ukázka dotazů běžících mezi 1. clientem a routerem , 2. routerem a serverem. Server IP 192.168.1.2,
Rozhraní Router-Client IP 192.168.2.1 , Nová IP adressa clienta 192.168.2.3.
Client vs Router:
Router Server:
DHCP klient vygeneruje zprávu typu DHCP discover s daným transaction ID, což je broadceast,kde jako IP adresa zdroje je 0.0.0.0.Když Router zachytí broadcast typu DHCP discover, přeposílá ho jako unicast na daný DHCP server. Ten doplní Dhcp konfiguraci ve zprávě typu DHCP offer. Router pak podle této konfigurace v poli client IP address pozná jak změnit IP adresu cíle, v tomto případě na 192.168.2.3. Pokud client objeví paket typu DHCP offer se stejným transaction ID s jakým vygeneroval transaction ID u svého DHCP discover, vygeneruje zprávu typu DHCP request (opět broadcast, kde IP zdroje je 0.0.0.0), s jiným transaction ID a s již vyplněnou Dhcp konfigurací. Router pokud zachytí broadcast typu DHCP request, opět mění na unicast, přeposílá na daný DHCP server, který pošle potvrzení DHCP ack. To pak router pošle klientovi už na danou IP adresu a client podle transaction ID rozezná, komu to patří, čímž získá novou ip adresu.
Na obrázcích jsou zachyceny pakety generování zpráv, kde v prvních dvou klient nezachytil zprávu typu dhcp offer, proto vygeneroval nové transaction id a nový dhcp discover.
Tato situaca byla realizována v cisco labolatoři, a programem ethereal odchycena, proto přidávám ještě soubory se zachycením paketů uložené z programu ethereal.