DHCPd: Porovnání verzí

Z HKfree wiki
Skočit na navigaci Skočit na vyhledávání
Řádek 19: Řádek 19:
  
 
===== Jednotlivé hlavičky DHCP paketu =====
 
===== Jednotlivé hlavičky DHCP paketu =====
(pořadí odpovídá řazení v samotném paketu, čísla na začátku udavají roysah hlavičky v bitech)
+
(pořadí odpovídá řazení v samotném paketu, čísla na začátku udavají rozsah hlavičky v bitech)
  
 
0 - 7  op (operační kód zprávy); převzata z protokolu BOOTP, pakety klienta mají hodnotu 1 (BOOTREQUEST), odpovědi serveru 2 (BOOTREPLY)
 
0 - 7  op (operační kód zprávy); převzata z protokolu BOOTP, pakety klienta mají hodnotu 1 (BOOTREQUEST), odpovědi serveru 2 (BOOTREPLY)

Verze z 18. 2. 2008, 20:08

DHCP server

Naškrábal: Bongo


Úvod


Protokol DHCP (Dynamic Host Configuration Protocol) automatizuje konfiguraci síťových rozhranní, nových i těch existujících. Tento článek bude pojednávat o DHCP serveru od ISC (Internet Systems Consortium). Snad všechny linuxové distribuce obsahují balíček s tímto serverem, pokud ne, lze si stáhnout zdrojové kódy a přeložit si jej. Překlad ze zdrojových kódů či instalace balíčku je tak primitivní, že ji zde nebudu zmiňovat.


Jak pracuje DHCP protokol


Jen ve stručnosti popíšu jakým způsobem probíhá komunikace mezi klientem a serverem.

Jelikož klient na začátku nezná svoji IP adresu využívá všesměrové vysílání. Pokud tedy potřebuje zjistit nastavení síťového rozhranní, odešle paket na všesměrovou adresu (255.255.255.255, adresa odesílatele je 0.0.0.0) daného rozhranní. Tento paket zachytí každé síťové rozhranní, včetně DHCP serveru (pokud se na daném síťovém segmentu nachází). Tento odpovi již na konkrétní linkovou adresu klienta. Tím se redukují všesměrové pakety na nezbytné minimum, které nezatěžuje síť. Některé starší OS vyžadovaly větší komunikaci na všesměru, ale jednalo se celkem o maximálně 4 pakety, takže tyto případy můžeme ignorovat.

Protokol DHCP komunikuje na protokolu UDP na portech 67, 68. Tyto porty jsou převzaty od protokolu BOOTP. Port 67 je označován jako serverový (též BOOTPS) a port 68 jako klientský (BOOTPC). Jelikož se pro navázání komunikace používá omezená všesměrová adresa, proto musí být DHCP server na stejném síťovém segmentu jako klient DHCP. Pro případ, kdy je mezi serverem a klientem router lze použít tzv. DHCP relay (též nazývaný přenosový agent), který musí být na routeru oddělujícím subnet se serverem od toho s klientem. Konfiguraci přenosového agenta se budu věnovat později.


Jednotlivé hlavičky DHCP paketu

(pořadí odpovídá řazení v samotném paketu, čísla na začátku udavají rozsah hlavičky v bitech)

0 - 7 op (operační kód zprávy); převzata z protokolu BOOTP, pakety klienta mají hodnotu 1 (BOOTREQUEST), odpovědi serveru 2 (BOOTREPLY)

8 - 15 htype (typ adresy na linkové vrstvě); definice jsou převzaty od IANA, nám stačí vědět, že ethernet má hodnotu 1

18 - 23 hlen (délka linkové adresy); udává velikost adresy v hlavičce chaddr v bytech

24 -31 hops (počet přenosových agentů); hodnota odpovídá počtu přenosových agentů přes které prošla

32 - 63 xid (identifikace transakce); identifikuje jaké odpovědi serveru patří ke kterým předchozím odpovědím (to je ale věta :-))

64 - 79 secs (uplynulý čas); obsahuje počet sekund od počátku dané komunikace DHCP

80 - 95 flags (hlavička příznaků); pokud je nejnižší bit (80) nastaven na 1, pak musejí být odpovědi klientovi směrovány na všesměrovou adresu

96 - 127 ciaddr (IP adresa klienta); nastavuje se pouze pokud má klient potvrzenou IP adresu, v opačném případě je hodnota hlavičky 0.0.0.0

128 - 159 yiaddr (IP adresa klienta); tuto hlavičku nastavuje pouze server a oznamuje v ní klientovi jaká je adresa klienta

160 - 191 siaddr (IP adresa serveru); adresa dalšího serveru, který má klient použít během konfigurace (např. adresa TFTP serveru pro stažení jádra OS při síťovém bootování)

192 - 223 giaddr (IP adresa přenosového agenta); zde přenosový agent uvádí adresu rozhranní přes které tuto zprávu přijal

224 - 351 chaddr (MAC adresa klienta)

352 - 863 sname (název dalšího serveru); název serveru, který má klient použít

864 - 1887 file (název souboru); název souboru, který si má klient vyžádat od dalšího serveru (viz. předchozí příklad s TFTP serverem)

1888 - ... options (možnosti); hlavička options obsahuje řadu možností pomocí nichž si mohou server a klient vyměňovat doplňující konfigurační údaje. Celková velikost hlavičky je proměnlivá. Každá možnost obsahuje kód možnosti, délku možnosti udávající velikost dat možností (v bytech) a samotná data možnosti.


...pokračovat budu zase příště ;-)