Sieci Komputerowe Protokół DHCP Dynamic Host Configuration Protocol dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska 48 50-204 Opole zlipinski@math.uni.opole.pl
Zagadnienia Protokół DHCP DHCP w systemie Windows System Windows: Konfiguracja klienta DHCP Fazy konfigurowania klienta DHCP Usługa APIPA Narzędzia: ipconfig (Win2000), winipcfg (Win98) DHCP Relay Agent Instalacja i konfiguracja serwera DHCP Narzędzie: ping DHCP w systemie Linux Struktura komunikatu DHCP Protokół BOOTP Struktura komunikatu BOOTP 2
Protokół DHCP Protokół DHCP, (ang.) Dynamic Host Configuration Protocol. Protokół opracowany przez Dynamic Host Configuration Working Group działający przy Internet Engineering Task Force (IETF). Aktualne standardy: RFC 2131, R. Droms, Dynamic Host Configuration Protocol, 1997. RFC 2132, S. Alexander, R. Droms, DHCP Options and BOOTP Vendor Extensions, 1997. RFC 3315, DHCP v6, DHCP dla IPv6, 2003. RFC 3456, konfiguracja IPsec w trybie tunelowym z DHCP, 2003. RFC 3634, konfiguracja kerberosa i DHCP, 2003. RFC 4014, Remote Authentication Dial-In User Service (RADIUS) i DHCP, 2005. RFC 6225, Lokalizacja klienta przez serwer DHCP na podstawie współrzędnych geograficznych, 2011. 3
Protokół DHCP Protokół DHCP wykorzystywany jest przez usługę DHCP, (ang.) DHCP service której zadaniem jest dynamiczne konfigurowanie parametrów TCP/IP hosta na podstawie adresu MAC karty sieciowej. Usługa DHCP jest zbudowana w architekturze klient-serwer. Serwer DHCP dostarcza danych, które słuŝą klientowi DHCP do konfiguracji parametrów TCP/IP hosta: adres IP, maska sieci, IP domyślnej bramy, adresy IP serwerów DNS czas dzierŝawy inne. DHCP jest ulepszoną wersją protokołu BOOTP, (ang.) bootstrap protocol, RFC 951, 1084. Protokół BOOTP uŝywany podczas logowania się hosta do sieci. Protokół BOOTP umoŝliwia hostowi przy uruchamianiu systemu operacyjnego automatyczną konfigurację parametrów TCP/IP (adres IP, maskę podsieci, adres IP domyślnej bramy, adres IP serwera DNS, adres IP serwera WINS). 4
DHCP Relay Agent Routery przykazują datagramy z wiadomościami DHCP, tzn. klient DHCP moŝe uzyskiwać parametry TCP/IP hosta z serwera DHCP znajdującego się w innej sieci. Relay Agent jest programem który przekazuje wiadomości DHCP/BOOTP wysyłane między klientem a serwerem znajdującym się w roŝnych podsieciach. DHCP Relay Agent jest komponentem systemu Windows 2000. Jest to BOOTP Relay Agent który przekazuje wiadomości DHCP między klientem a serwerem DHCP znajdującym się w roŝnych podsieciach. W kaŝdym segmencie sieci w którym są klienci DHCP musi być zainstalowany serwer DHCP lub DHCP Relay Agent. W systemie Windows DHCP Relay Agent jest usługą o nazwie Routing and Remote Access. 5
Usługi serwera DHCP Usługi DHCP, tryby dzierŝawy adresów IP: dhcp scope - zakres adresów moŝliwych do przydzielenia przez serwer DHCP, dhcp reservation - zarezerwowanie adresu IP dla konkretnego adresu MAC. 6
DHCP w systemie Windows DHCP korzysta w warstwie transportowej z protokołu UDP, wykorzystując porty: 67 serwer, 68 klient. RFC 2131 host2 Host bez klienta DHCP Adres IP hosta3 host3 Klient DHCP Zadanie adresu IP host1 Klient DHCP Adres IP hosta1 Zadanie adresu IP Wyslanie adresow do klientow DHCP serwer DHCP Baza adresow IP: IP hosta1 IP hosta3 Zadanie klienta DHCP adresu IP hosta od serwera DHCP 7
Fazy konfigurowania TCP/IP hosta 1. IP lease discover (lokalizacja serwera DHCP) Klient DHCP wysyła broadcast em zapytanie aby zlokalizować serwery DHCP i uzyskać informacje o adresie IP hosta (na podstawie adresu MAC). 2. IP lease offer (oferta dzierŝawy adresu IP i oferta usługi DHCP) Wszystkie serwery DHCP posiadające informacje o adresie IP dla danego adresu MAC odpowiadają klientowi (oferta usługi DHCP, serwery wysyłają: adres IP, maskę, adres IP domyślnej bramy). 3. IP lease request (Ŝądanie dzierŝawy adresu IP) Klient DHCP wybiera serwer DHCP (pierwszy który odpowiedział na zapytanie), wysyła na adres broadcast owyŝądanie rezerwacji i wysłania adresu IP. 4. IP lease acknowledgment (potwierdzenie dzierŝawy adresu IP) Serwer DHCP który został wybrany odpowiada na zadanie wysyłając informacje o konfiguracji TCP/IP hosta (te same dane które były w ofercie). Inne serwery DHCP anulują ofertę usługi DHCP i usuwają ze swojej bazy adres MAC hosta (przy kolejnym zadaniu adresu IP te serwery nie przysyła oferty). Klient DHCP 1: DHCP Discover 3: DHCP Request 2: DHCP Offer 4: DHCP Acknowledge serwery DHCP serwery DHCP Wymiana wiadomosci DHCP 8
Faza I: IP Lease Discover Faza I: IP Lease Discover. Podczas uruchamiania systemu operacyjnego klient DHCP wysyła na adres broadcastowy wiadomość 'DHCPDiscover' szukając serwerów DHCP. PoniewaŜ host nie ma adresu IP i nie zna adresu serwera DHCP w polu 'adres IP klienta' wiadomości 'DHCPDISCOVER', wpisuje adres IP 0.0.0.0 i adres 255.255.255.255 (broadcast) jako adres docelowy. Wiadomość DHCPDISCOVER zawiera: adres MAC karty sieciowej hosta nazwę hosta. Wysłanie informacji o adresie IP hosta przez serwer DHCP następuje gdy: konfiguracja TCP/IP hosta odbywa się po raz pierwszy (np. przy uruchamianiu systemu operacyjnego) klient zaŝądał przydzielania konkretnego adresu IP klient Ŝąda wysłania nowego adresu IP po zwolnieniu (ang. release) wcześniej przyznanego adresu. Zwolnienie adresu następuje po wysłaniu wiadomości DHCPRELEASE. 9
Faza I: IP Lease Discover Sytuacja: brak serwera DHCP Gdy w sieci brak jest serwera DHCP klient po wysłaniu zapytania o serwer DHCP czeka 1 sekundę na ofertę, gdy oferta nie nadejdzie wysyła trzykrotnie zapytanie co 9, 13, 16 sekund. JeŜeli oferta nie nadejdzie klient rozsyła zapytanie o serwer DHCP co 5 min. System operacyjny Windows 2000 ma wbudowana usługę APIPA, (ang.) Automatic Private IP Addressing słuŝącą do automatycznej konfiguracji TCP/IP gdy nie jest dostępny serwer DHCP. Gdy klient nie moŝe zlokalizować serwera DHCP automatycznie konfiguruje TCP/IP. Poprzez usługę APIPA przydziela sobie adres IP z klasy zarezerwowanej przez Microsoft (klasa B, 169.254.0.0) przydziela maskę 255.255.0.0. Przed przydzieleniem adresu IP klient DHCP testuje czy adres nie został juŝ przydzielony innemu hostowi w sieci. JeŜeli adres jest juŝ w uŝyciu klient wybiera inny adres IP i ponownie testuje sieć. Czynność ta powtarzana jest max 10 razy. JeŜeli adres IP jest juŝ przydzielony i nie ma konfliktów w sieci klient konfiguruje parametry TCP/IP hosta. Mimo autokonfiguracji klient rozsyła co 5 min. zapytanie o serwer DHCP. JeŜeli znajdzie serwer DHCP zwalnia swoją konfigurację TCP/IP i pobiera adres z serwera DHCP. 10
Faza II: IP Lease Offer Faza II: IP Lease Offer. Wszystkie serwery DHCP które posiadają waŝny adres IP dla danej karty MAC wysyłają broadcast em ofertę, wiadomość DHCPOFFER, zawierającą: adres MAC karty sieciowej klienta ofertę adresu IP maskę podsieci czas na jaki adres jest przydzielony, (ang.) length of the lease adres IP serwera DHCP, (ang.) server identifier inne. Serwer DHCP nie musi rezerwować zaoferowanego adresu IP klientowi (RFC 2131) ale musi sprawdzić czy zaoferowany adres nie został juŝ przydzielony (testuje sieć za pomocą wiadomości ICMP Echo Request). Klient DHCP wybiera adres IP z oferty serwerów DHCP (wybiera pierwszy serwer który przysłał ofertę). 11
Faza III: IP Lease Request Faza III: IP Lease Request. Klient wybiera serwer DHCP i wysyła boradcastem do wszystkich serwerów DHCP informację jaki serwer DHCP został wybrany. Informacja jest wysłana w wiadomości DHCPREQUEST. Pole Options zawiera informacje o adresie IP wybranego serwera DHCP. 12
Faza IV: IP Lease Acknowledgment Faza IV: IP Lease Acknowledgment (Successful). Serwer DHCP który został wybrany wysyła broadcastem potwierdzenie przydzielonego adresu IP w wiadomość DHCPACK message. Wiadomość DHCPACK zawiera: przydzielony klientowi adres IP i inne informacje potrzebne klientowi do konfiguracji TCP/IP.. Po uzyskaniu potwierdzenia klient konfiguruje TCP/IP. Następnie sprawdza czy adres IP nie został juŝ przydzielony innemu hostowi (uŝywając protokołu ARP). JeŜeli tak, to klient wysyła wiadomość DHCPDECLINE i rozpoczyna proces dzierŝawy od początku. Faza IV: IP Lease Acknowledgment (Unsuccessful). Wiadomość DHCPNACK zostaje wysłana przez serwer DHCP gdy klient próbuje wydzierŝawić swój adres IP (adres przydzielony poprzednio) a który juŝ nie jest dostępny. klient zmienił maskę podsieci, tzn. został przeniesiony do innej podsieci. Gdy klient otrzyma wiadomość DHCPNACK od początku rozpoczyna proces dzierŝawy adresu IP. 13
Wiadomości DHCP DHCPDISCOVER - Klient wysyła wiadomość broadcastem w celu zlokalizowania serwerów DHCP. DHCPOFFER hosta. - Serwery DHCP wysyłają klientowi ofertę z parametrami niezbędnymi do konfiguracji DHCPREQUEST - Klient wysyła do serwera DHCP wiadomość o tym, Ŝe (a) requesting offered parameters from one server and implicitly declining offers from all others, (b) confirming correctness of previously allocated address after, e.g., system reboot, or (c) extending the lease on a particular network address. DHCPACK - Serwer wysyła do klienta potwierdzenie zaoferowanych parametrów (przed wysłaniem wiadomości serwer sprawdza czy zaoferowany adres IP nie jest juŝ przydzielony). DHCPNAK - Serwer wysyła do klienta wiadomość nie potwierdzającą oferty z powodu np. zmiany maski przez klienta, wygaśnięcia czasu dzierŝawy. DHCPDECLINE - Klient wysyła do serwera DHCP wiadomość o tym, Ŝe zaoferowany adres IP jest juŝ przydzielony. DHCPRELEASE - Klient wysyła wiadomość do Serwera DHCP w celu zwolnienia dzierŝawy adresu IP. DHCPINFORM - Klient wysyła wiadomość do Serwera DHCP z pytaniem o parametry konfiguracyjne TCP/IP hosta (host ma juŝ przydzielony adres IP). 14
Parametry konfiguracyjne TCP/IP IP-layer_parameters,_per_host:_ Be a router on/off Non-local source routing on/off Policy filters for non-local source routing (list) Maximum reassembly size integer Default TTL integer PMTU aging timeout integer MTU plateau table (list) IP-layer_parameters,_per_interface:_ IP address (address) Subnet mask (address mask) MTU integer All-subnets-MTU on/off Broadcast address flavor 0x00000000/0xffffffff Perform mask discovery on/off Be a mask supplier on/off Perform router discovery on/off Router solicitation address (address) Default routers, list of: router address (address) preference level integer Static routes, list of: destination (host/subnet/net) destination mask (address mask) type-of-service integer first-hop router (address) ignore redirects on/off PMTU integer perform PMTU discovery on/off Link-layer_parameters,_per_interface:_ Trailers on/off ARP cache timeout integer Ethernet encapsulation (RFC 894, 1042) TCP_parameters,_per_host:_ TTL integer Keep-alive interval integer Keep-alive data size 0/1 Skróty: PMTU = Path MTU (RFC 1191) 15
Struktura wiadomości DHCP 4 8 12 Bity 16 20 24 28 32 1 Operacja (op) Typ sprzetu Dl. adresu M AC Skoki (hops) 2 Id transakcji (xid) 3 Czas (secs) Znaczniki (flags) 4 5 6 Adres IP klienta (ciaddr) Adres IP klienta (yiaddr) Adres IP serwera (siaddr) 7 Adres IP agenta (giaddr) 8 Adres M AC klienta (chaddr, 16 bajtow) 9 Nazwa hosta serwera (sname, 64 bajty) 10 Nazwa pliku (file, 128 bajtow) 11 Opcje (options) Struktura wiadomosci DHCP 16
Struktura wiadomości DHCP Pole: Typ wiadomości, (op). Wielkość: 8 bitów Pole określa typ wiadomości pytanie = 1, odpowiedz =2. Pole: Typ sprzętu, (htype). Wielkość: 8 bitów. Pole określa typ interfejsu sieciowego (typ karty sieciowej). Np. dla karty typu ethernet (10Mb) pole htype=1. Pole: Dl. adresu MAC, (hlen). Wielkość: 8 bitów. Pole określa długość adresu fizycznego karty sieciowej. Np. dla karty typu ethernet (10Mb) hlen = 6. Pole: Etapy, (hops). Wielkość: 8 bitów. Klient ustawia wartość pola hops=0. Pole słuŝy 'relay agents' do określania liczby przeskoków. Pole: Id transakcji, (xid). Wielkość: 32 bity. Losowa liczba generowana przez klienta DHCP. SłuŜy do identyfikacji wymienianych wiadomości miedzy klientem a serwerem DHCP. Pole: Czas, (secs). Wielkość: 16 bitów. Czas jaki upłynął od rozpoczęcia uzyskiwania adresu IP. Wartość parametru jest ustawiana przez klienta DHCP. 17
Struktura wiadomości DHCP Pole: Znaczniki, (flags). Wielkość: 16 bitów. Flagi: B - BROADCAST. Wartość flagi 1 oznacza, ze klient DHCP moŝe odebrać wiadomość wysłaną tylko w trybie broadcastowym. MBZ - MUST BE ZERO (flaga zarezerwowana). Specyfikacja flag znajduje się w RCF 1542. Pole: Adres IP klienta, (ciaddr). Wielkość: 32 bity. Pole zawiera adres IP klienta DHCP. Pole jest wypełnianie tylko gdy klient jest w stanie BOUND, RENEW, REBINDING. Pole: Adres IP klienta, (yiaddr). Wielkość: 32 bity. Pole zawiera adres IP proponowany przez serwer DHCP klientowi. yiaddr, ozn. 'your IP address. Pole: Adres IP serwera, (siaddr). Wielkość: 32 bity. Adres IP serwera DHCP. Zwracany w wiadomościach DHCPOFFER, DHCPACK wysyłanych przez serwer. Pole: Adres IP agenta, (giaddr). Wielkość: 32 bity. Pole zawiera adres IP relay agenta. 18
Struktura wiadomości DHCP Pole: Adres MAC klienta, (chaddr). Wielkość: 16 bajtów. Pole zawiera adres MAC klienta DHCP. chaddr, ozn. client hardware address. Pole: Nazwa hosta serwera, (sname). Wielkość: 64 bajty. Pole zawiera nazwę serwera DHCP. Pole: Nazwa pliku startowego, (file). Wielkość: 128 bajtów. Pole zawiera ścieŝkę i nazwę pliku (boot file name) w DHCPOFFER. Pole: Opcje, (options). Wielkość: zmienna. Pole zawiera opcjonalne parametry. Np. - klient moŝe regulować wielkość wiadomości, opcja: 'maximum DHCP message size' - klient moŝe wpisać swój identyfikator ('client identifier'), np. nazwę dns ową. - serwer moŝe wpisać swój identyfikator ( server identifier'), np. nazwę dns ową. 19
Przykład: wiadomość DHCP Discover # ----- Naglowek Ethernetowy ----- ETYPE = 0x0800 : Protocol = IP: DOD Internet Protocol Destination address : FFFFFFFFFFFF...1 = Group address...1. = Locally administered address Source address : 00600801D303...0 = No routing information present...0. = Universally administered address Frame Length : 342 (0x0156) Ethernet Type : 0x0800 (IP: DOD Internet Protocol) Ethernet Data: Number of data bytes remaining = 328 (0x0148) # ----- Naglowek IP ----- ID = 0x120; Proto = UDP; Len: 328 Version = 4 (0x4) Header Length = 20 (0x14) Precedence = Routine Type of Service = Normal Service Total Length = 328 (0x148) Identification = 288 (0x120) Flags Summary = 0 (0x0)...0 = Last fragment in datagram...0. = May fragment datagram if necessary Fragment Offset = 0 (0x0) bytes Fragment Offset = 0 (0x0) bytes Time to Live = 128 (0x80) Protocol = UDP - User Datagram Checksum = 0x3886 Source Address = 0.0.0.0 Destination Address = 255.255.255.255 Data: Number of data bytes remaining = 308 (0x0134) # ----- Naglowek UDP ----- IP Multicast: Src Port: BOOTP Client, (68); Dst Port: BOOTP Server (67); Length = 308 (0x134) Source Port = BOOTP Client Destination Port = BOOTP Server Total length = 308 (0x134) bytes UDP Checksum = 0xDC08 Data: Number of data bytes remaining = 300 (0x012C) # ----- Naglowek DHCP ----- 20
Przykład: wiadomość DHCP Discover # ----- Naglowek DHCP ----- Discover (xid=43474883) Op Code (op) = 1 (0x1) Hardware Type (htype) = 1 (0x1) 10Mb Ethernet Hardware Address Length (hlen) = 6 (0x6) Hops (hops) = 0 (0x0) Transaction ID (xid) = 1128745091 (0x43474883) Seconds (secs) = 0 (0x0) Flags (flags) = 0 (0x0) 0... = No Broadcast Client IP Address (ciaddr) = 0.0.0.0 Your IP Address (yiaddr) = 0.0.0.0 Server IP Address (siaddr) = 0.0.0.0 Relay IP Address (giaddr) = 0.0.0.0 Client Ethernet Address (chaddr) = 00600801D303 Server Host Name (sname) = <Blank> Boot File Name (file) = <Blank> Magic Cookie = 99.130.83.99 Option Field (options) DHCP Message Type = DHCP Discover AutoConfigure = YES Client-identifier = (Type: 1) 00 60 08 01 d3 03 Requested Address = 12.12.12.12 Host Name = KAPOHO10 Client Class information = (Length: 8) 4d 53 46 54 20 35 2e 30 Parameter Request List = (Length: 10) 01 0f 03 06 2c 2e 2f 1f 21 2b End of this option field 21
Przykład: wiadomość DHCP Offer # ----- Naglowek DHCP ----- Offer (xid=43474883) Op Code (op) = 2 (0x2) Hardware Type (htype) = 1 (0x1) 10Mb Ethernet Hardware Address Length (hlen) = 6 (0x6) Hops (hops) = 0 (0x0) Transaction ID (xid) = 1128745091 (0x43474883) Seconds (secs) = 0 (0x0) Flags (flags) = 0 (0x0) 0... = No Broadcast Client IP Address (ciaddr) = 0.0.0.0 Your IP Address (yiaddr) = 10.10.1.51 Server IP Address (siaddr) = 10.10.1.100 Relay IP Address (giaddr) = 0.0.0.0 Client Ethernet Address (chaddr) = 00600801D303 Server Host Name (sname) = <Blank> Boot File Name (file) = <Blank> Magic Cookie = 99.130.83.99 Option Field (options) DHCP Message Type = DHCP Offer Subnet Mask = 255.255.255.0 Renewal Time Value (T1) = 4 Days, 0:00:00 Rebinding Time Value (T2) = 7 Days, 0:00:00 IP Address Lease Time = 8 Days, 0:00:00 Server Identifier = 10.10.1.100 Domain Name = kapoho.com Router = 10.10.1.100 Domain Name Server = 10.10.1.200 10.10.2.200 NetBIOS Name Service = 195.152.236.200 End of this option field 22
Protokół BOOTP Protokół Bootp, (ang.) bootstrap protocol. RFC 951, 1084 Protokół bootp słuŝy do uzyskiwania z serwera Bootp adres IP i inne parametry niezbędne do konfiguracji z TCP/IP hostowi logującemu się do sieci. Program komunikujący się z serwerem Bootp, klient bootp, jest zainstalowany w pamięci PROM karty sieciowej. Klient bootp wysyła broadcastem wiadomość 'Bootp request' zawierającym adres MAC hosta z zapytaniem o swój adres IP. Protokół Bootp uŝywa w warstwie transportowej protokołu UDP. BOOTP client' uŝywa portu 68, 'BOOTP server' portu 67. Proces uruchamiania systemu składa się z dwóch faz. Faza pierwsza: wyznaczenie adresu IP hosta i wybór pliku konfiguracyjnego (bootfile). Faza druga: pobranie pliku konfiguracyjnego. W pierwszej fazie wykorzystywany jest protokół UDP. W drugiej fazie do transfer pliku moŝe być wykorzystywany protokół TFTP lub FTP (protokół TCP w warstwie Transportowej). Serwer bootp odpowiada podając informacje o: adresie IP klienta, adres maski, adres IP domyślnej bramy adres IP i nazwę hosta serwera bootp adres IP serwera na którym znajduje się obraz systemu operacyjnego który klient będzie ładował (boot server). WinNT z Service Pack 3 i następny posiada obsługę klienta bootp. 23
Struktura wiadomości BOOTP 4 8 12 B ity 16 20 24 28 32 1 O peracja (op) Typ sprzetu D l. adresu M AC Skoki (hops) 2 Id transakcji (xid) 3 C zas (secs) P ole nieuzywane 4 5 6 Adres IP klienta (ciaddr) Adres IP klienta (yiaddr) Adres IP serwera (siaddr) 7 Adres IP agenta (giaddr) 8 Adres M AC klienta (chaddr, 16 bajtow) 9 N azwa hosta serwera (sname, 64 bajty) 10 N azwa pliku (file, 128 bajtow) 11 O pcje (options) S truktura wiadomosci B ootp 24
Narzędzie ipconfig Aplikacja ipconfig słuŝy do sprawdzania konfiguracji TCP/IP na danym hoscie. Opcje: /all Produces a detailed configuration report for all interfaces /flushdns Removes all entries from the DNS name cache /registerdns DNS domain name for client resolutions /displaydns Displays the contents of the DNS resolver cache /release <adapter> Releases the IP address for a specified interface /renew <adapter> Renews the IP address for a specified interface /showclassid <adapter> Displays all the DHCP class IDs allowed for the adapter specified /setclassid <adapter> <classid to set> Changes the DHCP class ID for the adapter specified /? Help 25
Cwiczenia. Diagram sieci z danymi dla DHCP scope. 26
Cwiczenia. Diagram sieci z danymi dla DHCP reservation. 27