Hlavní navigace

Linux jako DHCP server

19. 7. 2001
Doba čtení: 4 minuty

Sdílet

Protokol DHCP (Dynamic Host Configuration Protocol) používáme ke konfiguraci klíčových síťových parametrů jednotlivých klientů. Jejich nastavení umožňují DHCP servery, které přidělují klientům předem definované prostředky. Protože se DHCP využívá hojně i v jiných systémech, naučíme se nakonfigurovat takový server pro spolupráci s okolím a spravovat ho.

Jak to funguje

DHCP rozšiřuje BOOTP protokol, se kterým je zpětně kompatibilní. Klient vyšle do sítě multicast UDP požadavek DHCPDISCOVER. Servery zachytí požadavky a zašlou zprávu DHCPOFFER (opět multicast). Klient si vybere ze všech odpovědí tu nejvhodnější a pošle DHCPREQUEST. Server, který klient oslovuje, vše buď potvrdí (DHCPACK), nebo ne (DHCPNAK). Klient si to může ještě rozmyslet (DHCPDECLINE). Po vypršení lhůty (nebo pokud klient skončí před lhůtou a pošle DHCPRELEASE) se adresa může poskytnout jinému zájemci (existují i výjimky).

Instalace

Protokol vyvinula a spravuje ISC (Internet Software Consorcium). Dodává také příslusný software, který je šířen jako open source. Jedná se jak o serverovou, tak i klientskou část.

Instalace je snadná, musím vás ale upozornit na jeden chyták. Ve svém jádru musíte mít zakompilovanou podporu pro multicast adresy. Většina distribucí má tuto volbu zapnutou, o čemž se přesvědčíte příkazem ifconfig -a. Pokud ve výpisu uvidíte slovo MULTICAST (na počeštěných systémech je to VŠESMĚROVÉ_VY­SÍLÁNÍ), máte vyhráno.

Instalace vlastního DHCP probíhá obvyklým configure; make; make install. Pokud budete instalovat z binárek Red Hatu, je mojí povinností upozornit na skutečnost, že klientská část se nalézá v souboru dhcpcd-.rpm a serverová je k mání v dhcpd-.rpm. RedHat 6.x používá při standardní instalaci klienta jménem pump. Pokud chcete používat dhcpcd, musíte si jej nainstalovat. Pro zvědavce ještě uvedu, že dhcpcd znamená DHCP Client Daemon.

Server

Před vlastní instalací je třeba ještě malinko upravit směrovací tabulku, protože někteří klienti (co si budeme namlouvat – prostě Windows :-) se nechovají tak, jak dhcpd očekává. Musíme nastavit server tak, aby správně směroval pakety adresované 255.255.255.255­. Aby to provedl na síťovou kartu eth0, specifikujeme příkazem:

[lzap@alef /]# route add -host 255.255.255.255 dev eth0

Pro všechny následující příklady si vymyslíme fiktivní doménu firma.cz (192.168.1.0). DHCP server bude na 192.168.1.1. Nej­línější administrátor může vytvořit následující jednoduchou konfiguraci:

# [/etc/dhcpd.conf]
option domain-name "firma.cz";
option routers 192.168.1.254 192.168.1.253;
option domain-name-servers 192.168.1.1, 192.168.1.2;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
default-lease-time 3600;
max-lease-time 7200;

subnet 192.168.1.0 netmask 255.255.255.0 {
        range 192.168.1.100 192.168.1.200;
}

host guru {
    hardware ethernet 08:00:4b:2c:22:23;
    fixed-address 192.168.1.100;
}

Při takovéto konfiguraci bude dhcpd přidělovat adresy 192.168.1.100 až 192.168.1.200 im­plicitně na 1 hodinu, ne déle než na 2 hodiny. Počítač „guru“ je pravděpodobně administrátorův a chce mít přidělovánu stálou adresu 192.168.1.100. Tato adresa je tedy rezervována a DHCP server zajistí, aby nebyla poskytnuta (to lease = poskytnout, pronajmout). Pokud bychom v naší firmě používali WINS name server, můžeme jeho adresu DHCP démonovi sdělit pomocí konfigurační hodnoty netbios-name-servers.

DHCP démon se překvapivě nazývá dhcpd. Jeho spouštění se liší od distribuce k distribuci. Obvykle postačí příkaz /etc/init.d/dhcpd start. Základní paramtetry hledá démon v /etc/dhcpd.conf (kde jinde :-) a samozřejmě na příkazové řádce. Po prvním startu vytvoří soubor /var/state/dhcp/dhcp­d.leases nebo /var/lib/dhcp­/dhcpd.leases (záleží na konfiguraci), kde si ukládá informace o poskytnutých adresách. Je to obyčejný textový soubor (díky bohu žádná metabáze).

Ještě se zmíním o bezpečnosti. DHCP server si přímo říká o nějaký DoS útok. Útočník může server účelně zbavit všech adres, různě šachovat s klienty atp. Proto nedopusťte, aby dhcpd naslouchal požadavkům z internetu (UDP porty 67 a 68).

DNS

DHCP klient může (ale nemusí – tak se chová implicitně i dhcpcd) se svou zprávou zaslat svoje jméno a doménu. DHCP si tuto informaci uloží do dhcpd.leases. Tohoto se využívá ve spojení s DNS serverem. Není totiž problém vydolovat z dhcpd.leases tyto informace a poslat DNS serveru zprávu, aby si upravil svoje tabulky. Pokud to budete dělat pravidelně (třeba z cronu), každý počítač, jehož DHCP klient pošle serveru svoje jméno, dostane relevantní DNS záznam (včetně reverzního). Jeden takový skript (napsaný samozřejmě v Perlu) je k mání pro ISC DHCP server (dhcpd) a ISC BIND8 server (named).

Klient

Instalace DHCP klientů je na každém systému jiná. U Linuxu stačí nainstalovat balíček a nakonfigurovat síť na DHCP. Ve Windows se musíte proklikat ke konfiguraci sítě a taktéž nastavit získávání IP adresy z DHCP. Po dalším restartu už bude síť aktivní (pokud váš správce sítě správně nainstaloval server).

CS24 tip temata

Závěr

Samozřejmě, že jsme v tomto článku nepokryli veškeré možnosti, které DHCP nabízí – např. DHCP relay, komplikované přesuny notebooků přes různé sítě či bootování ze sítě. Doufám, že se najde někdo, kdo díky tomuto článku přejde z pevného přidělování adres na DHCP. Vždyť je to tak snadné!

Odkazy:
http://www.is­c.org/products/DHCP/
http://info.in­ternet.isi.edu/in-notes/rfc/files/rfc2131­.txt
http://info.in­ternet.isi.edu/in-notes/rfc/files/rfc2132­.txt
http://www.li­nuxdoc.org/HOW­TO/mini/DHCP/
http://www.dhcp­.org/

Autor článku