Usluga DHCP
Transkrypt
Usluga DHCP
Sieci Komputerowe Protokół DHCP Dynamic Host Configuration Protocol dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska 48 50-204 Opole [email protected] 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, 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 hosta, • maska sieci, • adres IP domyślnej bramy, • adresy IP serwerów DNS, • czas dzierżawy adresu IP hosta, • 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 Klient DHCP może uzyskiwać parametry TCP/IP hosta z serwera DHCP znajdującego się w innej sieci, tzn. routery mogą przykazywać datagramy z wiadomościami DHCP do innych podsieci. 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. 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: serwer 67 UDP, klient 68 UDP. RFC 2131 host2 Host bez klienta DHCP host3 Klient DHCP Adres IP hosta3 Zadanie adresu IP Adres IP hosta1 host1 Klient DHCP 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, pierwszego który odpowiedział na zapytanie, wysyła na adres broadcast’owy żądanie rezerwacji i wysłania parametrów TC/IP dla hosta. 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). 1: DHCP Discover Klient DHCP 2: DHCP Offer 3: DHCP Request 4: DHCP Acknowledge Wymiana wiadomosci DHCP serwery DHCP serwery 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 Maximum reassembly size integer Default TTL integer PMTU aging timeout integer MTU plateau table (list) (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 1 2 3 4 5 6 7 Bity 4 8 12 16 20 24 28 32 Operacja (op) Typ sprzetu Dl. adresu M AC Skoki (hops) Id transakcji (xid) Czas (secs) Znaczniki (flags) Adres IP klienta (ciaddr) Adres IP klienta (yiaddr) Adres IP serwera (siaddr) 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 ----- .......0 = Last fragment in datagram ETYPE = 0x0800 : Protocol = IP: DOD Internet Protocol ......0. = May fragment datagram if necessary Destination address : FFFFFFFFFFFF Fragment Offset = 0 (0x0) bytes .......1 = Group address Fragment Offset = 0 (0x0) bytes ......1. = Locally administered address Time to Live = 128 (0x80) Source address : 00600801D303 Protocol = UDP - User Datagram .......0 = No routing information present Checksum = 0x3886 ......0. = Universally administered address Source Address = 0.0.0.0 Frame Length : 342 (0x0156) Destination Address = 255.255.255.255 Ethernet Type : 0x0800 (IP: DOD Internet Protocol) Data: Number of data bytes remaining = 308 (0x0134) Ethernet Data: Number of data bytes remaining = 328 (0x0148) # ----- Naglowek UDP ----- # ----- Naglowek IP ----ID = 0x120; Proto = UDP; Len: 328 IP Multicast: Src Port: BOOTP Client, (68); Dst Port: BOOTP Server (67); Length = 308 (0x134) Version = 4 (0x4) Source Port = BOOTP Client Header Length = 20 (0x14) Destination Port = BOOTP Server Precedence = Routine Total length = 308 (0x134) bytes Type of Service = Normal Service UDP Checksum = 0xDC08 Total Length = 328 (0x148) Data: Number of data bytes remaining = 300 (0x012C) Identification = 288 (0x120) # ----- Naglowek DHCP ----- Flags Summary = 0 (0x0) … 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 AutoConfigure Client-identifier = YES = (Type: 1) 00 60 08 01 d3 03 Requested Address Host Name = DHCP Discover = 12.12.12.12 = 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 ----- Magic Cookie = 99.130.83.99 Offer Option Field (xid=43474883) Op Code (op) Hardware Type = 2 (0x2) (htype) = 1 (0x1) 10Mb Ethernet (options) DHCP Message Type Subnet Mask = DHCP Offer = 255.255.255.0 Hardware Address Length (hlen) = 6 (0x6) Renewal Time Value (T1) = 4 Days, 0:00:00 Hops Rebinding Time Value (T2) = 7 Days, 0:00:00 (hops) = 0 (0x0) Transaction ID (xid) = 1128745091 (0x43474883) IP Address Lease Time = 8 Days, 0:00:00 Seconds (secs) = 0 (0x0) Server Identifier Flags (flags) = 0 (0x0) Domain Name 0............... = No Broadcast Router = 10.10.1.100 = kapoho.com = 10.10.1.100 Client IP Address (ciaddr) = 0.0.0.0 Domain Name Server = 10.10.1.200 10.10.2.200 Your IP Address (yiaddr) = 10.10.1.51 NetBIOS Name Service = 195.152.236.200 Server IP Address (siaddr) = 10.10.1.100 End of this option field Relay IP Address (giaddr) = 0.0.0.0 Client Ethernet Address (chaddr) = 00600801D303 Server Host Name (sname) = <Blank> Boot File Name (file) = <Blank> 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 1 2 3 4 5 6 7 B ity 4 8 12 16 20 24 28 32 O peracja (op) Typ sprzetu D l. adresu M AC S koki (hops) Id transakcji (xid) C zas (secs) P ole nieuzywane Adres IP klienta (ciaddr) Adres IP klienta (yiaddr) Adres IP serwera (siaddr) 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 lokalnym hoście. Opcje release, renew służą do komunikacji z serwerem DHCP. 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 Ćwiczenia. Diagram sieci z danymi dla DHCP scope. 26 Cwiczenia. Diagram sieci z danymi dla DHCP reservation. 27