Podpora DHCPv6 v operačních systémech Windows a Linux Jan Dořičák, Stanislav Kepák Abstrakt: Tento projekt je zaměřen na otestování podpory DHCPv6 v operačních systémech Windows XP/7/Vista, Linux – Ubuntu. Kde DHCPv6 server je realizován na Cisco routeru, případně pomocí aplikace Dibbler jako serveru DHCPv6. Realizovány jsou obě varianty DHCPv6 –Stateful i stateless. Jako DHCP klient je použit klient obsažený v operačním systému, případně klient aplikace Dibbler. Klíčová slova: DHCPv6, Dynamic Host Configuration Protocol, Cisco, Stateful, Stateles, Stavová konfigurace, Bezstavová konfigurace, IPv6, Dibbler, DUID.
1.
Teorie ...................................................................................................................................... 2 1.1
DHCPv6 .............................................................................................................................. 2
1.2
Stavová konfigurace (Stateful) .......................................................................................... 3
1.3
Bezstavová konfigurace (Stateless)................................................................................... 3 Použitá zapojení a použitý hardware .................................................................................... 4
2.
2.1.
Zapojení .......................................................................................................................... 4
2.2.
Použitý hardware a software .......................................................................................... 5
3.
Konfigurace stateless DHCPv6 na cisco routeru: ................................................................ 5 3.1.
4.
Popis vybraných příkazů ................................................................................................ 5
Stateless DHCPv6 klienti ...................................................................................................... 6 4.1.
Stateless DHCP klient Windows XP............................................................................. 6
4.2.
Stateless DHCP klient Windows Vista/7 ...................................................................... 9
4.3.
Stateless DHCP klient Linux ....................................................................................... 11
5.
Konfigurace stateful DHCPv6 na Cisco routeru ................................................................ 12
6.
Konfigurace stateful serveru na OS Linux ......................................................................... 13
7.
Stateful DHCPv6 klienti ...................................................................................................... 13 7.1.
Stateful DHCP klienti na OS Linux a Windows XP .................................................. 13
7.2.
Stateful DHCP klient Windows Vista/7 ..................................................................... 16
8.
Resumé ................................................................................................................................. 16
9.
Zdroje .................................................................................................................................... 17
duben 2010 1/17
1. Teorie 1.1
DHCPv6
V dnešní době používá osobní počítač téměř každý. Ovšem ne všichni uživatelé jsou vybaveni hlubokými znalostmi, které jsou potřeba k nastavení jednotlivých aplikací a funkcí. Proto je potřeba takovýmto uživatelům podat pomocnou ruku. V oblasti internetu a přístupu k němu je cílem to, že uživatel jednoduše zapojí počítač do sítě a vše se nakonfiguruje automaticky a on může pracovat. Ke kýženému cíli byly navrženy hned dvě cesty: stavová a bezstavová automatická konfigurace. K oběma typům konfigurací slouží DHCP- Dynamic Host Configuration Protocol. V dnešní době se postupně objevují snahy nahradit starý IP protokol verze 4 novějším protokolem IPv6. S IPv6 také přichází nová verze DHCP, tedy DHCPv6. Možnosti IPv6 oproti IPv4 jsou mnohem obsáhlejší, konfigurace klienta pomocí DHCPv6 je pouze doplňující mechanismus, který doplňuje protokol IPv6. Základní informace o síti se klient dozví z ohlášení směrovačů (RA- router advertisement). Přidělení IPv6 adresy protokolem DHCPv6 je volitelné, klient je totiž schopen získat IP adresu i bez použití DHCPv6 a to právě z ohlášení směrovačů RA (postup bude popsán dále). Směrovač v síti určuje pomocí inzerovaných příznaků, zda má klient DHCPv6 použít pro konfiguraci adresy (příznak M=1 v RA) nebo pouze pro konfiguraci parametrů sítě (bezstavové DHCPv6, příznak M=0 a O=1 v RA).
1.1.1. DHCP se účastní tři základní typy strojů
klient – nejčastěji to bývá osobní počítač, který chce získat parametry potřebné ke konfiguraci, tak aby mohl přistupovat do sítě. Klientem samozřejmě nemusí být jen počítač, může jím být například síťová tiskárna. server – je mozkem celého procesu automatické konfigurace, vyřizuje žádosti od klientů. Stará se o přidělení všech potřebných parametrů a také o jejich správu. Vybrané parametry přiděluje (pronajímá) klientům podle předem určených pravidel daných správcem serveru. zprostředkovatel (relay) - stará se o předání DHCP zpráv mezi klientem žádajícím o přidělení parametrů a serverem. Protože klient během doby zjišťování komunikačních parametrů nemá nastaveno směrování, musí být v každé podsíti někdo, kdo jeho dotazy předá k vyřízení serveru. Pro servery a zprostředkovatele se někdy používá souhrnné označení agent – tedy někdo kdo poskytne DHCP odpověď. Zprostředkovatel může předávat DHCPv6 zprávy mezi serverem a klientem v případě kdy nejsou ve stejné podsíti.
1.1.2. Proces konfigurace pomocí DHCPv6 Postup konfigurace je obdobný konfiguraci DHCP z IPv4. Konfigurace v případě DHCPv6 se také skládá ze čtyř základních kroků:
Objevování – Ze všeho nejdříve musí klient navázat kontakt se samotným DHCP serverem. Jelikož klient nezná jeho adresu, musí poslat výzvu na skupinovou adresu všech DHCP agentů na lince (adresa ff02::1:2), do této výzvy klient zařadí své identifikační údaje.
duben 2010 2/17
Nabídka - servery, které přijaly výzvu klienta, a jsou ochotny přidělit potřebné parametry, pošlou klientovi své nabídky. V těchto nabídkách uvádí parametry, které jsou ochotny poskytnout v případě, že by si o ně klient zažádal. Požadavek - klient si z příchozích nabídek jednotlivých DHCP serverů vytvoří seznam těchto serverů a podle preference si vybere jeden, kterému pošle požadavek na přidělení nabídnutých parametrů, které se mu jeví jako nejvhodnější a příslušnému serveru zašle požadavek na přidělení nabídnutých parametrů. Protože v tento okamžik stále klient nemá potřebné informace o síti (nejsou potvrzeny) vysílá tento požadavek opět na adresu všech DHCP serverů. Potvrzení – proces přidělování parametrů končí odesláním potvrzení serverem, jehož nabídku si klient vybral. Nabídnuté parametry, které jsou nyní potvrzeny klient použije k vlastní konfiguraci. Pro identifikaci samotných klientů či serverů se zavádí DHCP Unique Identifier známý spíš pod zkratkou DUID. DUID v DHCPv6 je významná změna oproti DHCPv4. Měl by být trvalý v čase a neměl by záviset na klientově technickém vybavení. Například výměna síťové karty by neměla způsobit změnu DUID. Tento identifikátor může být dán buďto výrobcem, který jej vygeneruje a následně uloží nebo použije MAC adresu a doplní ji o náhodně zvolené hexadecimální znaky tak, aby se výsledná délka takového řetězce rovnala předepsané délce DUID. DUID je v daném operačním systému uloženo vždy na stejném místě (Windows v registru, Unix obvykle ve /var/db). Při každé nové instalaci operačního systému se vygeneruje nové zcela odlišné DUID. V případě, že máme vytvořeny klony operačního systému, je třeba vytvořit nové DUID jinak by takovéto naklonované operační systémy měly stejné identifikátory DUID jako prvotní operační systém ze kterého klony vytváříme. Oproti DHCPv4 kde se využívala MAC adresa k identifikaci klienta je v DHCPv6 identifikace mnohem složitější a přiřazení pevné IPv6 adresy danému klientovi přes DHCPv6 je většinou prakticky nemožné.
1.2
Stavová konfigurace (Stateful) Jedná se o klasickou DHCP, jak ji známe z IPv4. DHCPv6 klient běžící na počítači, kterému chceme přidělit parametry ke konfiguraci rozešle dotaz na DHCP servery. Ty mu v odpovědi sdělí správcem vybrané parametry, které jsou potřebné k bezproblémové konfiguraci. V tomto případě je tedy nutno vyčlenit specializovaný server, který přiděluje jednotlivým strojům jejich konfigurační parametry.
1.3
Bezstavová konfigurace (Stateless)
Novinkou v DHCPv6 je konfigurace bezstavová (stateless autoconfiguration). Tento způsob autokonfigurace nevyžaduje žádné servery, je to vlastně zjednodušená varianta DHCPv6. Její základ tvoří objevování sousedů. Princip funkce je následující: každý router v IPv6 síti rozesílá v určitých časových intervalech ohlášení směrovače (RA- router advertisement). V tomto ohlášení se vyskytují základní informace - prefixy adres dané sítě a zda může být tento směrovač použit pro předávání paketů ven ze sítě (jako implicitní směrovač, default gateway). Z těchto ohlášení se počítač připojený do sítě dozví, jaké adresy tato síť používá. O ohlášení směrovačů může klient také aktivně požádat pomocí výzvy směrovači - router solicitation. K informacím získaných z router advertisement si klient doplní identifikátor rozhraní (typicky 64 bitů), který si jednoznačně vygeneruje ze své MAC adresy, nebo jiným algoritmem (např. OS společnosti Microsoft – popsáno v oddíle „Stateless DHCP klient Windows Vista/7“ vycházející z RFC 4941). Tímto způsobem získá IPv6 adresy pro své rozhraní. Aby se předešlo vzniku duplicit v IPv6 adresách tak se vygenerovaná IP adresa ověří pomocí detekce duplicit - výzva sousedovi (neighbor solicitation), kdy se klient dotáže, zda vytvořenou adresu již někdo nepoužívá. Pokud obdrží odpověď s informací, že tato adresa je již použita, nesmí tuto vygenerovanou adreduben 2010 3/17
su svému rozhraní nastavit a automatická konfigurace skončí neúspěšně. V případě použití bezstavové konfigurace si stroj také vytvoří základ směrovací tabulky – která je tvořena seznamem směrovačů, kterým bude předávat pakety směřující mimo síť. V případě, že je takových směrovačů více tak je postupně střídá a zjišťuje, která cesta je pro paket jdoucí k určitému cíli nejlepší a podle toho si upraví svou směrovací tabulku. Bezstavové DHCPv6 je velmi jednoduché, používá jen dva typy zpráv: žádost o informace (information request) a odpověď na ni (reply). Jelikož stejně jako u klasického DHCPv6 musí být v každé podsíti jeden agent, přibývá k nim ještě dvojice, sloužící pro předání těchto základních zpráv z podsítě serveru (Relay-forward) a odpovědi v opačném směru (Relay-reply). Počítač se obvykle od bezstavového DHCPv6 dozví doménu, adresu SIP serveru (pro případ VoIP komunikace) a adresu DNS serveru. Platnost parametrů, které předal DHCP server klientovi je časově omezená. Klient se tedy musí snažit obnovovat platnost obdržených dat u DHCP serveru a v případě, že se mu to nepodaří a vyprší mu doba platnosti, musí upustit od používání přidělených parametrů. Klient také může ukončit platnost parametrů přidělených serverem (ukončení pronájmu parametru ze strany klienta), případně může získat parametry od jiného DHCP a přejít k němu, případně zažádat o změnu konfigurace. Ve specifikaci pro DHCPv6 je definováno celkem 13 různých typů zpráv určených k změnám relace mezi klientem a serverem.
2. Použitá zapojení a použitý hardware 2.1.
Zapojení
Obr. č. 1. Stateful zapojení s Dibbler serverem běžícím na OS Linux
duben 2010 4/17
Obr. č. 2 Schéma zapojení s Cisco routerem jako DHCPv6 serverem
2.2.
Použitý hardware a software
Cisco router 1812, hub, počítač s OS Windows XP, 7 a Linux (Ubuntu 8.10 kernel 2.6.27-11). Aplikace Wireshark, Dibbler verze 0.7.2 a 0.7.3 (OS Linux)[7], Cisco IOS 12.4. Hub byl použit proto, že bylo potřeba zachytávat provoz jdoucí mezi serverem a klientem (všechna příchozí data odesílá na všechny porty), což by na switchi nebylo možné. V běžném provozu se samozřejmě použijí switche (větší bezpečnost, vyšší výkon)
3. Konfigurace stateless DHCPv6 na cisco routeru: Zapnutí IPv6 unicast provozu: ipv6 unicast-routing Nastavení poolu a DHCP: ipv6 dhcp pool
dns-server domain-name Nastavení interfacuinterface ipv6 address <128bit adresa> /<maska> ipv6 dhcp server ipv6 nd other-config-flag no shutdown
3.1.
Popis vybraných příkazů:
ipv6 nd other-config-flag: nastaví v RA (router advertisement) paketech flag O „other stateful configuration“ říkající hostu, že obdrží ještě další informace od stateless DHCP serveru ke konfiguraci, než které jsou obsaženy v RA paketu.
duben 2010 5/17
4. Stateless DHCPv6 klienti 4.1.
Stateless DHCP klient Windows XP
IPv6 podpora v tomto systému od Microsoftu není ve výchozím stavu aktivní. Pro instalaci protokolu IPv6 je nutno zajistit tyto vstupní podmínky. Aktualizovat Windows XP na service pack 1 a doinstalovat aktualizaci KB817778 v příslušné jazykové mutaci, nebo provést aktualizaci na service pack 2 a vyšší.
4.1.1. Postup instalace IPv6 Do konzole (cmd) zadáváme tyto příkazy, potřebujeme administrátorské oprávnění: net stop tcpip6 – kontrola, zdali není už služba nainstalována, pokud není, dozvíme se to v odpovědi netsh interface ipv6 install – instalace IPv6 služby net start tcpip6 – spuštění služby netsh interface ipv6 set privacy disabled – zakázaní používaní proměnlivých identifikátorů uzlu, jak je specikováno v RFC 3041. Protokol je nyní nainstalován. Další problém nastává díky nepřítomnosti funkce DHCP klienta ve výchozím stavu po instalaci IPv6. Problém je nutno vyřešit instalací DHCP klienta od třetí strany. My jsme zvolili aplikaci Dibbler. Je to multi-platformní DHCPv6 klient/server podporující stateful i stateless autokonfiguraci. Instalace pod Windows probíhá standardním způsobem pomocí staženého setup balíčku. Konfigurace je rovněž bezproblémová, po instalaci jsou vytvořeny v nabídce start zástupci. Nejprve nainstalujeme DHCPv6 klient jako službu a po restartu je možno pomocí zástupce, který spouští tuto službu vyslat požadavek (DHCP Request) na IP adresu a další parametry. Pochopitelně můžeme také nakonfigurovat službu, aby se spouštěla automaticky.
4.1.2. Data zachycená ve Wiresharku
Obr. č. 3 Pakety zaznamenané na síti (stateless DHCP) Pokud odešleme požadavek na DHCP, tzv. request, počítač odesílá zprávu InformationRequest (Obr. č. 4). Zdrojem je lokální linková adresa, cílem je pak tzv. reserved multicast address - ff02:1:2 čili rezervovaná linková multicastová adresa (nebo také skupinová adresa) pro všechny DHCP servery a relay agenty. Neméně důležitým parametrem jsou porty, na kterých probíhá komunikace. Jedná se o UDP přenos, na klientské straně z portu 546 na serverové pak 547. Je tedy nutné na toto myslet při konfiguracích access listů a firewallů. Součástí odesílaného paketu je především identifikace klienta DUID (kterou si můžeme ověřit pomocí příkazu ipconfig /all) a požadavky na parametry, které chceme od serveru obdržet, tedy DNS server, doménu a platnost parametrů.
duben 2010 6/17
Obr. č. 4 Detail zprávy Information-request Odpovědí na tuto zprávu je ze strany routeru zpráva typu Reply (Obr. č. 5), obsahující identifikaci serveru, identifikaci klienta a požadované parametry – adresu DNS serveru a název domény. Všimněme si, že součástí odpovědí není žádná adresa, ani prefix a chybí rovněž doba platnosti adresy.
Obr. č. 5 Detail DHCP Reply zprávy Chybějící data jsou obsažena ve zprávách Router advertisement – RA (Obr. č. 6). Tyto zprávy IPv6 router periodicky zasílá na síť a vkládá do něj informace o síti, ve které se daní klienti nachází. Propaguje především prefix sítě a jeho délku, dále taky životnost dané informace pomocí duben 2010 7/17
dvou časovačů Valid lifetime a Preferred lifetime. Časovač Valid lifetime (ve výchozím nastavení 30dní) určuje jak dlouho je daný prefix platný, druhý časovač Preferred lifetime, který mimochodem musí být vždy nižší, určuje dobu, po kterou z adres vytvořených z inzerovaného prefixu je možno bez problému jak přijímat, tak odesílat data. Poté se již nedoporučuje z takových adres odesílat data, ale jsou stále platné. Situaci ilustruje Obr. č. 7 převzatý z dokumentace k Windows XP Professional.
Obr. č. 6 Detail zprávy Router advertisement
Obr. č. 7 Jednotlivé stavy adres a časovače při autokonfiguraci adres Klient si tedy svou adresu sestaví z informací ze zprávy router advertisement, kde získá potřebný prefix a doplňující informace pro komunikaci především v rámci sítě či internetu získá z paketu DHCP Reply. Zbývá tedy jen popsat výslednou adresu uzlu, kterou jsme takto získali. Převod MAC adresy na EUI-64 spočívá ve vložení hodnoty FFFE HEX mezi třetí a čtvrtý bajt (tedy doprostřed) MAC adresy. Mimo to je třeba invertovat příznak globality - ten je u MAC adres umístěn stejně jako v EUI-64 jako druhý nejméně významný bit nejvyššího bajtu, avšak s opačnou logikou. Například z naší MAC adresy 00:16:76:69:01:DD tak vznikne identifikátor rozhraní s hodnotou 02:16:76:FF:FE:69:01:DD. Výsledná IP adresa bude tedy spolu s prefixem 2001:1::216:76FF:FE69:1DD. Níže se nachází už jen výpis ze stateless DHCP serveru běžícím na Cisco IOS. Příkazem debug ipv6 dhcp detail zapneme detailní výpisy paketů. duben 2010 8/17
*Apr 9 15:46:25.859: IPv6 DHCP: Received INFORMATION-REQUEST from FE80::216:76FF:FE69:1DD on FastEthernet0/0 *Apr 9 15:46:25.859: IPv6 DHCP: detailed packet contents *Apr 9 15:46:25.859: src FE80::216:76FF:FE69:1DD (FastEthernet0/0) *Apr 9 15:46:25.859: dst FF02::1:2 *Apr 9 15:46:25.859: type INFORMATION-REQUEST(11), xid 8511 *Apr 9 15:46:25.859: option CLIENTID(1), len 14 *Apr 9 15:46:25.859: 000100061351F9D90016766901DD *Apr 9 15:46:25.859: option ELAPSED-TIME(8), len 2 *Apr 9 15:46:25.859: elapsed-time 100 *Apr 9 15:46:25.859: option ORO(6), len 6 *Apr 9 15:46:25.859: INFO-REFRESH,DNS-SERVERS,DOMAIN-LIST *Apr 9 15:46:25.859: IPv6 DHCP: Sending REPLY to FE80::216:76FF:FE69:1DD on FastEthernet0/0 *Apr 9 15:46:25.859: IPv6 DHCP: detailed packet contents *Apr 9 15:46:25.859: src FE80::222:55FF:FEA2:3892 *Apr 9 15:46:25.859: dst FE80::216:76FF:FE69:1DD (FastEthernet0/0) *Apr 9 15:46:25.859: type REPLY(7), xid 8511 *Apr 9 15:46:25.859: option SERVERID(2), len 10 *Apr 9 15:46:25.859: 00030001002255A23892 *Apr 9 15:46:25.859: option CLIENTID(1), len 14 *Apr 9 15:46:25.863: 000100061351F9D90016766901DD *Apr 9 15:46:25.863: option DNS-SERVERS(23), len 16 *Apr 9 15:46:25.863: 2001:DB8:3000:3000::42 *Apr 9 15:46:25.863: option DOMAIN-LIST(24), len 8 *Apr 9 15:46:25.863: vsb.cz Zde prakticky vidíme to, co nám už řekl Wireshark. Všimněme si, že komunikace probíhá stale na lokálních linkových adresách, což je velká výhoda IPv6, že umožňuje přiřadit rozhraním více adres.
4.2.
Stateless DHCP klient Windows Vista/7
V těchto dvou OS je již implementace IPv6 pokročilejší a přítomna již po instalaci systému. Protože se neliší, viz [12], zvolili jsme jako testovaný OS pouze Windows 7, jelikož jsme měli takový notebook k dispozici. Implementace protokolu již obsahuje, na rozdíl od Windows XP, i zabudovaný DHCPv6 klient. Není tedy třeba nic doinstalovávat, pouze zkontrolovat, zdali není vypnut, což lze poměrně snadno v GUI ve vlastnostech příslušného síťového připojení zkontrolovat, jestli protokol je zatržen, tedy používán, tak jak je naznačeno na Obr. č. 8. Pro pohodlné testování lze naopak IPv4 kompletně vypnout.
duben 2010 9/17
Obr. č. 8 Kontrola nastavení protokolu
Obr. č. 9 Pakety zaznamenané na síti (stateless DHCP) Zprávy a jejich obsah je podobný těm, které jsme pozorovali u Windows XP. Rozdíl lze spatřit v Information request zprávě (Obr. č. 10), která mimo jiné prozrazuje, že tento DHCP klient je z dílen Microsoftu (vendor class), tak také poptává obdobnou informaci od serveru (vendorspecific information). Využít této funkce lze například tak, že využijeme doplňkovou funkčnost DHCP v závislosti na konkrétních implementacích na straně serveru a klienta. Pokud zůstává nevyplněn, či požadavek nezodpovězen, tak se samozřejmě nic neděje a proces pokračuje standardním způsobem.
duben 2010 10/17
Obr. č. 10 Detail Information-request zprávy u Windows 7 Pro doplnění stačí dodat, že náš DHCPv6 server běžící na Cisco IOS, tyto vendor-specific informace nijak nevyužívá a nedává v Reply zprávě klientům tuto informaci k dispozici. Opět prefix a jeho doba platnosti byla získána z Router advertisement. Výsledná adresa pak překvapivě ve výchozím stavu po Instalaci OS Windows 7 není ve formátu EUI-64. Microsoft ve výchozím stavu nepoužívá nebo nepreferuje EUI-64 identifikátor, definovaný v RFC 2373, ale náhodný identifikátor rozhraní. Implementace tohoto postupu je popsána v RFC 4941, ve zkratce lze říci, že generovaný identifikátor je náhodný a v čase může a nemusí být proměnlivý (dočasná vs. veřejná adresa). Potřeba generování náhodného a časem proměnlivého identifikátoru je jasná – bezpečnost. Zatímco EUI-64 identifikátor je neměnný a dává útočníkovi znát také MAC adresu, proměnlivý identifikátor nemá s MAC adresou spojitost a ztěžuje identifikaci uživatele na internetu. Pokud by však někdo trval na využívání EUI-64 adres, např. využitím PC jako serveru, je zde stále možnost, máte-li administrátorské oprávnění, stačí v příkazovém řádku vyvolat tento příkaz: netsh interface ipv6 set global randomizeidentifiers=disabled Klient tedy zastřešuje odchozí komunikaci ve výchozím stavu přes svou dočasnou adresu. Předpokládá se, že aplikace může sama určit, jestli použije dočasnou či veřejnou adresu.
4.3.
Stateless DHCP klient Linux
Pokud IPv6 podpora v systému není přítomna (lze ověřit příkazem ifconfig, zdali vidíme lokální linkové adresy), je třeba ji jednoduchým způsobem doinstalovat. Použitím příkazu modprobe ipv6 dojde k aktivaci IPv6 formou modulu, předpokládáme, že máme práva jako root. Pokud příkaz skončí chybovým hlášením, je třeba podporu IPv6 doplnit v jádře. Od verze jádra 2.6.12 (rok vydání 2005) IPv6 už není v experimentálním stavu a v následujících verzích je plně podporován. Doplňující funkci jakou je DHCPv6 klient, je třeba doinstalovat. Zvolili jsme opět ověřený dibbler-client. Příkazem apt-get install dibbler-client dojde k instalaci klienta, po instalaci jsme dotázáni, na jakém rozhraní hodláme klienta provozovat, volíme tedy např. eth0. duben 2010 11/17
Nyní je prakticky vše připraveno, pokud chceme konfigurovat klienta, tak v adresáři /var/lib/dibbler/ otevřeme client.conf, zde můžeme volit rozhraní, na kterém klient bude pracovat, v jakém režimu (stateless/stateful), nebo jaké parametry bude po serveru poptávat (ve výchozím stavu je to doména a adresa DNS serveru). Zde je ukázka konfiguračního souboru. log-level 6 log-mode short iface eth0 { stateless option lifetime option dns-server option domain }
# požadavek na bezestavovou konfiguraci # poskytnout časovač pro obnovu informací # poptávat adresu dns serveru # poptávat název domény
Příkazem dibbler-client run spustíme klienta v konzoli, příkazem dibbler-client status si lze ověřit, zdali klient opravdu pracuje. Klient funguje stejným způsobem jako nástavba pro Windows XP, probíhá výměna zpráv Information-Request a Reply. Prefix a jeho platnost je získána z Router Advertisement. Výslednou adresu si zobrazíme pomocí ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:16:76:69:01:dd inet6 addr: 2001:1::216:76ff:fe69:1dd/64 Scope:Global inet6 addr: fe80::216:76ff:fe69:1dd/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:904 errors:0 dropped:0 overruns:0 frame:0 TX packets:78 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:10 RX bytes:101952 (101.9 KB) TX bytes:21422 (21.4 KB) Memory:50100000-50120000 Identifikátor rozhraní je v naší verzi Linuxu vytvářen pomocí EUI-64. Pokud bychom trvali na dočasných dynamických adresách popsaných v RFC 4941, tak ty lze zařídit dodatečnou konfigurací souboru /etc/sysctl.conf, kde je třeba doplnit či modifikovat tyto řádky, abychom na eth0 povolili dočasné adresy: net.ipv6.conf.eth0.use_tempaddr = 2 net.ipv6.conf.all.use_tempaddr = 2 net.ipv6.conf.default.use_tempaddr = 2
5. Konfigurace stateful DHCPv6 na Cisco routeru Cisco routery nepodporují stateful DHCPv6 (podpora je pouze pro prefix delegation). Podpora je pouze pro výše nakonfigurovanou funkci stateless DHCPv6. Vycházíme z dokumentace k implementaci DHCPv6 [3] (Citace[13]): Restrictions for Implementing DHCP for IPv6: „The DHCPv6 implementation in Cisco IOS Release 12.3(4)T, Cisco IOS Release 12.0(32)S, and Cisco IOS 12.2(33)SRC support only stateless address assignment.“ Proto jsme hledali náhradní řešení a to je Dibbler server DHCPv6. duben 2010 12/17
6. Konfigurace stateful serveru na OS Linux Výběr alternativního stateful DHCP serveru padl na dibbler-server. Příkazem apt-get install dibbler-server dojde k instalaci serveru, po instalaci jsme dotázáni, na jakém rozhraní hodláme server provozovat, volíme tedy např. eth0. Pro konfiguraci serveru si otevřeme soubor /var/lib/dibbler/server.conf. log-level 8 # úrovně logování log-mode short preference 1 # preference serveru, 255=nejvyšší iface "eth0" { t1 1800-2000 t2 2700-3000 prefered-lifetime 3600 valid-lifetime 7200
# interface, na kterém bude server provozován # doba, po které klient započne obnovu adresu (renew) # doba, po které klient započne s hledáním alternativního serveru (rebind) # doba použití adresy, již vysvětleno výše # doba platnosti adresy, již vysvětleno výše
# přidělovat adresy z tohoto rozsahu class { pool 2001:2002:2003:2004::/64 } option dns-server 2000:3000::ff option domain vsb.cz option vendor-spec 5678-0x0002aaaa option ntp-server 2000::200,2000::201,2000::202 option time-zone CET } Vidíme, že lze pohodlně konfigurovat spousty atributů, jako doby platnosti adresy, časovače pro refresh apod. V této konfiguraci jsme si ukázkově přidali i parametry jako časové servery, časové pásmo nebo poskytujeme klientovi vendor-specific atribut. Server spustíme v konzoli příkazem dibbler-server run.
7. Stateful DHCPv6 klienti 7.1.
Stateful DHCP klienti na OS Linux a Windows XP
Upravíme konfigurační soubor client.conf, aby přijímal požadované informace, v našem případě doménu, DNS server, časový server a časové pásmo. Interface, na kterém klient běžel, byl eth0, pozor na to, že Windows ve výchozím stavu síťová rozhraní pojmenovává jinak než Linux. iface eth0 { ia option dns-server option domain option ntp-server option time-zone } Nyní stačí klienta zapnout, ve Windows připraveným zástupcem, v linuxu nám už známým příkazem v konzoli dibbler-client run. duben 2010 13/17
Obr. č. 11 Pakety zaznamenané na síti (stateful DHCP) Z Obr. č. 11 vidíme, že výměna zpráv už probíhá klasicky pomocí 4 zpráv, protože jsme nevyužili volby rapid-commit. Podrobně se podíváme do jednotlivých zpráv. Zpráva typu Solicit neboli žádost (Obr. č. 12), představuje obecný požadavek určený libovolnému serveru s určením, co po něm klient žádá. Obsah požadavku je v souladu s konfigurací klienta, poptávána je tedy IP adresa a doplňkové informace.
Obr. č. 12 Detail zprávy Solicit DHCP server na tuto zprávu reaguje zprávou Advertise (Obr. č. 13), čili nabízí parametry. Nejdůležitějším je IP adresa, složená s prefixu, který jsme zadali při konfiguraci a náhodně vygenerovaného identifikátoru uzlu. Pokud bychom v klientovi posílali volbu IAADDR, což je jakási nápověda pro server, jaký identifikátor uzlu by nám měl přidělit, server by k tvorbě adresy k danému prefixu použil tuto nápovědu, byla-li by tato adresa dostupná a z platného rozsahu, který daný DHCP server přiděluje a nikdo jej nepoužívá. Při nesplnění těchto podmínek dochází k přidělení náhodné adresy nebo je na řadě cache. Ta se dynamicky vytváří, aby server pokud možno klientům přiděloval stejnou adresu i příště. Dále ze zprávy Advertise vidíme, že server klientovi přidělil všechny parametry, o které žádal. Pozorujeme také, že server dává vědět klientovi s určitou prioritou preference (255= nejvyšší). Pokud by klient obdržel více zpráv typu Advertise, tak by vybral tu s nejvyšší prioritou.
duben 2010 14/17
Obr. č. 13 Detail zprávy Advertise Ve zprávě Request si klient požádá konkrétní server o přidělení parametrů. Zpráva Request na rozdíl od Solicit tedy obsahuje také ID serveru, kterému je určena a požadavek na adresu, kterou nám tento server nabídl. Poslední zprávou je zpráva Reply ze strany serveru, která je obsahově podobná zprávě Advertise s tím rozdílem, že adresu klientovi už nenabízí, ale potvrzuje, že si ji může vzít. Nyní máme přidělenou adresu a všechny další parametry potřebné pro komunikaci v síti. Níže vidíme výpis konfigurace protokolu IP systému Windows: Název hostitele . . . . . . . . . : PC-135-016 Primární přípona DNS. . . . . . . : vsb.cz Typ uzlu . . . . . . . . . . . . : hybridní Povoleno směrování IP . . . . . . : Ne WINS Proxy povoleno . . . . . . . : Ne Adaptér sítě Ethernet eth0: Přípona DNS podle připojení . . . : duben 2010 15/17
Popis . . . . . . . . . . . . . . : Realtek RTL8139 Family PCI Fast Ethernet NIC Fyzická Adresa. . . . . . . . . . : 00-30-4F-3B-6B-3B Protokol DHCP povolen . . . . . . : Ano Automatická konfigurace povolena : Ano IP Adresa automatické konfigurace : 169.254.47.56 Maska podsítě . . . . . . . . . . : 255.255.0.0 Adresa IP . . . . . . . . . . . . : 2001:2002:2003:2004:6937:f38b:2d63:27a7 Adresa IP . . . . . . . . . . . . : fe80::230:4fff:fe3b:6b3b%6 Výchozí brána . . . . . . . . . . : Servery DNS . . . . . . . . . . . : 2000:3000::ff 2000:3000::ff 2000:3000::ff Všimněme si, že chybí adresa výchozí brány (předávání adresy výchozí brány není ve specifikaci DHCPv6). Vzhledem k tomu, že během tohoto pokusu nebyl v topologii přítomen router, tak v sítí nebyly zaznamenávány žádné Router Advertisement pakety. Proto chybí adresa výchozí brány, která bývá součástí těchto zpráv.
7.2. Stateful DHCP klient Windows Vista/7 Zabudovaný DHCPv6 klient podporuje rovněž stateful autokonfiguraci. Rozdíl oproti použití dibbleru je, že nemusíme měnit konfiguraci, Windows se přizpůsobí samy. Pomocí M a O příznaků v Router advertisement, lze rychle zjistit, jaké parametry má klient poptávat, jelikož v topologii není přítomen router, tak to klient nemá jak zjistit, přesto si Windows dokázaly poradit.
Obr. č. 14 Pakety zaznamenané na síti (stateful DHCP) Obsahy paketu nejsou nijak odlišné oproti dibbler klientu, pozorujeme změnu pouze v tom, že dojde k výměně informací o výrobci, jelikož je teď na straně serveru povolena. Rovněž je zajímavé, že k přidělení adresy, resp. vyslání žádosti klienta dojde až na čtvrtý pokus, to je způsobeno pravděpodobně chybějícími Router advertisement zprávami, neboť klient stále očekává informaci o tom, jaký typ autokonfigurace použije. Proces můžeme označit za zbytečně zdlouhavý, byť funkční.
8. Resumé Celkově se přístup k zero-konfiguraci, kdy není nutné cokoliv nastavovat, v porovnání se starší verzí protokolu IP změnil. Stanice dokáží mezi sebou okamžitě komunikovat přes lokální linkové adresy. Routery v sítí vysílají Router Advertisement pakety, v nichž udávají prefix sítě, platnost a výchozí bránu do internetu (obvykle bráno jako adresa routeru, který takovou zprávu vysílá). Pro připojení k internetu nastává jeden obrovský nedostatek takového řešení, klienti neduben 2010 16/17
znají adresu DNS serveru, bez kterého si lze internet představit jen těžko, tím spíš v případě 128bit adres IPv6. Řešením této situace je opět nutnost použité DHCP serveru. DHCP server typu stateful je obdoba implementace DHCP serveru tak jak jej známe v IPv4. Server poskytuje klientovi téměř kompletní informace o síti, problémem je, že implementace serveru není vždy 100% možná, viz nemožnost rozjet server na Cisco IOS nebo dlouhá doba získání adres u klienta ve Windows Vista/7 v případě chybějících RA. Obrovský nedostatek vnímáme v tom, že klient neobdrží adresu brány, kterou si stejně musí vzít z router advertisement. V takovém případě se stateful server hodí pouze tam, kde potřebujeme mít kontrolu nad adresami klientů v síti. Jako vhodný doplněk stávajícího řešení spatřujeme stateless server, který se opírá o router advertisement pakety. Klient pomocí takového serveru obdrží pouze chybějící informace pro komunikaci v síti a internetu (doménu a DNS server především), adresu brány a prefix převezme z router advertisement. Kontrola nad identifikátorem rozhraní je přenechána stanicím, které mají případné kolize ošetřeny. Výhodou stateless serveru je kompatibilita a jednoduchá implementace, proto předpokládáme v budoucnu rozšíření tohoto typu serveru, vhodném především pro domácí využití.
9. Zdroje [1] Network Working Group. RFC3315. Načteno z http://tools.ietf.org/html/rfc3315#section-6 [2] Network Working Group. RFC4941. Načteno z http://tools.ietf.org/html/rfc4941 [3] Cisco. Implementing DHCP for IPv6 . Načteno z http://www.cisco.com/en/US/docs/ios/ipv6/configuration/guide/ip6-dhcp.html [4] Ezine. IPv6 Training (Cisco) - the Difference Between Stateful and Stateless DHCP. Načteno z http://ezinearticles.com/?IPv6-Training-(Cisco)---the-Difference-BetweenStateful-and-Stateless-DHCP&id=1325524 [5] HOW TO. DHCP Server Dibbler. Načteno z http://tldp.org/HOWTO/Linux+IPv6HOWTO/hints-daemons-dibbler.html [6] IPv6INT.net. Dibbler DHCPv6. Načteno z http://ipv6int.net/software/dibbler_dhcpv6.html [7] Mrugalski, T. Dibbler a portable DHCPv6. Načteno z http://klub.com.pl/dhcpv6/doc/dibbler-user.pdf [8] Network word. Windows 7 IPv6 Support. Načteno z http://www.networkworld.com/community/node/37947 [9] Obisopo, F. Autoconfiguration and DHCP for IPv6. Načteno z http://lacnic.net/documentos/lacnicxi/presentaciones/autoconf_and_dhcpv6.pdf [10] Pod-O-Lee. Popis fungování protokolu IPv6 v síti klubu Pod-O-Lee. Načteno z http://ipv6info.pod.cvut.cz [11] prolixium.com.. Stateful Autoconfiguration (DHCPv6). Načteno z http://www.prolixium.com/ipv6_autocfg/node8.html [12] NETWORKWORLD. Windows 7 IPv6 Support. Načteno z http://www.networkworld.com/community/node/37947 [13]Cisco Systems, Inc. Cisco IOS IPv6 Configuration Guide, Release 12.4 [online]. [s.l.] : [s.n.], 2006 [cit. 2010-04-30]. Implementing DHCP for IPv6, s. . Dostupné z WWW: . duben 2010 17/17