Články
Cisco IOS 13 - DHCP služby na switchi
Konfigurace DHCP Serveru
DHCP server, tedy dynamické přidělování adres, je služba, která je součástí většiny dnešních Catalyst switchů (nebo lépe řečeno dnešních verzí IOSu) a také routerů. V defaultním nastavení je tato služba zapnuta, ale nemá nastaveny žádné parametry, takže adresy nepřiděluje.
SWITCH(config)#service dhcp // zapne DHCP server (defaultně je zapnutý)
Konfigurace adresního poolu
Aby se mohly přidělovat adresy, tak musíme vytvořit DHCP Pool a nastavit mu požadované parametry. Těchto Poolů můžeme vytvořit několik, běžně pro každou VLAN, v které chceme přidělovat adresy.
SWITCH(config)#ip dhcp pool net1 // vytvoří pool se jménem net1
Vytvořením pojmenovaného Poolu se dostaneme do DHCP konfiguračního módu a nastavujeme jeho parametry.
SWITCH(dhcp-config)#network 192.168.190.0 255.255.255.0 // nastaví adresní rozsah, můžeme zadat nejen pomocí masky, ale i pomocí CIDR (takže třeba /24) SWITCH(dhcp-config)#default-router 192.168.190.1 // adresa brány SWITCH(dhcp-config)#domain-name mydomain.tld // nastavení DNS jména domény na mydomain.tld SWITCH(dhcp-config)#dns-server 192.168.190.9 192.168.190.8 // adresy DNS serverů (můžeme zadat 1 až 8 adres) SWITCH(dhcp-config)#netbios-name-server 192.168.190.9 // adresy WINS serverů (opět jich můžeme zadat až 8) SWITCH(dhcp-config)#netbios-node-type h-node // typ pro Netbios, pro MS klienty musíme zadat Hybridní SWITCH(dhcp-config)#lease 30 // pronájem adresy na 30 dní, pokud chceme zadat menší čas, tak je formát den hodina minuta (tedy třeba 0 0 10 = 10 minut) SWITCH(dhcp-config)#option 150 ip 192.168.190.20 // můžeme definovat take libovolnou ze speciálních vlastností, které může přidělovat DHCP server klientovi, zde příklad adresy TFTP serveru pro Cisco IP telefonii
Vyloučení adres
Většinou nechceme přidělovat adresy z celého rozsahu subnetu, proto můžeme nastavit vyloučené (nepřidělované) adresy.
SWITCH(config)#ip dhcp excluded-address 192.168.190.0 192.168.190.10 // vyloučí adresy 0 až 10 z přidělování
Rezervace adresy
Další běžnou vlastností DHCP serveru je možno rezervovat nějakou adresu pro určitý počítač podle jeho MAC adresy, ten když si pak zažádá o IP adresu, dostane vždy tuto rezervovanou. Na Ciscu se musí pro každou rezervaci vytvořit vlastní Pool.
SWITCH(config)#ip dhcp pool client1 // vytvoří pool se jménem client1 SWITCH(dhcp-config)#client-name wbouskap // nepovinné jméno klienta bez domény SWITCH(dhcp-config)#host 192.168.190.9 255.255.255.0 // adresa pro klienta spolu se subnetem (maska nebo CIDR) SWITCH(dhcp-config)#hardware-address 0012.1759.b073 ieee802 // MAC adresa a typ protocol, slouží pro BOOTP žádosti // nebo klientský identifikátor pro Microsoft klienty (DHCP) SWITCH(dhcp-config)#client-identifier 0100.1217.59b0.73 // MAC adresa před kterou je typ media, 01 je pro Ethernet a tečka se posouvá
Pozn.: Protože se informace dědí, tak nemusíme při rezervaci zadávat všechny parametry, ale automaticky se doplní ty z patřičného poolu.
Jak se přiřazuje Pool k VLANě
Někdo by se mohl zamýšlet nad tím, když mám několik DHCP Poolů, tak podle čeho se přiřazují adresy různým žádostem. Používá se jednoduchá a běžná metoda (podobně jako třeba u MS DHCP serveru).
Server se podívá na adresu interfacu, z kterého přišla žádost a podle ní dohledá odpovídající Pool, z něj pak přidělí adresu. Pokud by takový neexistoval, tak je žádost ignorována. Z toho plyne důležitá vlastnost. Každá VLANa, v které chceme přidělovat adresy, musí mít nastavenu svoji IP adresu (na switchi, kde běží DHCP služba).
Informace z DHCP serveru
Když se přidělí IP adresa nějakému počítači, tak se o tom vytvoří záznam, který se označuje jako DHCP Binding a obsahuje IP adresu a MAC adresu (a další parametry).
SWITCH#show ip dhcp bindings // seznam přidělených adres SWITCH#clear ip dhcp bindings // vymaže seznam SWITCH#show ip dhcp conflicts // seznam konfliktů SWITCH#clear ip dhcp conflicts // vymaže seznam konfliktů SWITCH#show ip dhcp pool // informace o poolu SWITCH#show ip dhcp server statistics // statistiky serveru
V případě problémů můžeme ladit komunikaci zapnutím debuggingu.
SWITCH#debug ip dhcp server packet
Adresa switche z DHCP
Trošku bokem, ale patřící k DHCP, je i možnost, aby si switch požádal o adresu z DHCP serveru. V praxi bych však doporučoval nastavovat adresu napevno.
SWITCH(config-if)#ip address dhcp // interface dostane adresu z DHCP
DHCP Relay Agent
Žádost o adresu z DHCP probíhá pomocí broadcastu, to znamená, že DHCP server musí být na stejném subnetu jako klient. Což je v praxi často nepohodlné (například chceme mít pouze jeden centrální DHCP server). Proto je možno využít DHCP Relay Agenta, který běží typicky na routeru (což je v lokální síti většinou switch). Ten přijme DHCP požadavek a již jako unicast jej pošle určenému DHCP serveru. A opačně zpracuje odpověď.
Pozn.: Aby fungoval DHCP Relay Agent, tak samozřejmě musí běžet DHCP server, ten je defaultně zapnutý.
Takže Relay Agent nám běží, ale aby začal skutečně fungovat, tak mu musíme nastavit adresu DHCP serveru, kterému má přeposílat požadavky. Této adrese se na Ciscu říká helper address. A protože můžeme mít několik DHCP serverů nebo pro některé subnety provozovat server na switchi, tak tuto adresu nenastavujeme globálně, ale pro interface, což je nejčastěji VLANa. Důležitým požadavkem je, aby tento interface (VLANa) měl nastavenu IP adresu.
SWITCH(config-if)#ip helper-address 192.168.10.10 // adresa serveru, kterému se budou přeposílat DHCP dotazy nebo síťová adresa
Pozn.: Helper address můžeme použít nejen pro DHCP, ale i pro další služby, například hledání TFTP serveru.
DHCP Snooping
DHCP Snooping je součástí novějších verzí IOSu. Jedná se o bezpečnostní funkci, která filtruje nedůvěryhodné DHCP zprávy.
Myšlenka je taková, že po zapnutí jsou všechny porty brány jako nedůvěryhodné (untrusted) a my nastavujeme některé jako důvěryhodné (trusted). Jako důvěryhodný musíme nastavit port kam je připojen DHCP server a pak porty, kterými jsou propojeny switche (trunky). Pokud přijde například přidělení adresy (nebo jakýkoliv paket z DHCP serveru) z nedůvěryhodného portu, tak je paket zahozen.
Zároveň se může vytvářet DHCP Snooping Binding Database, která obsahuje informace o všech přidělených IP adresách spolu s MAC, VLAN, časem pronájmu a informacemi o interfacu. Když pak přijde komunikace na nedůvěryhodném interfacu, tak se kontroluje oproti této databázi a v případě nesouhlasu se zahazuje.
Nejprve je třeba zapnout funkci DHCP Snooping na switchi
SWITCH(config)#ip dhcp snooping
Potom specifikujeme, na kterých VLANách bude funkce zapnuta
SWITCH(config)#ip dhcp snooping vlan 1 - 999 // můžeme definovat jednu VLANu, seznam oddělený čárkou nebo rozsah
Dále (spíše asi dříve, než funkci zapneme) pak musíme určit důvěryhodné porty, to provedeme přímo na daném portu.
SWITCH(config-if)#ip dhcp snooping trust
Pokud bychom chtěli využít DHCP Snooping Binding Database, tak musíme tuto funkci zapnout a určit, kde se bude ukládat.
SWITCH(config)#ip dhcp snooping database flash:/dhcpbind.txt // určení místa ukládání DB, zde do souboru ve flash paměti, dále může být FTP, TFTP, web, RCP
Abychom následně blokovali na portech nepovolené IP (a případně i MAC) adresy, tak využijeme funkci IP Source Guard, který se konfiguruje na switchovaný port.
SWITCH(config-if)#ip verify source // filtruje zdrojové IP adresy SWITCH(config-if)#ip verify source port-security // filtruje zdrojové IP a MAC adresy
Pozn.: Pro konfiguraci DHCP Snoopingu je ještě celá řada dalších příkazů.
Zajímavé odkazy
Více informací můžete nalézt v následujících článcích.
- C2960 - Configuring DHCP Features
- C3750 - Configuring DHCP Features and IP Source Guard
- Configuring DHCP
Související články:
Cisco IOS
- Cisco IOS 1 - úvod, příkaz show [08.03.2007 13:00]
- Cisco IOS 2 - verze, upgrade a záloha IOSu [16.03.2007 14:28]
- Cisco IOS 3 - nastavení interface/portu - access, trunk, port security [09.04.2007 11:09]
- Cisco IOS 4 - reset, password recovery [25.04.2007 17:34]
- Cisco IOS 5 - komunikace se switchem [16.05.2007 16:15]
- Cisco IOS 6 - úvodní konfigurace switche [08.06.2007 17:31]
- Cisco IOS 7 - konfigurace VLAN, VTP [18.06.2007 14:12]
- Cisco IOS 8 - Access Control List [10.08.2007 15:40]
- Cisco IOS 9 - Spanning Tree Protocol [20.08.2007 17:55]
- Cisco IOS 10 - Rapid Spanning Tree Protocol [01.09.2007 14:11]
- Cisco IOS 11 - IEEE 802.1x, autentizace k portu, MS IAS [10.10.2007 14:38]
- Cisco IOS 12 - IEEE 802.1x a pokročilejší funkce [24.10.2007 16:42]
- Cisco IOS 13 - DHCP služby na switchi [06.01.2008 11:24] právě čtete
- Cisco IOS 14 - tipy pro běžnou práci [29.02.2008 08:15]
- Cisco IOS 15 - zálohy a obnovy konfigurace a obrazů [13.03.2008 09:43]
- Cisco IOS 16 - HSRP - Hot Standby Routing Protocol [27.05.2008 16:05]
- Cisco IOS 17 - více switchů jako Stack - technologie StackWise [29.07.2008 20:27]
linkuj.cz | zalinkuj.cz | jagg.cz | vybrali.sme.sk | del.icio.us.
Pokud se chcete vyjádřit k tomuto článku, využijte komentáře níže. Pokud chcete poradit s nějakým problémem či diskutovat na nějaké téma, tak použijte fórum.

Komentáře
Zajímalo by mě jak jste to myslel s tím DHCP Relay? Na switchi přece není potřeba povolovat nějaké broadcasty,ty zastavují jen L3 zařízení, nebo máte na mysl L3 switch?
(cituji "Proto je možno využít DHCP Relay Agenta, který běží typicky na routeru (což je v lokální síti většinou switch).") ??????
shortty@seznam.cz
odpověď na [1]shortty: No myslím, že je to v článku popsáno dost jasně a vy si v dotazu i sám odpovídáte.
Pokud používám switch pro routování (což je dnes mnohem běžnější než použití routeru, který je příliš pomalý), tak na něm využiji DHCP Relay Agent. A ano myslím L3 switch (pokud použijeme takovéto označení).
A co kdyz mam sit, rozsahlou, bezdratovou, kde switche jsou mezi sebou propojeny PtP spoji, ale jsou na stejnem subnetu. Na te siti je cca 500 useru, a obcas se stane ze nejaky nouma "obrati" routr do vnitrni site a tim pusti dhcp server do me site. Pomuze tomu nejak dhcpd agent ? aby bylo pravidlo ze duveryhodny je jen TEN SERVER a vse co jde jinam zahod ...?
odpověď na [3]georgo23: No nevím, jestli tomu dobře rozumím. Ale podle popisu se na to krásně hodí DHCP Snooping, ten zabrání fungování DHCP serveru na portu, na kterém jej nechci.