www.SAMURAJ-cz.com 

20.04.2024 Marcela Translate to English by Google     VÍTEJTE V MÉM SVĚTĚ

Články

Cisco IOS 13 - DHCP služby na switchi

Neděle, 06.01.2008 11:24 | Samuraj - Petr Bouška |
Tentokrát více praktický díl, který se věnuje službám okolo DHCP. Jako hlavní službu nám Catalysty nabízí možnost provozovat DHCP server. Nebudu se zabývat úvahami nad nasazením takovéhoto DHCP serveru v ostrém provozu, ale minimálně se jedná o užitečnou vlastnost pro různé testování a laboratoře. Další užitečná a často používaná funkce je DHCP Relay Agent, tedy předávání DHCP požadavků na server. A za povšimnutí určitě stojí, zajímává bezpečnostní funkce DHCP Snooping.

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 packets
SWITCH#debug ip dhcp server events

Posloupnost zasílaných paketů je:

  • klient DHCPDISCOVER
  • server DHCPOFFER
  • klient DHCPREQUEST
  • server DHCPACK

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

Helper address slouží k přeposílání UDP broadcastů, které jsou přijaty na interfacu. Může fungovat pro libovolný UDP port, defaultně pro BOOTP (obsahuje DHCP 67, 68), DNS (53), time service (37), TFTP (69), TACAS (49), NetBIOS (137, 138), IEN-116 name (42).

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ů.

Zobrazení informací

SWITCH#show ip dhcp snooping
SWITCH#show ip verify source

Zajímavé odkazy

Více informací můžete nalézt v následujících článcích.

zobrazeno: 76395krát | Komentáře [12]

Autor:

Související články:

Cisco IOS

Velký seriál o operačním systému aktivních prvků firmy Cisco.

Pokud se chcete vyjádřit k tomuto článku, využijte komentáře níže.

Komentáře

  1. [1] shortty

    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

    Čtvrtek, 07.02.2008 08:50 | odpovědět
  2. [2] Samuraj

    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í).

    Čtvrtek, 07.02.2008 09:01 | odpovědět
  3. [3] georgo23

    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 ...?

    Pátek, 08.02.2008 20:06 | odpovědět
  4. [4] Samuraj

    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.

    Neděle, 10.02.2008 12:19 | odpovědět
  5. [5] pedro

    Jak zapnout DHCP kdyz ho mam vyplej?nvm kde se zapina :( :-(

    Středa, 08.10.2008 12:51 | odpovědět
  6. [6] Samuraj

    odpověď na [5]pedro: Je to napsáno hned na začátku článku. Ale pokud není vytvořený patřičný pool do dané VLANy, tak se adresy přidělovat nebudou.

    Čtvrtek, 09.10.2008 15:17 | odpovědět
  7. [7] Joe

    Nastal mi problem. Potrebuji bootovat Macbook s OS X pres sit. Je nejaka moznost, jak nastavit DHCP pool aby vedel o serveru, ktery je v jinem subnetu a poskytuje image? Mohlo by to jit pres option ale nejak jsem zatim nikde nezjistil jak to provest.

    Čtvrtek, 25.06.2009 11:59 | odpovědět
  8. [8] Samuraj

    odpověď na [7]Joe: Jestli jsem správně pochopil dotaz, pak odpověď je ano.

    DHCP server přiděluje IP adresy a zároveň předává informace o různých důležitých serverech (adresách). Standardně se jedná o DNS (option 6), gateway (option 3), WINS (option 44) a další. Různá čísla Option jsou přiřazena různému použití, takže jde o to, aby tuto funkci aplikace podporovala a četla určitou Option.

    Například Cisco IPT používá Option 150, kde se předává adresa TFTP serveru CallManageru.

    Čtvrtek, 25.06.2009 13:39 | odpovědět
  9. [9] Ferda

    PS: Jeste bych pripsal, ze u ciloveho zarizeni se nastavi: "ip address dhcp" ;-)

    Středa, 22.06.2011 10:48 | odpovědět
  10. [10] Saša

    Není mi jasné za jakých podmínek se DHCP Snooping Binding Database vytvoří. Přesto že jsem ji na switchi zapnul (a to na switchi kde je připojen i DHCP server, tak se žádný soubor ve flash: nevytvořil. Ani když to pošlu na TFTP server.

    Středa, 13.03.2013 06:29 | odpovědět
  11. [11] root

    Co se tyka dhcp snooping db, tak doporucuju nejdriv si vytvorit prazdny soubor na tom tftp umisteni (nekdy se stane, ze ho ten tftp proces neumi vytvorit, ale prepsat ano).

    Do flash nezapisovat, protoze si ji zbytecne likvidujete.

    Ja osobne pouzivam ftp server, pro zalohu databaze.

    Středa, 13.03.2013 13:47 | odpovědět
  12. [12] Saša

    V konfiguraci je nastaveno:

    ip dhcp snooping vlan 1-999

    ip dhcp snooping database tftp://172.24.44.89/dhcpbind.txt

    ip dhcp snooping database write-delay 100

    ip dhcp snooping database timeout 100

    ip dhcp snooping

    Trusted porty jsou nadefinovány

    TFTP server je funkční, soubor dhcpbind.txt je vytvořen a je prázdný.

    Přesto se do souboru ni nezapíše.

    debug:

    DHCP Snooping packet debugging is on

    DHCP Snooping event debugging is on

    DHCP Snooping database agent debugging is on

    A kromě DHCP komunikace se vypisuje hlášení:

    switch#

    .Mar 13 14:36:32: Safe write timer expired.

    .Mar 13 14:36:32: Trying to open url in safe write mode..

    .Mar 13 14:36:32: Restarting safe write timer.

    switch#

    Na Ciscu jsem nic podobného nenašel.

    Středa, 13.03.2013 14:48 | odpovědět
Přidat komentář

Vložit tag: strong em link

Vložit smajlík: :-) ;-) :-( :-O

Nápověda:
  • maximální délka komentáře je 2000 znaků
  • HTML tagy nejsou povoleny (budou odstraněny), použít se mohou pouze speciální tagy (jsou uvedeny nad vstupním polem)
  • nový řádek (ENTER) ukončí odstavec a začne nový
  • pokud odpovídáte na jiný komentář, vložte na začátek odstavce (řádku) číslo komentáře v hranatých závorkách