1 Ipv6 v Linuxu Obecně Účelem tohoto návodu je odpovědět na základní i zasvěcené otázky o IPv6 v operačním systému Linux. Tento návod poskytne čtenáři...
Ipv6 v Linuxu Obecně Účelem tohoto návodu je odpovědět na základní i zasvěcené otázky o IPv6 v operačním systému Linux. Tento návod poskytne čtenáři dostatek informací k tomu, aby mohl systém nainstalovat, zkonfigurovat a používat aplikace IPv6 na linuxových strojích. Informace o překladech naleznete na adrese http://tldp.org/HOWTO/Linux+IPv6-HOWTO/general-translations.html. Seznam změn najdete na http://tldp.org/HOWTO/Linux+IPv6-HOWTO/revision-history.html. Napsal a autorská práva vlastní Peter Bieringer. Autora je možno kontaktovat elektronickou poštou na adrese a také prostřednictvím jeho stránky http://www.bieringer.de/pb/.
Předmluva Pár slov úvodem:
Kolik verzí návodu k Linuxu & IPv6 koluje po Internetu? Včetně tohoto 3. Jestli se vám to zdá mnoho, omlouvám se. Linux IPv6 FAQ/návod (nepoužívaný)
První dokument na téma IPv6 napsal Eric Osborne a jmenoval se Linux IPv6 FAQ/HOWTO (http://www.linuxhq.com/IPv6/, prosím, používejte jej pouze z historických důvodů). Poslední verze 3.2.1 byla vydaná 14. července 1997. Prosím o pomoc: Zná-li někdo datum narození tohoto návodu, pošlete mi, prosím, e-mail (tuto informaci potřebuji do „historie “). IPv6 & Linux – návod (udržovaný)
Druhá verze se jmenuje IPv6 & Linux – HowTo (http://www.bieringer.de/linux/IPv6/), napsal jsem ji já (Peter Bieringer) v čistém HTML. Vznikla v dubnu 1997 a první anglická verze vyšla v červnu 1997. Budu pokračovat v její údržbě, avšak ve srovnání s Návodem k systému Linux IPv6, který právě čtete, bude pomalu zastarávat (ne však úplně). Návod k systému Linux IPv6 (tento dokument)
Vzhledem k tomu, že IPv6 & Linux – HowTo (http://www.bieringer.de/linux/IPv6/) je napsán v čistém HTML, není kompatibilní s The Linux Documentation Project (TLDP, http://www.tldp.org/). Koncem listopadu 2001 jsem (Peter Bieringer) byl požádán o přepracování IPv6 & Linux – HowTo (http://www.bieringer.de/linux/IPv6/) do SGML. Avšak vzhledem k nedostatečné návaznosti tohoto návodu (Future of IPv6 & Linux – HowTo, http://www.bieringer.de/linux/IPv6/IPv6-HOWTO/IPv6HOWTO-0.html#history ) a vzhledem k tomu, že IPv6 se stává standardem, rozhodl jsem se napsat nový dokument, který by obsahoval veškeré základní i detailní informace, jež budou platné i do budoucna. Současně jsem do jisté míry aktualizoval i obsah druhého návodu v pořadí IPv6 & Linux – HowTo (http://www.bieringer.de/linux/IPv6/).
Pojmy, vysvětlivky a zkratky Sí Base 10 (základ 10) Desítková soustava, číselné hodnoty se vyjadřují číslicemi 0–9. Base 16 (základ 16) Používá se v nižších i vyšších programovacích jazycích, také se nazývá hexadecimální (šest-náctková) soustava, číselné hodnoty se vyjadřují číslicemi 0–9 a znaky A–F (je jedno, zda malý-mi nebo velkými). Base 85 (základ 85) Číselné hodnoty se vyjadřují 85 různými číslicemi a znaky, takže řetězce jsou kratší. V praxi jsem však toto vyjádření ještě nikdy neviděl. Bit Nejmenší paměťová jednotka, nabývá hodnot 1 (zapnuto/pravda) nebo 0 (vypnuto/nepravda). Byte (bajt) Většinou 8 bitů (nikoli však nutně – viz starší počítačové systémy). Device (zařízení)
Zde je to hardware síťového připojení, viz také NIC. Dual homed host (počítač připojený ke dvěma sítím) Počítač připojený ke dvěma sítím tvoří uzel se dvěma síťovými rozhraními (na fyzickou nebo virtuální síť) určenými pro dvě různá připojení, který však mezi těmito rozhraními nepřenáší žádné pakety. Host (počítač) Obecně počítač s jedním připojením k síti. Obvykle má jedno aktivní síťové rozhraní, tj. Ethernet, nebo (nikoli „a“) PPP (point-to-point, dvoubodové spojení). Interface (rozhraní) Většinou totéž, co „zařízení“, viz také NIC. IP Header (IP hlavička) Hlavička IP paketu (každý paket v síti má hlavičku závislou na síťové vrstvě). Link (připojení) Připojení je přenosové médium pro přenos síťových paketů druhé vrstvy, například Ethernet, Token Ring, PPP, SLIP, ATM, ISDN, Frame Relay... Node (uzel) Uzel je tvořen počítačem nebo směrovačem. Octet (oktet, osmice) 8 bitů, zhruba totéž co „bajt“. Port Informace pro dispečera TCP/UDP (4. vrstva) o přenosu do vyšších vrstev. Protocol (protokol) Každá síťová vrstva většinou obsahuje pole protokolů, které jí pomáhá s dispečinkem přená-šených dat z vrstvy 2 (MAC, spojové) a 3 (IP, síťové) do vyšších vrstev. Router (směrovač) Směrovač je uzel se dvěma nebo více síťovými rozhraními (fyzických nebo virtuálních sítí ), který předává pakety mezi těmito rozhraními. Soket IP soket je definován zdrojovými a cílovými IP adresami a porty (a spojením). Stack (zásobník) Soubor síťových vrstev. Subnetmask (podmaska sítě) IP sítě používají bitové masky k oddělení lokálních a vzdálených sítí. Tunnel (tunel) Tunel je obvykle dvoubodové spojení pro přenos paketů s daty v různých protokolech, napří-klad tunel z IPv6 do IPv4.
Zkratky ACL Access Control List (seznam pro řízení přístupů). API Application Programming Interface (aplikační programové rozhraní ). ASIC Application Specified Integrated Circuit (integrovaný obvod pro aplikaci). BSD Berkeley Software Distribution (distribuce Unixu). CAN-Bus Controller Area Network Bus (systém fyzických sběrnic). ISP Internet Service Provider (poskytovatel připojení k Internetu).
KAME Projekt – společné úsilí šesti japonských společností o vytvoření volného zásobníku adres IPv6 a IPsec (pro IPv4 i pro IPv6) pro varianty systému BSD, http://www.kame.net/. LIR Local Internet Registry (lokální internetový registr). NIC Network Interface Card (síťová karta). RFC Request For Comments – množina technických a organizačních poznámek o Internetu. USAGI UniverSAl playGround for Ipv6 Project – práce, jejichž účelem je zajistit kvalitní zásobník protokolů IPv6 pro systémy Linux.
Další informace Pokračovací znak dlouhého řádku Kvůli lepší viditelnosti v souborech PDF a PS se pro signalizaci zalomených řádků používá speci-ální znak „ “.
Zástupné symboly V obecných příkladech někdy naleznete něco jako: <myipaddress>
Aby byly příkazové řádky nebo skripty ve vašem systému funkční, je nutno tyto zástupné symboly nahradit náležitým obsahem (pochopitelně bez znaků < a >). Výsledkem bude například: 1.2.3.4
Příkazy v shellu Příkazy proveditelné běžným uživatelem (nikoli root) začínají znakem $, např.: $ whoami
Příkazy proveditelné uživatelem root začínají znakem #, např.: # whoami
Předpoklady k užívání návodu Personální předpoklady Zkušenosti s unixovými nástroji
Měli byste být schopni používat hlavní unixové nástroje jako grep, awk, find, ... a znát jejich běžně používané volby na příkazovém řádku. Zkušenosti s teorií sítí
Měli byste něco vědět o vrstvách, protokolech, adresách, kabelech, zásuvných modulech atd. Pokud v této oblasti teprve začínáte, můžete si doplnit znalosti například z http://www.linux-ports.com/howto/intro_to_networking/. Zkušenosti s konfigurací IPv4
S konfigurací IPv4 byste určitě měli mít nějaké zkušenosti, jinak bude pro vás dost obtížné pocho-pit, o co jde. Zkušenosti s DNS
Také byste měli rozumět tomu, co je DNS (Domain Name System). Zkušenosti se strategiemi ladění v síti
Přinejmenším byste měli umět používat tcpdump a vědět, k čemu je. Jinak pro vás bude ladění na síti složité.
Hardware kompatibilní s operačním systémem Linux Určitě chcete experimentovat se skutečným hardwarem a ne jen usínat u čtení návodu.
Základy Co je IPv6? IPv6 je nový protokol pro vrstvu 3 (viz http://www.linuxports.com/howto/intro_to_networking/ c4412.htm#PAGE103HTML), který nahrazuje IPv4 (známý také pod jménem IP). IPv4 byl navržen už dávno (RFC 760/Internet Protocol z ledna 1980) a už od
jeho počátků se množily požadavky na zvět-šení počtu adres a rozšíření funkcionality. Nejnovějším protokolem RFC je RFC 2460/Internet Proto-col Version 6 Specification. Nejdůležitější změnou je v něm nový tvar hlavičky pro adresový prostor zvětšený z 32 bitů na 128 bitů. Vzhledem k tomu, že vrstva 3 je zodpovědná za přenos paketů na základě adres, musí obsahovat nové adresy IPv6 (zdrojovou i cílovou) podobně jako původně adre-sy IPv4. Další informace o historii IPv6 naleznete v odpovídajícím RFC například na adrese http://www.switch.ch/lan/ipv6/references.html.
Historie IPv6 v Linuxu Historie IPv6 v letech 1992, 1993 a 1994 je v hlavních rysech popsána v http://www.laynet works.com/IPv6.htm#CH3. Zbývá doplnit: podrobnější časové a věcné údaje ...
Počátek První kód, který se vztahoval k IPv6, doplnil do linuxového jádra 2.1.8 Pedro Roque v listopadu 1996. Byl založen na BSD API: diff -u --recursive --new-file v2.1.7/linux/include/linux/in6.h linux/include/linux/in6.h --- v2.1.7/linux/include/linux/in6.h Thu Jan 1 02:00:00 1970 +++ linux/include/linux/in6.h Sun Nov 3 11:04:42 1996 @@ -0,0 +1,99 @@ +/* + * Types and definitions for AF_INET6 + * Linux INET6 implementation + * + * Authors: + * Pedro Roque <******> + * + * Source: + * IPv6 Program Interfaces for BSD Systems + *
Tyto řádky byly okopírovány ze záplaty 2.1.8 (e-mailová adresa byla přepsána). Mezitím
Vzhledem k nedostatku pracovních sil nedržela implementace jádra krok s návrhy nových vydá-ní RFC. V říjnu 2000 byl v Japonsku zahájen projekt USAGI (http://www.linux-ipv6.org/), jehož cílem bylo implementovat veškerou chybějící nebo zastaralou podporu IPv6 v Linuxu. Projekt sle-doval průběžnou implementaci IPv6 ve FreeBSD v rámci projektu http:// www.kame.net/. Občas provedli porovnání se zdrojovým kódem jádra vanilla Linuxu.
Současnost Záplata USAGI je bohužel tak velká, že není možné ji zahrnout do zdrojového kódu linuxového jádra řady 2.4.x. Tato řada tak postrádá některá (nebo dokonce mnohá) rozšíření a ani neodpoví-dá současným návrhům RFC (viz http://www.ietf.org/ html.charters/ipv6-charter.html). To může způsobit určité problémy při součinnosti s jinými operačními systémy.
Budoucnost Projekt USAGI využívá probíhajícího vývoje jádra řady 2.5.x k tomu, aby do něj přidal veškerá svá rozšíření. Jádro řady 2.6.x už obsahuje úplnou a aktuální implementaci IPv6.
Jak vypadají adresy IPv6 Jak už jsme se zmínili, adresa IPv6 má 128 bitů. To je počet, který odpovídá velmi vysokým desítkovým číslům s 39 číslicemi: 2^128-1: 340282366920938463463374607431768211455
Taková čísla nejsou adresy, které bychom si byli schopni zapamatovat. Adresové schéma IPv6 je bitově orientováno (podobně jako IPv4, což ale není zcela zřejmé). Proto je lépe zapisovat tako-vá velká čísla hexadecimálně. V hexadecimálním tvaru odpovídají 4 bity (polovina bajtu, říká se jim také „nibble“) číslici nebo znaku v rozsahu 0–9 a a–f (10–15). Tento tvar redukuje délku adre-sy IPv6 na 32 znaků. 2^128-1: 0xffffffffffffffffffffffffffffffff
Tento tvar ještě úplně nevyhovuje (možná záměna nebo přehlédnutí hexadecimální číslice), takže návrháři IPv6 vymysleli hexadecimální tvar s dvojtečkou jako oddělovačem šestnáctic bitů. Navíc odstranili úvodní „0x“ (označení hexadecimálních hodnot používané v programovacích jazycích): 2^128-1: ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
Adresa pak může vypadat například takto (viz typy adres dále): 3ffe:ffff:0100:f101:0210:a4ff:fee3:9566
Úvodní nuly v každé šestnáctici lze pro zjednodušení vynechat: 3ffe:ffff:0100:f101:0210:a4ff:fee3:9566 -> ¬ 3ffe:ffff:100:f101:210:a4ff:fee3:9566
Jednu posloupnost šestnáctic, které obsahují pouze nuly, lze zapsat jako „::“. Avšak nejvýše jednu, při větším počtu by zápis už nebyl jednoznačný. 3ffe:ffff:100:f101:0:0:0:1 -> 3ffe:ffff:100:f101::1
Největší redukce lokální adresy IPv6: 0000:0000:0000:0000:0000:0000:0000:0001 -> ::1
Existuje také tzv. compact (soustava se základem 85) definovaná v RFC 1924 (vydaná 1. dubna 1996). V praxi jsem ji ještě neviděl, (nejspíš jde o aprílový žert ), ale zde je příklad: # ipv6calc --addr_to_base85 3ffe:ffff:0100:f101:0210:a4ff:fee3:9566 Itu&-ZQ82s>J%s99FJXT
Informace: Kalkulátor a konverzní program ipv6calc na adresový formát IPv6 naleznete zde: http://www.deepspace6.net/projects/ipv6calc.html.
Často kladené otázky (základní) Proč je následníkem IPv4 IPv6a nikoli IPv5?
V hlavičce IP adresy jsou první čtyři bity vyhrazeny verzi protokolu, takže teoreticky může být číslo protokolu 1 až 15: 4: se používá pro IPv4, 5: je vyhrazeno pro Stream Protocol (STP, RFC 1819), který nebyl nikdy používán. První volné číslo bylo 6 – a IPv6 byl na světě!
Adresy IPv6: proč tolik bitů? Při návrhu IPv4 se mnozí domnívali, že 32 bitů postačí pro celý svět. Stačily dodnes a možná bystačily ještě pár let. 32 bitů však nestačí k tomu, aby v budoucnosti byla každému síťovému zaří-zení přidělena síťová adresa. Když vezmete mobilní telefony, auta (včetně elektronických zařízenína sběrnici CAN-bus), topinkovače, ledničky, spínače osvětlení atd. Návrháři tedy zvolili 128 bitů, což je číslo čtyřikrát delší a 2^96krát větší než dnešní IPv4.Využitelnost je ovšem menší, než se může zdát. To proto, že v současném adresovém schématuje 64 bitů využito pro identifikátor rozhraní a zbývajících 64 bitů pro směrování. Vezmeme-li v úvahu současnou omezenou úroveň agregace (/48, /32, ...), je docela možné, že ani 128 bitůnebude stačit. Doufejme však, že už se toho nedožijeme.Další informace viz RFC 1715 a RFC 3194 .
Adresy IPv6: proč tak málo bitů? I když na Internetu jsou (možná) lidé (vím jen o Jimovi Flemingovi...), kteří už uvažují o IPv8 a IPv16, jejich návrhy mají ještě daleko ke schválení a k implementaci. 128 bitů je prozatím nej-lepší volbou z hlediska režie hlavičky a přenosu dat. Když vezmete minimální MTU (Maximum Transfer Unit) v IPv4 (576 oktetů) a v IPv6 (1 280 oktetů), délka hlavičky v IPv4 je 20 oktetů (mini-málně, s volbami může vzrůst až na 60) a v IPv6 je 48 oktetů (pevná). To je 3,4 % MTU v IPv4 a 3,8 % v IPv6. Znamená to, že režie je prakticky stejná. Víc bitů pro adresu by vyžadovalo větší hlavičky, a tedy větší režii. Uvážíme-li tedy maximální MTU u běžných připojení (např. Ethernet): 1 500 oktetů (ve speciálních případech: 9k oktetů při použití Jumbo Frame ). Používat 10 až 20 % přenášených dat v paketech vrstvy 3 pro adresy a jen zbytek pro užitečný náklad by nebylo dobré.
Typy adres Podobně jako v IPv4 lze adresy IPv6 rozdělit pomocí masky na síťovou část a počítačovou část. V IPv4 se ukázalo, že někdy by bylo příjemné, kdyby jednomu rozhraní bylo možné přidělit více než jednu IP adresu, každou pro jiný účel (aliasy, multicast). S ohledem na použitelnost i v budoucnosti šla IPv6 dál a umožňuje připojit ke každému rozhraní více než jednu adresu IPv6. V RFC neexistuje žádné omezení, pouze v implementaci zásobníku IPv6 (prevence útoků typu DoS – odmítnutí služby).Vzhledem k velkému počtu bitů určených pro adresu jsou v IPv6 využity některé úvodní bity natypy adres a doufejme, že nebudou dále rozděleny jako v případě tříd A, B a C v současné adre-se IPv4. Bity jsou tedy rozděleny na síťovou část (horních 64 bitů) a počítačovou část (spodních 64 bitů) kvůli snazší autokonfiguraci.
Adresy bez speciálního prefixu
Adresy lokálních počítačů
Toto je speciální loopback adresa podobná adrese „127.0.0.1“ v IPv4. V IPv6 má tvar: 0000:0000:0000:0000:0000:0000:0000:0001
anebo ve zkráceném tvaru: ::1
Pakety s touto zdrojovou nebo cílovou adresou by nikdy neměly opustit odesilatele.
Nespecifikovaná adresa Toto je speciální adresa „kohokoli“, resp. „0.0.0.0“ v IPv4. V IPv6 je to: 0000:0000:0000:0000:0000:0000:0000:0000
resp.: ::
Tyto adresy se většinou používají v připojení soketů (k libovolné adrese IPv6) nebo ve směrova cích tabulkách. Poznámka: Nespecifikovanou adresu nelze použít jako cílovou adresu.
Adresa IPv6 s vestavěnou adresou IPv4
Existují dva druhy adres, které obsahují adresu IPv4. IPv4-mapped IPv6 address
IP adresa kompatibilní s adresou IPv6 se někdy používá pro sokety vytvořené démonem aktuali-zovaným pro IPv6, avšak s vazbou pouze na adresu IPv4.Tyto adresy jsou definované speciálním prefixem o délce 96 (a.b.c.d je adresa IPv4): 0:0:0:0:0:ffff:a.b.c.d/96
anebo ve zkráceném tvaru: ::ffff:a.b.c.d/96
Například adresa IPv4 1.2.3.4 vypadá takto: ::ffff:1.2.3.4
Adresa IPv6 kompatibilní s IPv4
Používá se pro automatické tunelování (RFC 2893 ), které je nahrazeno tunelováním 6to4 (kapitola „Vytváření tunelů 6to4“). 0:0:0:0:0:0:a.b.c.d/96
nebo ve zkráceném tvaru: ::a.b.c.d/96
Síová část adresy (prefix) Návrháři definovali pouze některé typy adres a ponechali značný prostor pro budoucí definice plynoucí z nově vznikajících požadavků. Adresové schéma je definováno v RFC 2373, avšak exi-stuje už i nový návrh: ftp://ftp.ietf.org/internet-drafts/. Podívejme se nyní na různé typy prefixů (a tedy typů adres):
Lokální adresový typ pro připojení Speciální adresy, které budou platné pouze při napojení na rozhraní. Pokud by taková adresa byla cílovou adresou, paket by nikdy neprošel směrovačem. Používá se pro spojovací komunikaci, například: Je na tomto spojení někdo jiný? Má někdo speciální adresu (tj. hledá směrovač)? Začínají (kde „x“ je libovolný hexadecimální znak, obvykle „0“): fe8x: <-v současnosti se používá pouze tento.fe9x:feax:febx:
Adresa s tímto prefixem se po bezstavové autokonfiguraci nalézá na všech rozhraních s aktivova-ným IPv6 (v jiných případech obvykle nikoli).
Lokální adresový typ pro sí (angl. „site“) Adresy podobné RFC 1918 v IPv4 s tou výhodou, že je možno využít těchto 16 bitů pro nejvýše 65 536 podsítí. Srovnatelné s 10.0.0.0/8 v IPv4.Další výhoda: Vzhledem k tomu, že rozhraní IPv6 je možné přiřadit více než jednu adresu, jemožné přiřadit této síti kromě globální adresy také lokální adresu. Začíná od: fecx: <- nejčastěji používaná. fedx: feex:
fefx:
(kde „x“ je libovolný hexadecimální znak, obvykle „0“) Poznamenejme, že v současnosti probíhají diskuse o zrušení tohoto typu adres, neboť jsou s nímspojeny určité problémy. Další informace viz http://www.ietf.org/internet-drafts/.Podle mého skromného názoru laboratorní testy prokázaly, že tyto adresy vyhovují.
Globální adresový typ pro „(agregovatelné) globální jednosměrné vysílání” V současnosti existuje jediný definovaný globální adresový typ (první návrh nazvaný „provider based“ [založený na poskytovateli] byl před několika lety zamítnut: RFC 1884, některé zbytky po něm naleznete ve zdrojovém kódu starších linuxových jader). Začíná na („x“ jsou hexadecimální znaky): 2xxx: 3xxx:
Poznámka: Prefix „agregovatelný“ je v současných návrzích opuštěn. Jsou definovány některé další podtypy, viz: Testovací adresy 6bone
To byly první definované a používané globální adresy. Všechny začínají na: 3ffe:
Příklad: 3ffe:ffff:100:f102::1
Speciální testovací adresa typu 6bone, která nikdy nebude globálně jednoznačná, začíná na: 3ffe:ffff:
a můžete se s ní setkat ve starších příkladech, neboť kdyby v nich byla uvedena skutečná adresa, mohl by si ji někdo přenést do svého konfiguračního souboru, čímž by nechtěně vytvořil dupli-kát globálně jednoznačné adresy. Tím by mohly původnímu počítači vzniknout vážné problémy (např. by mohl dostávat odpovědní pakety na požadavek, který neodeslal). Vzhledem k tomu, že IPv6 se nyní tvoří, tento prefix nebude podporován a po 6. 6. 2006 bude pravděpodobně zcela odstraněn (podrobnosti viz RFC 3701 ). Adresy 6to4
Tyto adresy jsou určeny pro speciální tunelové mechanismy RFC 3056 a RFC 2893, kódování adres IPv4 a možné podsítě. Začínají na: 2002:
Například IP adresa 192.168.1.1/5 by vypadala takto: 2002:c0a8:0101:5::1
Z dané adresy IPv4 můžeme vytvořit tuto adresu pomocí krátkého příkazového řádku v shellu: ipv4=”1.2.3.4”; sla=”5”; printf “2002:%02x%02x:%02x%02x:%04x::1” `echo $ipv4 ¬ | tr “.” “ “` $sla
Viz také kapitoly „Vytváření tunelů 6to4“ a „Online informace“. Přiděleno poskytovatelem pro hierarchické směrování
Tyto adresy jsou delegovány poskytovatelům připojení k Internetu (ISP) a začínají na: 2001:
Prefixy pro hlavní (páteřní) ISP (někdy se nazývají LIR) jsou delegovány v hlavních regionálníchrejstřících (viz kapitola „On-line informace“) a dostávají prefix dlouhý 32 bitů.Zákazník dostává prefix dlouhý 48 bitů. Adresy vyhrazené pro příklady a dokumentaci
Pro příklady a dokumentaci jsou běžně vyhrazeny dvě oblasti adres: 3ffe:ffff::/32 2001:0DB8::/32 EXAMPLENET-WF
Tyto oblasti adres by měly být filtrované na základě zdrojových adres a pokud možno by NEMĚLY být směrovány na hraniční směrovače Internetu.
Adresy pro vícesměrový přenos (multicast) Vícesměrové adresy se používají pro související služby. Začínají vždy na (xy je rozsah):
ffxy:
Jsou rozděleny na rozsahy a typy:
Rozsahy vícesměrového přenosu Rozsah vícesměrového přenosu je parametr, který udává maximální vzdálenost, kam až může putovat vícesměrový paket od odesilatele. V současnosti jsou definovány následující oblasti (rozsahy): ffx1: lokální vzhledem k uzlu, paket nikdy neopustí uzel, ffx2: lokální vzhledem k připojení, pakety nikdy nejsou přeposílány směrovači, takže nikdy neopustí dané připojení, ffx5: lokální vzhledem k síti, paket nikdy neopustí síť, ffx8: lokální vzhledem k organizaci, paket nikdy neopustí organizaci (implementace není jednoduchá, je nutno použít směrovací protokol), ffxe: globální rozsah, další jsou rezerva. Vícesměrové typy
Existuje mnoho dalších definovaných a rezervovaných typů (podrobnosti viz RFC 2373). Například: Adresa všech uzlů: ID = 1h, adresuje všechny počítače na lokálním uzlu (ff01:0:0:0:0:0:0:1) nebo na připojení (ff02:0:0:0:0:0:0:1). Adresa všech směrovačů: ID = 2h, adresuje všechny směrovače na lokálním uzlu (ff01:0:0:0:0:0:0:2) nebo na připojení (ff02:0:0:0:0:0:0:2) nebo na lokální síti (ff05:0:0:0:0:0:0:2). Vyžádaná vícesměrová adresa připojení k lokálnímu uzlu
Speciální vícesměrová adresa používaná jako cílová adresa při „zjišťování souseda“, neboť na roz díl od IPv4 v IPv6 není protokol ARP. Adresa může vypadat například takto: ff02::1:ff00:1234
Prefix říká, že je to vícesměrová adresa připojení k lokálnímu uzlu. Přípona je generovaná z cílo-vé adresy. V tomto příkladu by měl být paket poslán na adresu „fe80::1234”, avšak síťový zásob-ník nezná fyzickou adresu spojové vrstvy (vrstvy 2). Nahradí horní 104 bity číslem „ff02:0:0:0:0:1:ff00::/104” a spodní 24 bity ponechá beze změny. Tato adresa se nyní použije „na připojení“, aby se nalezl odpovídající uzel, který musí poslat odpověď se svojí fyzickou adresou spojové vrstvy.
Výběrové (anycast) adresy Výběrové adresy jsou speciální adresy používané například k vyhledávání nejbližšího serveru DNS, serveru DHCP nebo podobných dynamických skupin. Adresy jsou přejaty z jednosměrného adresového prostoru (v současnosti agregovatelné globálně nebo v lokální síti). Mechanismus výběrové adresy (z pohledu klienta) zpracovávají dynamické směrovací protokoly. Poznámka: Výběrové adresy nemohou být zdrojovými adresami, používají se pouze jako cílové adresy. Výběrová adresa směrovače podsítě
Jednoduchým příkladem výběrové adresy je výběrová adresa směrovače podsítě. Předpokládejme, že uzel má následující globálně přidělenou adresu IPv6: 3ffe:ffff:100:f101:210:a4ff:fee3:9566/64 <- Adresa uzlu
Adresové typy (počítačová část) Pro autokonfiguraci a pro účely mobility bylo rozhodnuto, že ve většině běžných adresových typů se budou pro počítač používat spodní 64 bity. Každá podsíť tak může mít velké množství adres. Na tuto část je nutno pohlížet rozdílně.
Automaticky vypočtená (též nazývaná bezstavová) Při autokonfiguraci se počítačová část adresy vypočte tak, že se metodou EUI-64 provede kon-verze fyzické adresy rozhraní (pokud existuje) na jednoznačnou adresu IPv6. Neexistuje-li k tomu-to zařízení fyzická adresa (například u virtuálních zařízení), použije se něco jiného (například adresa IPv4 fyzické adresy fyzického rozhraní). Uvažujme znovu o prvním příkladu: 3ffe:ffff:100:f101:210:a4ff:fee3:9566
zde,
210:a4ff:fee3:9566
je počítačová část adresy a je vypočtena z fyzické adresy síťové karty: 00:10:A4:E3:95:66
pomocí http://standards.ieee.org/regauth/oui/tutorials/EUI64.html pro identifikátory EUI-48. Problém se zachováním soukromí u automaticky počítaných adres a jeho řešení
Vzhledem k tomu, že „automaticky vypočtená“ počítačová část je globálně jednoznačná (pokud ovšem výrobce síťových karet nepřiřadil stejnou adresu více než jedné kartě), je možné daného klienta zjistit, pokud nepoužívá nějakou formu zastoupení. To je známý problém a řešení bylo provedeno rozšířením definice v RFC 3041 (už existuje i nový návrh: ftp://ftp.ietf.org/internetdrafts/ ). Občas se na základě statické hodnoty náhodně vygene-ruje nová přípona. Poznámka: Tento způsob má smysl pouze v případě odchozích klientských spojení, zatímco u známých serverů se nepoužívá. Ruční nastavení
Pro server je pravděpodobně snazší zapamatovat si jednodušší adresy, což lze provést. Rozhraní můžeme přidat další adresu IPv6, tj.: 3ffe:ffff:100:f101::1
Pro ruční přípony jako „::1”, jak je uvedeno v předchozím příkladu, musí být 7. nejvýznamnější bit nastaven na 0 (bit označující globální/lokální u automaticky generovaného identifikátoru). Také některé jiné (jinak nevybrané) bitové kombinace jsou vyhrazeny pro výběrové adresy.
Délky prefixu pro směrování Ve fázi časného návrhu bylo plánováno používání plně hierarchického přístupu ke směrování, aby se co nejvíce zredukovaly velikosti směrovacích tabulek. Vzhledem k počtu stávajících směrova-cích položek IPv4 v hlavních směrovačích (> 104 tisíce v květnu 2001) se tak u hardwarových smě-rovačů (řízených ASIC, tj. „Application Specified Integrated Circuit”) měly snížit nároky na paměť pro ukládání směrovacích tabulek a měla se zvýšit rychlost (při menším počtu položek je vyhle-dávání rychlejší ). Viděno dnešním pohledem, hierarchické směrování bude navrhováno pro sítě pouze v rámci jed-noho poskytovatele připojení. V případě spojení zajišťovaných více ISP to není možné a také to není možné kvůli problému zvanému multi-homing (podrobnosti viz http://www.ietf.org/internet-drafts/ a http://arneill-py.sacramento.ca.us/ipv6mh/).
Délky prefixů (známé i pod jménem „síové masky“) Podobně jako v IPv4 existuje i zde směrování cesty po síti. Vzhledem k tomu, že standardní zápis síťové masky v případě 128 bitů nevypadá pěkně, návrháři využili schématu CIDR z Ipv4 (CIDR, RFC 1519), kterým se specifikuje počet bitů IP adresy pro směrování. Zápisu se také říká „lomítková“ (slash) notace. Příklad: 3ffe:ffff:100:1:2:3:4:5/48
Po expanzi: Síť: Síťová maska: 3ffe:ffff:0100:0000:0000:0000:0000:0000 ffff:ffff:ffff:0000:0000:0000:0000:0000
Hledání cesty Za normálních okolností (bez QoS, tj. požadavku na kvalitu služby) hledání ve směrovacích tabulkách dopadne tak, že cesta s nejvýznamnějším počtem adresových bitů znamená, že cesta s největší délkou prefixu se najde nejdříve. Když například jsou ve směrovací tabulce následující položky (seznam není úplný): 3ffe:ffff:100::/48 :: U 1 0 0 sit1 2000::/3 ::192.88.99.1 UG 1 0 0 tun6to4
Uvedená cílová adresa paketů IPv6 bude nasměrována přes dané zařízení 3ffe:ffff:100:1:2:3:4:5/48 -> nasměrováno přes zařízení sit1 3ffe:ffff:200:1:2:3:4:5/48 -> nasměrováno přes zařízení tun6to4
Kontrola systému na IPv6 Než začnete používat IPv6 na linuxovém počítači, musíte otestovat, zda je systém na práci s tímto adresovým schématem připraven. Možná pro to budete muset nejdříve něco udělat.
Jádro a IPv6 Současné linuxové distribuce už obsahují jádra s podporou IPv6. Tuto funkci zajišťuje samostatně překládaný modul, je však možné, že při spuštění systému nebyl automaticky zaveden. Nejaktuálnější informace naleznete na stránce http://www.bieringer.de/linux/IPv6/status/ IPv6+Linux-status-distributions.html. Poznámka Už byste neměli používat jádro 2.2.x, neboť skončila aktualizace těch částí, které zpraco vávají IPv6.
Jak zkontrolovat za chodu, zda jádro podporuje IPv6 Když chcete zkontrolovat, zda stávající jádro podporuje IPv6, podívejte se nejdříve do souboro-vého systému /proc . Musí v něm být položka: /proc/net/if_inet6
Krátký automatický test vypadá takto: # test -f /proc/net/if_inet6 && echo „Jádro podporuje IPv6”
Když test zhavaruje, je velmi pravděpodobné, že není zaveden modul IPv6.
Zkuste zavést modul IPv6
Modul IPv6 můžete zkusit zavést pomocí # modprobe ipv6
Budete-li úspěšní, můžete otestovat jeho zavedení pomocí následujícího kouzelného příkazového řádku: # lsmod |grep -w ‘ipv6’ && echo „Modul IPv6 úspěšně zaveden”
A test shora by nyní měl proběhnout úspěšně. Poznámka Bez zavedeného modulu IPv6 může jádro za určitých okolností zhavarovat. Automatické zavedení modulu
V konfiguračním souboru si můžete nastavit automatické zavádění modulu IPv6. Stačí přidat do konfi-guračního souboru zavaděče jádra (obvykle /etc/modules.conf nebo /etc/conf.modules) řádek: alias net-pf-10 ipv6 # automatické zavedení modulu IPv6
Naopak je možné automatické zaváděné modulu IPv6 zablokovat pomocí řádku: alias net-pf-10 off # zablokuj automatické zavedení modulu IPv6
Doplňující poznámka V jádru řady 2.6.x byl mechanismus zavádění jádra změněn. Nový konfigurační soubor musíte místo /etc/modules.conf pojmenovat /etc/modprobe.conf .
Kompilace jádra s podporou IPv6 Pokud oba výsledky shora byly negativní a jádro nemá podporu IPv6, máte na vybranou z těchto možností: Aktualizovat distribuci na takovou verzi, aby podporovala IPv6 již v základu (doporučeno začátečníkům). Přeložit nové jádro vanilla (snadné, pokud víte, jaké potřebujete volby). Znovu přeložit zdrojový kód jádra, které patří k vaší distribuci (což nemusí být zcela jednoduché). Přeložit jádro s USAGI. Rozhodnete-li se přeložit jádro, měli byste s tím mít už určitou zkušenost a také si přečíst http://www.tldp.org/HOWTO/Kernel-HOWTO.html. Nejaktuálnější srovnání mezi jádrem vanilla a rozšířeními jádra USAGI je k dispozici na http://www.bieringer.de/linux/IPv6/status/IPv6+Linux-status-kernel.html. Překlad jádra vanilla
Podrobnější pokyny k překladu jádra s podporou IPv6 naleznete na http://www.bieringer.de/ linux/IPv6/IPv6-HOWTO/IPv6HOWTO-2.html#kernel. Poznámka Je-li to možné, měli byste používat jádro řady 2.6.x nebo vyšší, neboť podpora IPv6 v řadě
2.4.x je pouze částečná a používání IPv6 v řadě 2.2.x je beznadějně zastaralé. Překlad jádra s rozšířeními USAGI
Stejně jako v případě jádra vanilla je překlad tohoto jádra možné doporučit jen pokročilým uži-vatelům, kteří jsou zběhlí v překladech jádra. Viz také projekt USAGI (http://www.linux-ipv6.org/faq.html) a http://www.deepspace6.net/docs/ best_ipv6_support.html.
Síová zařízení s podporou IPv6
Ne všechna stávající síťová zařízení mají už (nebo vůbec) schopnost přenášet pakety IPv6. Hlavní potíž je v tom, že kvůli struktuře síťových vrstev implementace jádra není paket IPv6 ve sku-tečnosti rozpoznáván podle čísla hlavičky (6 místo 4). Je rozpoznáván podle čísla protokolu vrstvy 2 transportního protokolu. Proto žádný transportní protokol, který nepoužívá toto číslo protokolu, nemůže přenášet pakety IPv6. Poznámka: Paket je přenášen spojovou vrstvou, avšak na straně pří-jemce nebude přenos fungovat (můžete si to vyzkoušet například programem tcpdump). Dosud známá „spojení neschopná přenosu IPv6“
Serial Line IP (SLIP, RFC 1055) by se nyní raději mělo nazývat SLIPv4, jména zařízení: slX. Parallel Line IP (PLIP), totéž jako SLIP, jména zařízení: plipX. ISDN se zapouzdřením rawip, jména zařízení: isdnX. Dosud známá „nepodporovaná spojení schopná přenosu IPv6“ ■
ISDN se zapouzdřením syncppp, jména zařízení: ipppX (návrh položky ipppd bude zahr-nut do obecnější vrstvy PPP v jádru řady 2.5.x).
Síové konfigurační nástroje IPv6 Jestliže provozujete jádro s podporou IPv6, avšak nemáte nástroje na konfiguraci IPv6, nedostanete se příliš daleko.
Balík síových nástrojů Balík síťových nástrojů obsahuje některé nástroje, např. ifconfig nebo route, které vám pomo-hou zkonfigurovat IPv6 na rozhraní. Podívejte se na výstup příkazů ifconfig -? nebo route -?, jest-li se u některé položky objeví IPv6 nebo inet6. Pokud ano, tento nástroj podporuje IPv6. Zjistíme to pomocí kouzelné formulky: # /sbin/ifconfig -? 2>& 1|grep -qw ‘inet6’ && echo “utilita ‘ifconfig’ ¬ podporuje IPv6”
Stejný test můžeme provést v případě route: # /sbin/route -? 2>& 1|grep -qw ‘inet6’ && echo “utilita ‘route’ podporuje ¬ IPv6”
Balík iproute Alexej N. Kuzněcov (člověk odpovědný za údržbu síťového kódu Linuxu) vytvořil množinu nástro-jů pro konfiguraci sítí prostřednictvím síťových zařízení. S touto množinou nástrojů dosáhnete vyšší funkcionalitu, než jakou nabízejí síťové nástroje, avšak není příliš dobře zdokumentovaná a vyža-duje odvážného ducha. # /sbin/ip 2>&1 |grep -qw ‘inet6’ && echo “utilita ‘ip’ podporuje IPv6”
Pokud se program /sbin/ip nenajde, vřele doporučuji nainstalovat balík iproute. Můžete jej získat z vaší linuxové distribuce (pokud jej obsahuje). Můžete si jej stáhnout v tar balíku z ftp://ftp.inr.ac.ru/ip-routing/ (zrcadlo chybí) a zkom-pilovat jej. Můžete se pokusit najít odpovídající balík RPM na http://rpmfind.net/linux/rpm2html/ search.php?query=iproute (někdy je doporučován překlad balíku SRPMS).
Programy pro testování a ladění podpory IPv6 Poté co jste si připravili systém s podporou IPv6, určitě budete chtít využít IPv6 pro komunikaci po síti. Nejdříve byste se měli naučit prohlížet pakety IPv6 nějakým „očichávacím“ programem. To je velmi důležité, neboť při ladění a odstraňování chyb vám to velmi usnadní diagnostiku.
ping IPv6 Tento program obvykle bývá součástí balíku iputils. Je určen pro jednoduchý přenosový test, který provede tak, že odešle pakety ICMPv6 pro vyžádání ozvěny a čeká na pakety ICMPv6 s odpovědí. Použití: # ping6 # ping6 # ping6 [-I <device>]
Příklad:
# ping6 -c 1 ::1 PING ::1(::1) from ::1 : 56 data bytes 64 bytes from ::1: icmp_seq=0 hops=64 time=292 usec --- ::1 ping statistics ---1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max/mdev = 0.292/0.292/0.292/0.000 ms
Doporučení: ping6 vyžaduje přímý přístup k soketům, musí tedy mít přístupová práva uživatele root. Pokud se tedy běžnému uživateli nedaří spustit ping6, příčiny mohou být dvě: ping6 není v uživatelské cestě (pravděpodobně proto, že obvykle bývá uložen v /usr/sbin ) -> doplnění cesty. Tento postup však nedoporučujeme. ping6 nepracuje správně zřejmě proto, že nemá přístupová práva uživatele root -> chmod u+s /usr/sbin/ping6. Specifikace rozhraní pro ping IPv6
Použije-li ping IPv6 lokální adresu připojení, jádro neví, přes které (fyzické nebo virtuální) zařízení musí poslat paket – každé zařízení má lokální adresu připojení. Takový pokus bude mít za následek výpis chybového hlášení: # ping6 fe80::212:34ff:fe12:3456 connect: Invalid argument
V tomto případě musíte specifikovat rozhraní dodatečně, viz: # ping6 -I eth0 -c 1 fe80::2e0:18ff:fe90:9205 PING fe80::212:23ff:fe12:3456(fe80::212:23ff:fe12:3456) from ¬ fe80::212:34ff:fe12:3478 eth0: 56 data bytes 64 bytes from fe80::212:23ff:fe12:3456: icmp_seq=0 hops=64 time =445 usec --- fe80::2e0:18ff:fe90:9205 ping statistics ---1 packets transmitted, 1 packets received, 0% packet loss round-trip ¬ min/avg/max/mdev = 0.445/0.445/0.445/0.000 ms
Ping6 na vícesměrové adresy
Zajímavý způsob, jak zjistit počítače s podporou IPv6 ve spojové vrstvě, je spustit ping6 s lokál-ní vícesměrovou adresou pokrývající všechny uzly: # ping6 -I eth0 ff02::1 PING ff02::1(ff02::1) from fe80:::2ab:cdff:feef:0123 eth0: 56 data bytes 64 bytes from ::1: icmp_seq=1 ttl=64 time=0.104 ms 64 bytes from fe80::212:34ff:fe12:3450: icmp_seq=1 ttl=64 time=0.549 ms (DUP!)
Na rozdíl od IPv4, kde mohou být odpovědi na všesměrovou adresu blokovány, v případě IPv6 takto postupovat nelze (s výjimkou lokálního firewallu IPv6).
traceroute6 IPv6 Tento program je obvykle součástí balíku iputils. Je podobný programu traceroute v IPv4, viz příklad: # traceroute6 www.6bone.net traceroute to 6bone.net (3ffe:b00:c18:1::10) from 3ffe:ffff:0000:f101::2, 30 hops max, 16 byte packets 1 localipv6gateway (3ffe:ffff:0000:f101::1) 1.354 ms 1.566 ms 0.407 ms 2 swi6T1-T0.ipv6.switch.ch (3ffe:2000:0:400::1) 90.431 ms 91.956 ms 92.377 ms 3 3ffe:2000:0:1::132 (3ffe:2000:0:1::132) 118.945 ms 107.982 ms 114.557 ms 4 3ffe:c00:8023:2b::2 (3ffe:c00:8023:2b::2) 968.468 ms 993.392 ms 973.441 ms 5 3ffe:2e00:e:c::3 (3ffe:2e00:e:c::3) 507.784 ms 505.549 ms 508.928 ms 6 www.6bone.net (3ffe:b00:c18:1::10) 1265.85 ms * 1304.74 ms
Poznámka Na rozdíl od některých novějších verzí IPv4, jež mohou používat pakety ICMPv4 s vyžá-dáním ozvěny a pakety UDP (implicitně), program traceroute6 může posílat pouze pake-ty UDP. Jak možná víte, pakety ICMP s vyžádáním ozvěny prozatím přijímají spíše firewally a ACL na směrovačích.
tracepath6 IPv6 Tento program je obvykle součástí balíku iputils. Je podobný programu traceroute6, sleduje cestu k danému místu určení a na této cestě vyhledává MTU, viz příklad: # tracepath6 www.6bone.net 1?: [LOCALHOST] pmtu 1480 1: 3ffe:401::2c0:33ff:fe02:14 150.705ms 2: 3ffe:b00:c18::5 267.864ms 3: 3ffe:b00:c18::5 asymm 2 266.145ms pmtu 1280 3: 3ffe:3900:5::2 asymm 4 346.632ms 4: 3ffe:28ff:ffff:4::3 asymm 5 365.965ms 5: 3ffe:1cff:0:ee::2 asymm 4 534.704ms 6: 3ffe:3800::1:1 asymm 4 578.126ms !N Resume: pmtu 1280
tcpdump IPv6 tcpdump je v Linuxu hlavním nástrojem na prohlížení paketů. Příklady najdete v dalším textu.Podpora IPv6 je součástí stávajících vydání verze 3.6.Aby se minimalizoval šum, pro filtrování paketů používá tcdump výrazy: icmp6: filtry pro provoz skupiny ICMPv6, ip6: filtry pro provoz skupiny IPv6 (včetně ICMPv6), proto ipv6: filtry pro provoz skupiny tunelů Ipv6-in-IPv4, not port ssh: potlačení výpisu paketů SSH v programu tcpdump, který běží na vzdáleném sezení SSH.
Také některé volby v příkazových řádcích jsou užitečné k zachycení a výpisu více informací z paketu, a to zejména z paketů ICMPv6: ■-s 512: zvětšení prohlížené délky (snap length) při prohlížení paketů na 512 bajtů, ■-vv: velmi upovídaný výstup, ■-n: nepřevádět adresy na jména, používá se, když nepracuje korektně reverzní DNS. ping IPv6 na skupinu adres 3ffe:ffff:100:f101::1 prostřednictvím lokálního spojení # tcpdump -t -n -i eth0 -s 512 -vv ip6 or proto ipv6 tcpdump: listening on eth0 3ffe:ffff:100:f101:2e0:18ff:fe90:9205 > 3ffe:ffff:100:f101::1: icmp6: echo request (len 64, hlim 64) 3ffe:ffff:100:f101::1 > 3ffe:ffff:100:f101:2e0:18ff:fe90:9205: icmp6: echo reply (len 64, hlim 64)
ping IPv6 na 3ffe:ffff:100::1 směrovaný přes tunel z IPv6 do IPv4
1.2.3.4 a 5.6.7.8 jsou koncové body tunelů (všechny adresy jsou příklady) # tcpdump -t -n -i ppp0 -s 512 -vv ip6 or proto ipv6 tcpdump: listening on ppp0 1.2.3.4 > 5.6.7.8: 2002:ffff:f5f8::1 > 3ffe:ffff:100::1: icmp6: echo request (len 64, hlim 64) (DF) (ttl 64, id 0, len 124) 5.6.7.8 > 1.2.3.4: 3ffe:ffff:100::1 > 2002:ffff:f5f8::1: icmp6: echo reply (len 64, hlim 61) (ttl 23, id 29887, len 124) 1.2.3.4 > 5.6.7.8: 2002:ffff:f5f8::1 > 3ffe:ffff:100::1: icmp6: echo request (len 64, hlim 64) (DF) (ttl 64, id 0, len 124) 5.6.7.8 > 1.2.3.4: 3ffe:ffff:100::1 > 2002:ffff:f5f8::1: icmp6: echo reply (len 64, hlim 61) (ttl 23, id 29919, len 124)
Programy s podporou IPv6 Současné distribuce už obsahují klienty a servery s tolik potřebnou aktivovanou podporou IPv6. Viz nejdříve http:// www.bieringer.de/linux/IPv6/status/IPv6+Linux-status-distributions.html. Pokud zde nic nenajdete, zkuste se ještě podívat na http://www.bieringer.de/linux/IPv6/status/IPv6+Linux -status-apps.html, zda byl program už převeden do tvaru IPv6 pod Linuxem. Některé rady k nej-častěji používaným programům naleznete i na adresách http://www.bieringer.de/linux/IPv6/IPv6HOWTO/IPv6-HOWTO-3.html a http://www.bieringer.de/linux/IPv6/IPv6-HOWTO/IPv6-HOWTO-4.html.
Klientské programy s podporou IPv6 (výběr) K provozování následujících testů je nutno mít systém aktivovaný pro IPv6 a některé příklady používají adresy, existuje-li spojení na 6bone.
Test DNS na rozlišování adres IPv6 Kvůli bezpečnostním aktualizacím v minulých letech by měl být na všech serverech DNS provo-zován novější software, který už rozumí (přechodnému) adresovému typu AAAA (novější jménem A6 ještě není v tomto okamžiku k dispozici, neboť ten musí mít podporu BIND9 a novějších a také dosud neexistující podporu kořenové domény IP6.ARPA). Jednoduchý test, zda systém umí zpra-covávat adresy IPv6, můžeme provést takto: # host -t AAAA www.join.uni-muenster.de
a mělo by se ukázat něco takového: www.join.uni-muenster.de. is an alias for tolot.join.uni-muenster.de. tolot.join.uni-muenster.de. has AAAA address 2001:638:500:101:2e0:81ff:fe24:37c6
Klienti telnet s podporou IPv6 K dispozici jsou klienti telnet s podporou IPv6. Jednoduchý test lze provést takto: $ telnet 3ffe:400:100::1 80 Trying 3ffe:400:100::1... Connected to 3ffe:400:100::1. Escape character is '^]'. HEAD / HTTP/1.0 HTTP/1.1 200 OK Date: Sun, 16 Dec 2001 16:07:21 GMT Server: Apache/2.0.28 (Unix) Last-Modified: Wed, 01 Aug 2001 21:34:42 GMT ETag: "3f02-a4db1b3e080" Accept-Ranges: bytes Content-Length: 2637 Connection: close Content-Type: text/html; charset=ISO-8859-1 Connection closed by foreign host.
Jestliže klient telnet nerozumí adrese IPv6 a řekne něco jako „cannot resolve hostname”, IPv6 není aktualizovaná.
Klienti ssh s podporou IPv6 openssh
Stávající verze openssh podporují IPv6. V závislosti na konfiguraci před kompilací existuje ve dvou verzích: bez implicitní ipv4: klient nejprve zkouší spojení IPv6, a když neuspěje, vrátí se k IPv4. s implicitní ipv4: implicitní spojení je IPv4, spojení IPv6 musí být nastaveno, viz následují-cí příklad: $ ssh -6 ::1 user@::1’s password: ****** [user@ipv6host user]$
Když váš klient nerozumí volbě „-6“, nemá aktivovanou podporu IPv6, což platí pro většinu balí-ků SSH ve verzi 1.
ssh.com
Klient a server SSH z ssh.com také umí zpracovávat adresy IPv6 a je zdarma pro všechny systémy Linux a FreeBSD bez ohledu na soukromé či komerční využití.
Internetové prohlížeče s podporou IPv6 Momentální stav internetových prohlížečů s podporou IPv6 je k dispozici na http://www. bieringer.de/linux/IPv6/status/IPv6 +Linux-status-apps.html#HTTP. Většina z nich ovšem ještě dosud nemá vyřešené některé problémy: Při používání proxy serveru, který je nastaven jen na IPv4, nebude tento server rozumět požadavku s IPv6 a odmítne jej. Řešení: aktualizace softwaru proxy serveru (viz dále). Automatická nastavení proxy ( *.pac) nelze rozšířit tak, aby zpracovával požadavky IPv6 odlišně (tedy nevyužíval proxy) kvůli jejich podstatě (jsou napsány v Java skriptu a zdro-jové texty jsou pevně zakódovány podobně jako ve zdrojovém kódu Maxilla). Ani starší verze nerozumějí URL se zakódovanou adresou IPv6, jako např. http://[3ffe:400:100::1]/(Toto URL pracuje pouze s prohlížečem s podporou IPv6!).Kterýkoli prohlížeč můžete otestovat pomocí uvedeného URL bez použití proxy. Testovací URL
Brouzdání po Internetu s využitím adres IPv6 je vhodné začít na http://www.kame.net/. Pokud je želva na těchto stránkách animovaná, spojení je uskutečněno prostřednictvím IPv6, jinak se želva nehýbe.
Serverové programy s podporou IPv6 Tato část návodu se týká spíše klientů. Proto jsou informace o serverech s podporou IPv6, např. sshd, httpd, telnetd atd., popsány v kapitole „Popis démonů s aktivovanými IPv6 “.
Často kladené otázky (Kontrola systému s podporou IPv6) Nástroje Otázka: Programem ping6 se nemohu dostat na lokální adresy
Chybová zpráva: „connect: Invalid argument“ Jádro neví, jaké fyzické nebo virtuální spojení chcete použít pro odeslání těchto paketů ICMPv6.Proto se vypíše toto chybové hlášení. Řešení: Uveďte např. rozhraní: ping6 -I eth0 fe80::2e0:18ff:fe90:9205
Viz také kapitola „ping IPv6“. Otázka: Jako normální uživatel se nemohu dostat k programům ping6 a traceroute6
Chybová zpráva: „icmp socket: Operation not permitted“Tyto nástroje vytvářejí speciální pakety ICMPv6 a odesílají je. To se provádí přímým využitím soketů v jádru. Sokety však může přímo využívat pouze uživatel root. Proto se normálnímu uživateli vypisuje tato zpráva. Řešení: Pokud je opravdu nutné, aby směli tyto nástroje používat všichni uživatelé, můžete pomo cí chmod u+s /path/to/program přidat suid bit, viz kapitola „ping Ipv6“. Není-li to nutné, může-te změnit skupinu programu například na „wheel“, zařadit do této skupiny ty, kteří mají mít právopoužívat tento program, a ostatním uživatelům pomocí chmod o-rwx / path/to/program zaká-zat spuštění programu. Anebo zkonfigurujte sudo tak, aby se aktivovala vaše bezpečnostní poli-tika.
Konfigurace síových zařízení Různá síová zařízení V daném uzlu existují různá síťová zařízení. Lze je seskupit do tříd: Připojené fyzicky, např. eth0, tr0. Existující virtuálně, např. ppp0, tun0, tap0, sit0, isdn0, ippp0.
Fyzicky připojená Fyzicky připojená rozhraní jako Ethernet nebo Token-Ring jsou normální zařízení a nevyžadují zvláštní zacházení.
Virtuálně připojená Virtuálně připojená rozhraní potřebují vždy zvláštní podporu.
Tunelová rozhraní IPv6-in-IPv4
Tato rozhraní se obvykle nazývají sitx. Jméno sit je zkratka vzniklá ze slov Simple Internet Tran-sition. Toto zařízení například umí zapouzdřovat pakety IPv6 do paketů IPv4 a posílat je tunelem do jiného koncového bodu. Rozhraní sit0 má speciální význam a nelze je používat pro tunely. Rozhraní PPP
Rozhraní PPP poskytuje podporu IPv6 démon PPP s aktivovanou podporou IPv6. Rozhraní ISDN HDLC
Podpora IPv6 pro HDLC se zapouzdřeným ip je zabudovaná v jádru. Rozhraní ISDN PPP
V rozhraních ISDN PPP (ippp) není podpora IPv6 aktivovaná jádrem a ani není známo, že by ji měl někdo v plánu vytvořit, neboť v jádru 2.5+ budou nahrazeny obecnější vrstvou rozhraní ppp. SLIP + PLIP
Jak jsme se už zmínili, tato rozhraní nepodporují přenos IPv6 (odesílání je možné, avšak určování příjemce nefunguje). Ether-tap
Zařízení Ether-tap (zařízení pro monitorování sítě) podporují IPv6 a také jsou bezstavově zkonfi-gurována. Před používáním je nutno zavést modul ethertap. Zařízení tun
Dosud jsem netestoval. ATM
01/2002: Dosud nejsou podporovány jádrem vanilla, zatímco rozšířeními USAGI ano. Ostatní
Zapomněl jsem na nějaké rozhraní?
Zapínání a vypínání rozhraní Rozhraní můžeme zapínat a vypínat dvěma způsoby.
Příkaz ip Použití: # ip link set dev up # ip link set dev down
Příklad: # ip link set dev eth0 up # ip link set dev eth0 down
Příkaz ifconfig Použití: # /sbin/ifconfig up # /sbin/ifconfig down
Příklad: # /sbin/ifconfig eth0 up # /sbin/ifconfig eth0 down
Konfigurace adres IPv6 Adresu IPv6 můžete na rozhraní konfigurovat různými způsoby. Můžete použít příkazy ifconfig nebo ip.
Výpis existujících adres IPv6 Nejdříve byste si měli ověřit, zda a které adresy IPv6 jsou už zkonfigurované (pravděpodobně automaticky v průběhu bezstavové autokonfigurace).
Příkaz ip Použití: # /sbin/ip -6 addr show dev
Příklad staticky zkonfigurovaného počítače: # /sbin/ip -6 addr show dev eth0
2: eth0: mtu 1500 qdisc pfifo_ fast qlen 100 inet6 fe80::210:a4ff:fee3:9566/10 scope link inet6 3ffe:ffff:0:f101::1/64 scope global inet6 fec0:0:0:f101::1/64 scope site
Příklad auto-konfigurovaného počítače: Zde vidíte některé automaticky zkonfigurované adresy IPv6 a jejich životnost. # /sbin/ip -6 addr show dev eth0 3: eth0: mtu 1500 qdisc pfifo_fast qlen 100 inet6 2002:d950:f5f8:f101:2e0:18ff:fe90:9205/64 scope global dynamic valid_lft 16sec preferred_lft 6sec inet6 3ffe:400:100:f101:2e0:18ff:fe90:9205/64 scope global dynamic valid_lft 2591997sec preferred_lft 604797sec inet6 fe80::2e0:18ff:fe90:9205/10 scope link
Příkaz ifconfig Použití:
# /sbin/ifconfig
Příklad (výstup je odfiltrován pomocí programu grep tak, aby vypsal pouze adresu IPv6): Zde vidíte různé adresy IPv6 s různými poli působnosti. # /sbin/ifconfig eth0 |grep “inet6 addr:” inet6 addr: fe80::210:a4ff:fee3:9566/10 Scope:Link inet6 addr: 3ffe:ffff:0:f101::1/64 Scope:Global inet6 addr: fec0:0:0:f101::1/64 Scope:Site
Přidání adresy IPv6 Přidání adresy IPv6 je podobné adresovému mechanismu „IP ALIAS“ při adresování rozhraní IPv4.
Příkaz ip Použití: # /sbin/ip -6 addr add /<prefixlength> dev
Příklad: # /sbin/ip -6 addr add 3ffe:ffff:0:f101::1/64 dev eth0
Odstranění adresy IPv6 Nepoužívá se často. Pozor při odstraňování neexistující adresy IPv6, u některých starších jader to vede k havárii systému!
Příkaz ip Použití: # /sbin/ip -6 addr del /<prefixlength> dev
Příklad: # /sbin/ip -6 addr del 3ffe:ffff:0:f101::1/64 dev eth0
Příkaz ifconfig Použití: # /sbin/ifconfig inet6 del /<prefixlength>
Příklad: # /sbin/ifconfig eth0 inet6 del 3ffe:ffff:0:f101::1/64
Konfigurace normální trasy IPv6
Chcete-li opustit svoje spojení a posílat pakety do světa Internetu IPv6, je nutno provést směro-vání. Pokud už máte na svém připojení směrovač s aktivovanými adresami IPv6, stačí přidat trasu IPv6.
Výpis existujících tras IPv6 Nejdříve byste si měli ověřit, zda a které adresy IPv6 jsou už zkonfigurované (pravděpodobně automaticky prostou autokonfigurací).
Příkaz ip Použití: # /sbin/ip -6 route show [dev <device>]
Příklad: # /sbin/ip -6 route show dev eth0 3ffe:ffff:0:f101::/64 proto kernel metric 256 mtu 1500 advmss 1440 fe80::/10 ff00::/8 default
proto kernel metric 256 mtu 1500 advmss 1440 proto kernel metric 256 mtu 1500 advmss 1440 proto kernel metric 256 mtu 1500 advmss 1440
Příkaz route Použití:
# /sbin/route -A inet6
Příklad (výstup je odfiltrován na rozhraní eth0). Na jednom rozhraní vidíte různé trasy IPV6 pro různé adresy. # /sbin/route -A inet6 |grep -w "eth0" 3ffe:ffff:0:f101 ::/64 :: UA 256 0 0 eth0 <- Interface route for global address fe80::/10 :: UA 256 0 0 eth0 <- Interface route for link-local address ff00::/8 :: UA 256 0 0 eth0 <- Interface route for all multicast addresses ::/0 :: UDA 256 0 0 eth0 <- Automatic default route
Přidání trasy IPv6 pomocí brány Většinou potřebné k dosažení vnější sítě s adresou IPv6 pomocí směrovače s aktivací IPv6 na spojení.
Příkaz ip Použití: # /sbin/ip -6 route add /<prefixlength> via ¬ [dev <device>]
Příklad: # /sbin/ip -6 route add 2000::/3 via 3ffe:ffff:0:f101::1
Zařízení může být potřebné také tehdy, je-li adresa IPv6 brány lokální. V následujícím příkladu je trasa přidána ke všem globálním adresám (2000::/3) pomocí brány ffe:ffff:0:f101::1. # /sbin/route -A inet6 add 2000::/3 gw 3ffe:ffff:0:f101::1
Odstranění trasy IPv6 pomocí brány Ručně se provádí zřídka, většinou síťovými konfiguračními skripty při vypínání systému (plném nebo po jednotlivých rozhraních).
Příkaz ip Použití: # /sbin/ip -6 route del /<prefixlength> via ¬ [dev <device>]
Příklad: # /sbin/ip -6 route del 2000::/3 via 3ffe:ffff:0:f101::1
Příkaz route Použití: # /sbin/route -A inet6 del /<prefixlength> [dev <device>]
Příklad na odstranění shora přidané trasy: # /sbin/route -A inet6 del 2000::/3 gw 3ffe:ffff:0:f101::1
Přidání trasy IPv6 pomocí rozhraní Používá se zřídka, většinou jen v případě jednoúčelového dvoubodového spojení.
Příkaz ip Použití: # /sbin/ip -6 route add /<prefixlength> dev <device> ¬ metric 1
Metrika 1 je zde použita kvůli kompatibilitě s metrikou v trase, neboť implicitní metrika v příkazu ip je 1024.
Příkaz route Použití: # /sbin/route -A inet6 add /<prefixlength> dev <device>
Příklad: # /sbin/route -A inet6 add 2000::/3 dev eth0
Odstranění trasy IPv6 pomocí rozhraní Ručně se provádí zřídka, většinou síťovými konfiguračními skripty při vypínání systému.
Příkaz ip Použití: # /sbin/ip -6 route del /<prefixlength> dev <device>
Příklad: # /sbin/ip -6 route del 2000::/3 dev eth0
Příkaz route Použití: # /sbin/route -A inet6 del /<prefixlength> dev <device>
Příklad: # /sbin/route -A inet6 del 2000::/3 dev eth0
Často kladené otázky k trasám IPv6 Podpora implicitní trasy IPv6 Jednou z idejí IPv6 je hierarchické směrování, proto je ve směrovačích nutných méně položek. V současných jádrech Linuxu jsou určité problémy: Klienti (kteří nesměrují pakety!)
Klient může nastavit implicitní trasu pomocí prefixu „::/0“, toto směrování mohou zadat i při auto-konfiguraci například pomocí radvd na spojení, jak je zřejmé z následujícího příkladu: # ip -6 route show | grep ^default default via fe80::212:34ff:fe12:3450 dev eth0 proto kernel metric 1024 expires 29sec mtu 1500 advmss 1440
Přeposílání paketů směrovači
Současná jádra Linuxu (přinejmenším <= 2.4.17) nepodporují implicitní trasy. Můžete je nastavit, avšak vyhledávání trasy zhavaruje v okamžiku, kdy by měl být paket přeposlán (což je běžná činnost směrovače). Z toho důvodu lze v současnosti nastavit implicitní směrování pouze pomocí prefixu globální adresy 2000::/3. Poznámka
Opatrně při implicitním směrování bez filtrování adresy na krajních směrovačích. Jinak se vícesměrový přenos nebo přeprava v místní síti dostane ven.
Zjišování sousedů Zjišťování sousedů je následníkem protokolu ARP (Address Resolution Protocol) v IPv4. Můžete získávat informace o svých sousedech a navíc můžete tyto položky nastavovat a rušit. Jádro sle-duje úspěšnou detekci souseda (jako ARP v IPv4). Do tabulky sousedů můžete zasahovat pomo-cí příkazu ip.
Výpis sousedů pomocí ip Zjištěné a zkonfigurované sousedy IPv6 můžete vypsat následujícím příkazem: # ip -6 neigh show [dev <device>]
V následujícím příkladu vidíme jednoho souseda, kterým je směrovač v dosahu: # ip -6 neigh show fe80::201:23ff:fe45:6789 dev eth0 lladdr 00:01:23:45:67:89 router nud reachable
Provádění změn v tabulce sousedů příkazem ip Ruční přidání položky Následujícím příkazem můžete přidat do tabulky položku: # ip -6 neigh add lladdr dev <device>
Příklad: # ip -6 neigh add fec0::1 lladdr 02:01:02:03:04:05 dev eth0
Ruční zrušení položky Položku lze do tabulky nejen přidat, nýbrž i odstranit: # ip -6 neigh del lladdr dev <device>
Příklad: # ip -6 neigh del fec0::1 lladdr 02:01:02:03:04:05 dev eth0
Pokročilejší nastavení Nástroj ip není příliš dobře zdokumentován, avšak je velmi silný. Podrobnosti viz on-line nápo-věda: # ip -6 neigh help Usage: ip neigh { add | del | change | replace } { ADDR [ lladdr LLADDR ] [ nud { permanent | noarp | stale | reachable } ] | proxy ADDR } [ dev DEV ] ip neigh {show|flush} [ to PREFIX ] [ dev DEV ] [ nud STATE ]
Vypadá to, jako by některé volby byly platné jen pro IPv4 ... můžete-li přispět informacemi o vol-bách a pokročilejším použití, prosím, pošlete je.
Konfigurace tunelů IPv6-in-IPv4 Chcete-li opustit svoje připojení a kolem sebe nemáte síť s podporou IPv6, k dosažení Internetus IPv6 potřebujete tunel typu IPv6-in-IPv4.Existují určité druhy tunelových mechanismů a také některé možnosti nastavení.
Typy tunelů
Existuje několik možností, jak posílat pakety IPv6 přes připojení IPv4.
Statický dvoubodový tunel: 6bone Dvoubodový tunel je jednoúčelový tunel do koncového bodu, který ví o síti IPv6 (kvůli zpětné-mu směrování) a zná adresu IPv4 koncového bodu tunelu. Je definován v RFC 2893. Požadavky: Adresa IPv4 lokálního koncového bodu tunelu musí být statická, globálně jednoznačná a dosažitelná z koncového bodu cizího tunelu. Musíte mít přiřazen prefix IPv6 (viz registr 6bone). Koncový bod cizího tunelu, který je schopen nasměrovat váš prefix IPv6 na váš lokální koncový bod tunelu (většinou vyžaduje vzdálenou ruční konfiguraci).
Automatické vytváření tunelů
K automatickému vytvoření tunelu dojde, když je některý uzel přímo napojen na jiný uzel, jehož adresu IPv4 získal už dříve.
Vytváření tunelů 6to4 Vytváření tunelů 6to4 (RFC 3056) využívá jednoduchého mechanismu. Každý uzel s globálně jednoznačnou adresou IPv4 může být koncovým bodem tunelu 6to4 (není-li provoz blokován firewallem). Vytváření tunelů 6to4 většinou není obousměrné. Tento případ lze rozdělit na tunelování jedním nebo druhým směrem. Speciální adresa IPv6 tedy určuje, že tento uzel bude pro napojení na globální síť IPv6 využívat tunel 6to4. Generování prefixu 6to4
Adresa 6to4 je definovaná takto (schéma je převzato z RFC 3056): | 3+13 | 32 | 16 | 64 bits | +---+------+-----------+--------+--------------------------------+ | FP+TLA | V4ADDR | SLA ID | ID rozhraní | | 0x2002 | | | | +---+------+-----------+--------+--------------------------------+
FP a TLA mají dohromady (16 bitů) hodnotu 0x2002. V4ADDR je jednoznačná adresa IPv4 uzlu (v hexadecimálním tvaru). SLA je identifikátor podsítě (může existovat 65 536 podsítí) a lze jej použít pro lokální strukturu sítí. V případě brány je tento prefix generován pomocí SLA „0000“ a přípony „::1“ (nikoli nutně, stačí, když je lokální) a přiřadí se rozhraní tunelu 6to4. Poznamenejme, že Microsoft Windows používají V4ADDR také jako příponu. Tunel 6to4 směrem ven
Uzel musí vědět, kterému koncovému bodu cizího tunelu má poslat pakety IPv6 zabalené do paketů IPv4. V začátcích tunelů 6to4 byly definovány jednoúčelové přijímací směrovače pro ode-sílání ven. Seznam směrovačů viz http://www.kfu.com/~nsayer/6to4/. Nyní lze odesílací směrovače 6to4 nalézt automaticky pomocí výběrové adresy 192.88.99.1, kterou směrovací protokoly zpracují na pozadí, podrobnosti viz RFC 3068. Tunel 6to4 směrem dovnitř
Tunel směrem dovnitř (6bone -> váš uzel aktivovaný pro 6to4) není pevný a může se pro různé cizí počítače lišit v závislosti na tom, komu byly původní pakety odeslány. Existují dvě možnosti: Cizí počítač použije 6to4 a pošle paket přímo zpět na váš uzel (viz níže). Cizí počítač posílá pakety zpět do globální sítě IPv6 a předávací směrovač vytváří automa-tický tunel zpět na váš uzel v závislosti na dynamickém směrování. Možnosti provozu 6to4
Z 6to4 do 6to4: normální přímý tunel mezi dvěma počítači s podporou 6to4. Z 6to4 do non-6to4: posílá se tunelem směrem ven. Z non-6to4 do 6to4: posílá se tunelem směrem dovnitř.
Výpis existujících tunelů
Příkaz ip
Použití: # /sbin/ip -6 tunnel show [<device>]
Příklad: # /sbin/ip -6 tunnel show sit0: ipv6/ip remote any local any ttl 64 nopmtudisc sit1: ipv6/ip remote 195.226.187.50 local any ttl 64
Příkaz route Použití: # /sbin/route -A inet6
Příklad (výstup je filtrován tak, aby se vypisovaly pouze tunely vedoucí virtuálním rozhraním sit0): # /sbin/route -A inet6 | grep "\Wsit0\W*$" ::/96 :: U 256 2 0 sit0 2002::/16 :: UA 256 0 0 sit0 2000::/3 ::193.113.58.75 UG 1 0 0 sit0 fe80::/10 :: UA 256 0 0 sit0 ff00::/8 :: UA 256 0 0 sit0
Nastavení dvoubodových tunelů Dvoubodové tunely můžeme přidávat nebo rušit třemi různými způsoby.Užitečné doplňující informace o nastavování tunelů příkazem ip naleznete na adrese http://www.deepspace6.net/docs/iproute2tunnel-en.html.
Přidání dvoubodového tunelu
Příkaz ip
Metoda používaná pro přidávání malého počtu tunelů. Použití pro vytvoření tunelového zařízení (které však potom nezůstane zapnuté, a musí být uve deno také TTL, neboť implicitní hodnota je 0): # /sbin/ip tunnel add <device> mode sit ttl remote ¬ local
Použití (obecný příklad pro tři tunely): # /sbin/ip tunnel add sit1 mode sit ttl remote ¬ local # /sbin/ip link set dev sit1 up # /sbin/ip -6 route add <prefixtoroute1> dev sit1 metric 1 # /sbin/ip tunnel add sit2 mode sit ttl ¬ local # /sbin/ip link set dev sit2 up # /sbin/ip -6 route add <prefixtoroute2> dev sit2 metric 1 # /sbin/ip tunnel add sit3 mode sit ttl ¬ local # /sbin/ip link set dev sit3 up # /sbin/ip -6 route add <prefixtoroute3> dev sit3 metric 1
Příkazy ifconfig a route (neschválené)
Tento způsob přidávání tunelů nelze příliš doporučit, neboť je poněkud podivný. Přidáváte-li jeden tunel, problém nenastane, avšak nastavíte-li více než jeden, první nejdou zavřít tak, aby ostatní zůstaly v činnosti. Použití (obecný příklad pro tři tunely): # /sbin/ifconfig sit0 up # /sbin/ifconfig sit0 tunnel # /sbin/ifconfig sit1 up # /sbin/route -A inet6 add <prefixtoroute1> dev sit1 # /sbin/ifconfig sit0 tunnel # /sbin/ifconfig sit2 up # /sbin/route -A inet6 add <prefixtoroute2> dev sit2 # /sbin/ifconfig sit0 tunnel # /sbin/ifconfig sit3 up # /sbin/route -A inet6 add <prefixtoroute3> dev sit3
Důležité Tyto příkazy NEPOUŽÍVEJTE, neboť toto nastavení implicitně aktivuje „automatické tunelování“ odkudkoli z Internetu, což je neobhajitelné riziko. Pouze příkaz route
Tunely také můžete nastavit způsobem Non Broadcast Multiple Access (NBMA), což je jednoduchý způsob, jak přidat mnoho tunelů současně. Žádný z nich však nemůže být číslován (což ovšem není požadovaná vlastnost). Použití (obecný příklad pro tři tunely): # /sbin/ifconfig sit0 up # /sbin/route -A inet6 add <prefixtoroute1> gw ¬ :: dev sit0 # /sbin/route -A inet6 add <prefixtoroute2> gw ¬ :: dev sit0 # /sbin/route -A inet6 add <prefixtoroute3> gw ¬ :: dev sit0
Důležité: Tyto příkazy NEPOUŽÍVEJTE, neboť toto nastavení implicitně aktivuje „automatické tunelování“ odkudkoli z Internetu, což je neobhajitelné riziko.
Odstraňování dvoubodových tunelů Manuálně se tento způsob nepoužívá často, avšak používají jej skripty pro čisté ukončení nebo restart konfigurace IPv6. Příkaz ip
Použití pro odstranění tunelového zařízení: # /sbin/ip tunnel del <device>
Použití (obecný příklad pro tři tunely): # /sbin/ip -6 route del <prefixtoroute1> dev sit1 # /sbin/ip link set sit1 down # /sbin/ip tunnel del sit1 # /sbin/ip -6 route del <prefixtoroute2> dev sit2 # /sbin/ip link set sit2 down # /sbin/ip tunnel del sit2 # /sbin/ip -6 route del <prefixtoroute3> dev sit3 # /sbin/ip link set sit3 down # /sbin/ip tunnel del sit3
Příkazy ifconfig a route (neschválený, protože jejich použití není žádná legrace)
Nejen že vytváření je podivné, ale podivné je i ukončení ... tunely musíte odstraňovat v obráce-ném pořadí, což znamená, že posledně vytvořený musí být odstraněn jako první. Použití (obecný příklad pro tři tunely): # /sbin/route -A inet6 del <prefixtoroute3> dev sit3 # /sbin/ifconfig sit3 down # /sbin/route -A inet6 del <prefixtoroute2> dev sit2 # /sbin/ifconfig sit2 down # /sbin/route -A inet6 add <prefixtoroute1> dev sit1 # /sbin/ifconfig sit1 down # /sbin/ifconfig sit0 down
Příkaz „route”
Stejně se odstraňují normální trasy IPv6. Použití (obecný příklad pro tři tunely):
# /sbin/route -A inet6 del <prefixtoroute1> gw ¬ :: dev sit0 # / sbin/route -A inet6 del <prefixtoroute2> gw ¬ :: dev sit0 # /sbin/ route -A inet6 del <prefixtoroute3> gw ¬ :: dev sit0 # /sbin/ ifconfig sit0 down
Číslované dvoubodové tunely Někdy potřebujete zkonfigurovat dvoubodové tunely s adresami IPv6 jako v případě IPv4. To je možné pouze s prvním (ifconfig +route – zamítnutým) a třetím (ip+route) nastavením tunelů. V takových případech můžete k rozhraní tunelu přidat adresy IPv6, jak je zřejmé z konfigurace rozhraní.
Nastavení tunelů 6to4 Všimněte si, že podpora tunelů 6to4 v jádru vanilla řady 2.2.x chybí (další informace viz kapitola „Jádro a IPv6“). Také si všimněte, že délka prefixu pro adresu 6to4 je kvůli sítím 16, všechny ostatní počítače aktivované pro 6to4 jsou na téže vrstvě 2.
Přidání tunelu 6to4 Nejprve musíte vypočítat prefix 6to4 z lokálně přiřazené globálně směrovatelné adresy IPv4 (nemá-li váš počítač žádnou globálně směrovatelnou adresu IPv4, ve zvláštních případech je na hraničních bránách možný NAT): Předpokládejme, že vaše IPv4 adresa je: 1.2.3.4
vygenerovaný prefix 6to4 bude: 2002:0102:0304::
Lokální brány 6to4 by vždy měly mít (není to však nutné, můžete zvolit libovolnou lokální příponu, bude-li vám to vyhovovat) přiřazenou příponu „::1“, proto bude vaše lokální adresa 6to4: 2002:0102:0304::1
Pro automatickou generaci můžete použít například: ipv4=”1.2.3.4”; printf “2002:%02x%02x:%02x%02x::1” `echo $ipv4 | tr “.” “ “`
Nyní tedy existují dva způsoby nastavení tunelů 6to4. Příkaz ip a jednoúčelové tunelové zařízení
V současné době je to doporučovaný způsob (je nutno specifikovat TTL, protože implicitní hodnota je 0). Vytvoření nového tunelového zařízení: # /sbin/ip tunnel add tun6to4 mode sit ttl remote any local
Zapojte rozhraní: # /sbin/ip link set dev tun6to4 up
K rozhraní přidejte lokální adresu 6to4 (Poznámka: Délka prefixu 16 je důležitá!): # /sbin/ip -6 addr add /16 dev tun6to4
Ke globální síti IPv6 přidejte pomocí výběrové adresy IPv4 všech směrovačů 6to4 (implicitní) trasu: # /sbin/ip -6 route add 2000::/3 via ::192.88.99.1 dev tun6to4 metric 1
Bylo oznámeno, že některé verze ip (např. v SuSE Linuxu 9.0) nepodporují adresy IPv6 kompa-tibilní s IPv4 pro brány, v takovém případě musí být použita odpovídající adresa IPv6: # /sbin/ip -6 route add 2000::/3 via 2002:c058:6301::1 dev tun6to4 metric 1
Příkazy ifconfig a route a obecné tunelové zařízení „sit0“ (neschváleno)
Toto nyní není schváleno, protože používání obecného tunelu zařízení sit0 neumožňuje filtraci po jednotlivých zřízeních. Zapojení obecného tunelového rozhraní sit0: # /sbin/ifconfig sit0 up
K rozhraní přidejte lokální adresu 6to4:
# /sbin/ifconfig sit0 add /16
Ke globální síti IPv6 přidejte pomocí výběrové adresy IPv4 na všechna předání 6to4 (implicitní) trasu: # /sbin/route -A inet6 add 2000::/3 gw ::192.88.99.1 dev sit0
Odstranění tunelu 6to4 Příkaz ip a jednoúčelové tunelové zařízení
Odstranění všech tras pomocí tohoto jednoúčelového tunelového zařízení: # /sbin/ip -6 route flush dev tun6to4
Zavřete rozhraní: # /sbin/ip link set dev tun6to4 down
Odstraňte vytvořená tunelová zařízení: # /sbin/ip tunnel del tun6to4
Příkazy ifconfig a route a obecné tunelové zařízení „sit0“ (neschváleno) Odstraňte (implicitní) trasu pomocí tunelového rozhraní 6to4: # /sbin/route -A inet6 del 2000::/3 gw ::192.88.99.1 dev sit0
Odstraňte lokální adresu 6to4 na rozhraní: # /sbin/ifconfig sit0 del /16
Vypněte obecné tunelové zařízení (s tím opatrně, možná se ještě používá...) # /sbin/ifconfig sit0 down
Poznámka
Kapitola o konfiguraci tunelů IPv4-in-IPv6 bude doplněna později. V daném okamžiku se tyto tunely používají spíše v testovacím prostředí; vypadá to, že v současné době chybí podpora pro Linux (03/2004). Informace mezitím získáte v RFC 2473.
Nastavení jádra v souborovém systému /proc Poznámka Převážná část této kapitoly pochází ze souboru ip-sysctl.txt , který je součástí stávající-ho zdrojového kódu v adresáři Documentation/networking. Díky Pekku Savolovi za údržbu té části souboru, která se týká IPv6. Text této kapitoly je víceméně zkopírován z tohoto dokumentu.
Jak zacházet se souborovým systémem /proc Příkazy cat a echo Nejjednodušší přístup do souborového systému /proc vám umožní příkazy cat a echo, musí však splňovat určité požadavky: ■ Souborový systém /proc musí být aktivován v jádru, tj. při překladu musí být nastaven tento přepínač: CONFIG_PROC_FS=y ■
Souborový systém /proc je nutno nejdříve připojit, což můžeme otestovat takto: # mount | grep “type proc” none on /proc type proc (rw)
■
K souborovému systému /proc musíte mít přístupová práva ke čtení, někdy i k zápisu (což obvykle má pouze uživatel root).
Obvykle se zapisuje pouze do položek v /proc/sys/*, z ostatních je možno jen číst a slouží pouze k získávání informací. Přečtení hodnoty
Hodnotu položky můžete přečíst pomocí cat: # cat /proc/sys/net/ipv6/conf/all/forwarding 0
Nastavení hodnoty
Novou hodnotu můžete nastavit (je-li možno do položky zapisovat) pomocí příkazu echo: # echo “1” >/proc/sys/net/ipv6/conf/all/forwarding
Příkaz sysctl
Program sysctl zajišťuje přístup k přepínačům jádra a patří k moderním nástrojům. Lze jej použít i tehdy, když souborový systém není připojen. Máte však přístup pouze k /proc/sys/*! Program sysctl je součástí balíku procps (v systému Red Hat Linux). ■ Rozhraní sysctl musí být aktivováno v jádru, tj. při kompilaci musel být zapnut přepínač: CONFIG_SYSCTL=y
Čtení hodnoty
Nyní můžete přečíst hodnotu: # sysctl net.ipv6.conf.all.forwarding net.ipv6.conf.all.forwarding = 0
Nastavení hodnoty
Novou hodnotu lze nastavit (je-li možno do položky zapisovat): # sysctl -w net.ipv6.conf.all.forwarding=1 net.ipv6.conf.all.forwarding = 1
Poznámka: Při nastavování hodnoty nesmí být zleva ani zprava u rovnítka mezery. Je-li na řádku více hodnot, musí být uzávorkovány jako v následujícím příkazu: # sysctl -w net.ipv4.ip_local_port_range=”32768 61000” net.ipv4.ip_local_port_range = 32768 61000
Doplnění
Poznámka V praxi existují i verze, které místo „.“ vypisují „/“. Podrobnosti viz manuálové stránky sysctl. Tip Rychlý přehled o nastavení získáte volbou -a (výpis všech položek) ve spojení s příkazem grep.
Jaké najdete v souborovém systému /proc hodnoty V souborovém systému /proc jsou hodnoty v několika formátech: BOOLEAN: „0“ (nepravda) a „1“ (pravda). INTEGER: Používá se i celočíselná hodnota. Sofistikovanější řádky s několika hodnotami: Někdy se vypisuje také hlavička, pokud ne, informace o významu jednotlivých hodnot naleznete ve zdrojovém kódu jádra...
Položky v /proc/sys/net/ipv6/ conf/default/* Změna implicitního nastavení určitého rozhraní.
conf/all/*
Změna nastavení všech rozhraní.Výjimka: conf/all/forwarding má zde jiný význam. conf/all/forwarding ■ Typ: BOOLEAN Aktivace globálního přeposílání IPv6 mezi všemi rozhraními. V IPv6 nemůžete řídit přeposílání na
každém rozhraní, řízení přeposílání se musí provádět pomo cí množiny pravidel síťového filtru IPv6 (řízeného ip6tables) a je nutno specifikovat vstupní a výstupní zařízení (viz kapitola „Firewally s filtry netfilter6“). Tím se IPv6 liší od IPv4, kde je možno řídit přeposílání po jednotlivých zařízeních (rozhodnutí se provede na rozhraní, přes něž paket přišel). Tím se také nastaví všechna rozhraní počítačů/směrovačů na „přeposílání“ na určitou hodnotu. Podrobnosti viz dále. Tento způsob nazýváme globální přeposílání. Je-li tato hodnota 0, není aktivováno přeposílání, pakety nikdy neopustí jiné rozhraní, a to ani fyzické, ani logické (např. tunely).
conf/interface/* Změna speciálního nastavení po jednotlivých rozhraních. Funkce určitého nastavení je odlišná v závislosti na tom, zda je aktivováno lokální přeposílání či nikoli. accept_ra
Typ: BOOLEAN. Implicitní nastavení funkce: Aktivovaná, když je lokální přeposílání zablokované, zabloko vaná, když je lokální přeposílání aktivované. Přijetí oznámení ze směrovače a autokonfigurace tohoto rozhraní se zaslanými daty. accept_redirects
Typ: BOOLEAN. Implicitní nastavení funkce: Aktivovaná, když je lokální přeposílání zablokované, zabloko vaná, když je lokální přeposílání aktivované. Přijetí přesměrování zaslané směrovačem Ipv6. autoconf
Typ: BOOLEAN. Implicitní hodnota: TRUE. Konfigurace lokální adresy (viz také kapitola „“) pomocí hardwarové adresy L2. Na rozhraní s fyzickou adresou L2 je automaticky vygenerovaná adresa, např. fe80::201:23ff:fe45:6789. dad_transmits
Typ: INTEGER. Implicitní hodnota: 1. Zaslání počtu zjištěných duplikátních adres. forwarding
Typ: BOOLEAN. Implicitní hodnota: FALSE, je-li zablokováno globální přeposílání, jinak TRUE. Konfigurace chování počítače/ směrovače v závislosti na rozhraní. Poznámka Je vhodné mít na všech rozhraních stejné nastavení; smíšené scénáře nastavení směrovač/počítač jsou neobvyklé. ■ Hodnota FALSE: Implicitně se předpokládá chování počítače. To znamená: 1. V oznámení souseda není nastaven příznak IsRouter. Je-li to nutné, posílají se žádosti o směrovač. Má-li accept_ra hodnotu TRUE (implicitní nastavení), přijmi oznámení směrovače (a proveď autokonfiguraci). Má-li accept_redirects hodnotu TRUE (implicitní nastavení), přijmi přesměrování. ■ Hodnota TRUE: Je-li aktivováno lokální přeposílání, předpokládá se chování směrovače. Míní se tím pravý opak toho, co bylo uvedeno shora: V oznámení souseda je nastaven příznak IsRouter. Žádosti o směrovač se neposílají. Oznámení směrovače jsou ignorována. Přesměrování jsou ignorována. hop_limit
Typ: INTEGER. Implicitní hodnota: 64. Nastavení implicitní hodnoty Hop Limit. mtu
Typ: INTEGER. Implicitní hodnota: 1. Délka zpoždění v sekundách poté, co je rozhraní zapojeno před odesláním žádosti o směrovač. router_solicitation_interval
Typ: INTEGER. Implicitní hodnota: 4. Délka zpoždění v sekundách mezi dvěma odesláními žádosti o směrovač. router_solicitations
Typ: INTEGER. Implicitní hodnota: 3. Počet žádostí o směrovač, které se pošlou, než se usoudí, že žádné směrovače nejsou přítomny.
neigh/default/* Změna implicitního nastavení pro detekci sousedů a některé speciální globální intervaly a prahové hodnoty: gc_thresh1
Typ: INTEGER. Implicitní hodnota: 128. gc_thresh2
Typ: INTEGER. Implicitní hodnota: 512. gc_thresh3
Typ: INTEGER. Implicitní hodnota: 1 024. Ladicí parametr pro velikost tabulky sousedů. Máte-li mnoho rozhraní a problémy s počátky tras, chovají-li se podivně a havarují, tuto hodnotu zvětšete. Anebo když běžící zebra (směrovací démon, http://www.zebra.org/) ohlásí: ZEBRA: netlink-listen error: No buffer space available, type=RTM_NEWROUTE(24), seq=426, pid=0
gc_interval
Typ: INTEGER. Implicitní hodnota: 30.
neigh/interface/* Změna speciálního nastavení jednotlivých rozhraní kvůli detekci sousedů. anycast_delay
Položky IPv6 v /proc/sys/net/ipv4/ V tomto okamžiku (a bude tomu tak, dokud nebude IPv4 kompletně převeden do nezávislého modulu jádra) se pro IPv6 také používají některé přepínače.
ip_* ip_local_port_range
Toto řídicí nastavení používá i IPv6.
tcp_* Tato řídicí nastavení používá i IPv6.
icmp_* Tato řídicí nastavení IPv6 nepoužívá. K aktivaci omezení rychlosti ICMPv6 (které lze velmi doporučit kvůli schopnosti čelit útokům ICMPv6) je nutno respektovat pravidla netfilter-v6.
Ostatní V souvislosti s IPv6 nejsou známy.
Položky IPv6 v /proc/net/ V /proc/net existuje několik položek, které můžete pouze číst. Informace z nich nelze přečíst příkazem sysctl, musíte použít cat.
if_inet6 ■ Typ: Každé adrese odpovídá jeden řádek s několika hodnotami. Zde jsou uloženy všechny zkonfigurované adresy ve zvláštním tvaru. V příkladu je uvedeno pouze rozhraní loopback. Význam je popsán v dalším textu (další informace viz zdrojový kód jádra, sou-bor net/ipv6/addrconf.c ). # cat /proc/net/if_inet6 00000000000000000000000000000001 01 80 10 80 lo +------------------------------+ ++ ++ ++ ++ ++ | | | | | | 2 3 4 5 6
Adresa IPv6 má 32 hexadecimálních znaků bez dvojteček. Číslo síťového zařízení (index rozhraní) je v hexadecimálním tvaru (viz také „ip addr“). Délka prefixu hexadecimálně. Hodnota rozsahu platnosti (další viz include/net/ipv6.h a net/ipv6/addrconf.c ve zdrojovém kódu jádra). 5. Příznaky rozhraní (další viz include/linux/rtnetlink.h a net/ipv6/addrconf.c). 6. Jméno zařízení.
ipv6_route ■ Typ: Každé trase odpovídá jeden řádek s několika hodnotami. Zde jsou uloženy všechny trasy IPv6 ve zvláštním tvaru. V příkladu je uvedeno pouze roz-hraní loopback. Význam je popsán v dalším textu (další informace viz net/ipv6/route.c ). # cat /proc/net/ipv6_route 00000000000000000000000000000000 00
Cílová síť IPv6 má 32 hexadecimálních znaků bez dvojteček. Délka cílového prefixu IPv6 hexadecimálně. Zdrojová síť IPv6 má 32 hexadecimálních znaků bez dvojteček. Délka zdrojového prefixu IPv6 hexadecimálně. Další směrovač IPv6, 32 hexadecimálních znaků bez dvojteček. Metrika hexadecimálně. Referenční čítač. Uživatelský čítač. Příznaky. Jméno zařízení.
sockstat6 ■ Typ: Každému protokolu odpovídá jeden řádek s popisem a s hodnotou. Statistiky použitých soketů IPv6. Příklad: # cat /proc/net/sockstat6 TCP6: inuse 7 UDP6: inuse 2 RAW6: inuse 1 FRAG6: inuse 0 memory 0
snmp6
■ Typ: Každému popisu SNMP a hodnotě odpovídá jeden řádek. Statistiky SNMP, lze je získat softwarem pro správu sítí ze serveru SNMP a příslušné tabulky MIB. ip6_tables_names Tabulky netfilter6, které jsou k dispozici.
Ladění v síti Připojování serverových soketů.
Kontrola připojení serverových soketů příkazem netstat Vědět, který serverový soket je aktivní na uzlu, je vždy zajímavé. Jednoduše můžete získat tyto informace pomocí příkazu netstat.Volby: -nlptuPříklad: # netstat -nlptu Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address PID/Program name tcp 0 0 0.0.0.0:32768 ¬ 1258/rpc.statd tcp 0 0 0.0.0.0:32769 ¬ 1502/rpc.mountd tcp 0 0 0.0.0.0:515 ¬ 22433/lpd Waiting tcp 0 0 1.2.3.1:139 ¬ 1746/smbd tcp 0 0 0.0.0.0:111 ¬ 1230/portmap tcp 0 0 0.0.0.0:6000 ¬ 3551/X tcp 0 0 1.2.3.1:8081 ¬ 18735/junkbuster tcp 0 0 1.2.3.1:3128 ¬ 18822/(squid) tcp 0 0 127.0.0.1:953 ¬ 30734/named tcp 0 0 ::ffff:1.2.3.1:993 ¬ 6742/xinetd-ipv6 tcp 0 0 :::13 ¬ 6742/xinetd-ipv6 tcp 0 0 ::ffff:1.2.3.1:143 ¬ 6742/xinetd-ipv6 tcp 0 ¬ 30734/named tcp 0 ¬ 1410/sshd tcp 0 ¬ 13237/sshd udp 0 ¬ 1258/rpc.statd udp ¬ udp
Směrovač s lokální adresou „fe80::212:34ff:fe12:3450“ zašle oznámení vícesměrovou adresou všem uzlům. Adresa „ff02::1“ obsahuje dva prefixy „2002:0102:0304:1::/64“ (doba životnosti 30 s) a „3ffe:ffff:0:1::/64“ (doba životnosti 2 592 000 s) včetně své fyzické adresy „0:12:34:12:34:50“. Vyžádání směrovače 15:44:21.152646 fe80::212:34ff:fe12:3456 > ff02::2: icmp6: router solicitation ¬ (src lladdr: 0:12:34:12:34:56) (len 16, hlim 255)
Uzel s lokální adresou „fe80::212:34ff:fe12:3456“ a fyzickou adresou „0:12:34:12:34:56“ hledá na připojení směrovač, proto posílá tuto žádost všem směrovačům na připojení vícesměrovou adresou „ff02::2“.
Zjišování sousedů Žádost o zjištění sousedů z důvodu detekce duplicitní adresy
Následující pakety jsou odeslány uzlem s fyzickou adresou „0:12:34:12:34:56“ v průběhu autokonfigurace, aby se ověřilo, zda potenciální adresu nepoužívá jiný uzel na spojení. Pakety jsou odeslány na vícesměrovou lokální adresu zkoumaných uzlů. ■ Uzel, který chce zkonfigurovat svoji lokální adresu „fe80::212:34ff:fe12:3456“, si ověří možnou duplicitu. 15:44:17.712338 :: > ff02::1:ff12:3456: icmp6: neighbor sol: who has ¬ fe80::212:34ff:fe12:3456(src lladdr: 0:12:34:12:34:56) (len 32, hlim 255) ■
Uzel, který chce zkonfigurovat svoji globální adresu „2002:0102:0304:1:212:34ff:fe12:3456“ (poté co obdržel oznámení shora), si ověří možnou duplicitu. 15:44:21.905596 :: > ff02::1:ff12:3456: icmp6: neighbor sol: who has ¬ 2002:0102:0304:1:212:34ff:fe12:3456(src lladdr: 0:12:34:12:34:56) (len 32, ¬ hlim 255)
■
Uzel, který chce zkonfigurovat svoji globální adresu „3ffe:ffff:0:1:212:34ff:fe12:3456“ (poté co obdržel oznámení shora), si ověří možnou duplicitu. 15:44:22.304028 :: > ff02::1:ff12:3456: icmp6: neighbor sol: who has ¬ 3ffe:ffff:0:1:212:34ff:fe12:3456(src lladdr: 0:12:34:12:34:56) (len 32, hlim ¬ 255)
Zjišování sousedů kvůli hledání počítače nebo brány ■
Uzel chce poslat pakety na „3ffe:ffff:0:1::10“, avšak nemá fyzickou adresu, aby mohl posílat pakety, takže nejdříve pošle žádost. 13:07:47.664538 2002:0102:0304:1:2e0:18ff:fe90:9205 > ff02::1:ff00:10: icmp6: ¬ neighbor sol: who has 3ffe:ffff:0:1::10(src lladdr: 0:e0:18:90:92:5) (len 32, ¬ hlim 255)
Podpora stálé konfigurace IPv6 v linuxových distribucích Některé linuxové distribuce už obsahují podporu stálé konfigurace IPv6 pomocí stávající nebo nové konfigurace a skriptů a pomocí úprav ve skriptech IPv4.
Red Hat Linux a „klony“ Od okamžiku, kdy jsem začal psát tento návod, bylo mým úmyslem dát k dispozici stálou konfi-guraci IPv6, která by pokrývala většinu požadovaných případů, jako je samostatný počítač, samo-statný směrovač, počítač připojený ke dvěma sítím, směrovač s druhou sítí, normální tunely, tune-ly 6to4 atd. Nyní existuje množina konfigurací a skriptů, které tyto požadavky splňují (nikdy jsem v této souvislosti neslyšel o vážných problémech, ale nevím, kolik uživatelů je využívá). Vzhledem k tomu, že tyto konfigurace a skripty jsou průběžně doplňovány, mají svoji domovskou stránku: http://www.deepspace6.net/projects/initscriptsipv6.html. Vzhledem k tomu, že jsem svoje zkuše-nosti začal sbírat v klonu systému Red Hat Linux 5.0, moje vývojové systémy IPv6 jsou převážně založeny na systému Red Hat Linux a je vcelku logické, že skripty byly vyvinuty pro tuto distri-buci (tzv. historické vydání). Také bylo velmi jednoduché některé konfigurační soubory rozšířit, vytvořit nové anebo upravit nastavení IPv4 na IPv6. Šťastnou náhodou se některé moje skripty dostaly do distribuce Red Hat Linux 7.1, což je zásluha Pekky Savoly. Mandrake od verze 8.0 také obsahuje balík skriptů s podporou IPv6, avšak jejich využívání brání drobná chyba (ifconfig nemá inet6 před add).
Test, zda síové konfigurační skripty podporují IPv6 Pomocí mé množiny si můžete otestovat, jestli vaše linuxová distribuce obsahuje podporu trvalé konfigurace IPv6. V distribuci by měla být tato knihovna skriptů: /etc/sysconfig/network-scripts/network-functions-ipv6
Pokud některé funkce chybějí, je důležité znát verzi knihovny. Můžete ji zjistit pomocí následujícího příkazu (anebo snadněji, když se podíváte na začátek souboru): # source /etc/sysconfig/network-scripts/network-functions-ipv6 && ¬ getversion_ipv6_functions 20011124
V uvedeném příkladu je použita verze 20011124. Porovnejte ji s nejnovější verzí uvedenou na http://www.deepspace6.net/ projects/initscripts-ipv6.html, abyste zjistili, co se změnilo. Také zde naleznete údaj o datu změny.
Krátký tip, jak aktivovat IPv6 na stávajícím RHL 7.1, 7.2, 7.3, ... ■ Ověřte si, zda má systém zavedené moduly IPv6 # modprobe -c | grep net-pf-10 alias net-pf-10 off ■
Je-li výsledkem „off“, aktivujte podporu sítí IPv6 tak, že do souboru /etc/sysconfig/net-work přidáte následující nový řádek: NETWORKING_IPV6=yes
■
Podporu sítí znovu zaveďte nebo restartujte pomocí: # service network restart
■
Nyní by měly být moduly IPv6 zavedeny:
# modprobe -c | grep ipv6 alias net-pf-10 ipv6
Je-li váš systém na spojení, které zajišťuje ohlašování směrovačů, autokonfigurace se provede auto-maticky. Další informace o tom, které nastavení je podporováno, naleznete v souboru /usr/share/doc/initscripts-$verze/sysconfig.txt .
SuSE Linux Ve verzích novějších než 7.x je skutečně jen základní podpora, podrobnosti viz /etc/rc.config. Vzhledem k velkým rozdílům v konfiguracích a ve struktuře skriptů je velmi obtížné (ne-li nemož-né) používat nástroje Red Hat Linuxu a klonů v této distribuci. Ve verzi 8.x byl dokonce zcela změněn způsob konfigurace.
SuSE Linux 7.3 ■ http://www.feyrer.de/IPv6/SuSE73-IPv6+6to4-setup.html SuSE Linux 8.0 Konfigurace adres IPv6
Do souboru /etc/sysconfig/network/ifcfg-<jméno-rozhraní> nastavte hodnotu IP6ADDR=”/<prefix>” Doplňující informace
Viz soubor /usr/share/doc/packages/sysconfig/README .
SuSE Linux 8.1 Konfigurace adres IPv6
Do souboru /etc/sysconfig/network/ifcfg-<jméno-rozhraní> nastavte hodnotu IPADDR=”< adresa-ipv6>/<prefix>” Doplňující informace
Viz soubor /usr/share/doc/packages/sysconfig/Network .
Debian Linux Následující informace poskytl Stephane Bortzmeyer . 1. Přesvědčte se, zda je zaveden modul pro IPv6. Buď musel být přeložen společně s jádrem nebo musel být zaveden jako samostatný modul anebo přinejmenším bylo zavedení vyře-šeno jedním ze tří následujících způsobů: Modul byl přidán do /etc/modules, bylo pro-vedeno „předzavedení“ (trik, který bude vysvětlen později) anebo byl zaveden pomocí kmod (uvádíme bez dalších podrobností). 2. Zkonfigurujte rozhraní. Předpokládejme eth0 a adresu (3ffe:ffff:1234:5::1:1). Soubor /etc/network/interfaces upravte takto:
iface eth0 inet6 static pre-up modprobe ipv6 address 3ffe:ffff:1234:5::1:1 # To suppress completely autoconfiguration: # up echo 0 > /proc/sys/net/ipv6/conf/ all/autoconf netmask 64 # The router is autoconfigured and has no fixed address. # It is magically # found. (/proc/sys/net/ipv6/conf/all/accept_ra). Otherwise: #gateway 3ffe:ffff:1234:5::1
Nyní buď znovu zaveďte systém, nebo zadejte příkaz:
# ifup --force eth0
a získáte svoji statickou adresu.
Další informace http://people.debian.org/~csmall/ipv6/, napsal Craig Small. Jean-Marc V. Liotier: http://www.ruwenzori.net/ipv6/Jims_LAN_IPv6_global_ connectivity_howto.html (oznámeno 24. 12. 2002 v IPv6 konferenci účastníkem s adresou <[email protected]>).
Autokonfigurace a mobilita Bezstavová autokonfigurace Poté co je rozhraní aktivované pro IPv6 připojeno, je podporováno a viditelné na přiřazené lokál ní adrese. Příklad: # ip -6 addr show dev eth0 scope link 2: eth0: mtu 1500 qlen1000 inet6 fe80::211:d8ff:fe6b:f0f5/64 valid_lft forever
scope preferred_lft
link forever
Stavová autokonfigurace pomocí démona pro oznamování směrovače (radvd) Viz Autokonfigurace démona radvd v dalším textu.
Protokol DHCPv6 Po dlouhých diskusích byl konečně dokončen protokol RFC 3315 (Dynamic Host Configuration Protocol for IPv6, DHCPv6). V době aktualizace této části (10/2005) byly k dispozici dvě implementace: Dibbler (http://klub.com.pl/dhcpv6/) od Tomasze Mrugalského . DHCPv6 on Sourceforge (http://dhcpv6.sourceforge.net/).
Mobilita Momentálně jsou podrobnosti v http://www.mipl.mediapoli.com/. Další informace lze nalézt zde (prosím, ohlaste nefunkční odkazy): http://www.ietf.org/internet-drafts/, http://www.cs-ipv6.lancs.ac.uk/ipv6/MobileIP/, http://gsyc.escet.urjc.es/Mobiquo/Mind/documentacion/MontajeMaquetaIPv6_en/Montaje-MaquetaIPv6_en.html, http://www.piuha.net/~jarkko/publications/mipv6/MIPv6-Issues.html.
Firewally Firewally IPv6 jsou důležité, zejména když se používá IPv6 na interních sítích s globálními adre-sami IPv6. Protože na rozdíl od IPv4, kde v běžných interních počítačích jsou globální adresy auto-maticky chráněny pomocí privátních adres IPv4, např. RFC 1918 nebo APIPA (Automatic Private IP Addressing, http://www.google.com/search?q=apipa+microsoft), v případě IPv6 se globální adre-sy obvykle používají a někdo s konektivitou IPv6 může obsáhnout všechny interní uzly s podpo-rou IPv6.
Firewally s filtry netfilter6 Vlastní firewally IPv6 jsou podporovány v jádru verze 2.4+. Ve starších jádrech 2.2- můžete používat pouze filtry IPv6-in-IPv4 podle protokolu 41. Upozornění: Neexistuje záruka, že popsaná pravidla nebo příklady mohou skutečně ochránitsystém. Podrobnosti o auditu pravidel po instalaci viz kapitola „Bezpečnostní audit IPv6“.Také poznamenejme, že projekt USAGI je v současné době před dokončením spojení pro IPv6!Díky tomu bude množina pravidel do budoucnosti jednodušší a bezpečnější.
Další informace http://www.netfilter.org/, https://lists.netfilter.org/mailman/listinfo/netfilter, https://lists.netfilter.org/mailman/listinfo/netfilter-devel,
Obstarejte si nejnovější zdrojový kód jádra: http://www.kernel.org/. Obstarejte si nejnovější balík iptables: Zdrojový archív v taru (záplaty jádra): http://www.netfilter.org/. Zdrojový balíček RPM pro vytvoření binárních souborů (systém RedHat): ftp://ftp. redhat.com/redhat/linux/rawhide/ SRPMS/SRPMS/ nebo možná také na http://www.-netcore.fi/pekkas/linux/ipv6/.
Rozbalení zdrojů
Přejděte do zdrojového adresáře: # cd /path/to/src
Rozbalte a přejmenujte zdroje jádra: # tar zxf kernel-version.tar.gz # mv linux linux-version-iptables-version+IPv6
Rozbalte zdroje iptables: # tar zxf iptables-version.tar.gz
Aplikujte nejnovější záplaty iptables/IPv6 na zdroj jádra Přejděte do zdrojového adresáře: # cd iptables-version
Aplikujte stávající záplaty: # make pending-patches KERNEL_DIR=/path/to/src/linux-version-iptables-version/
Aplikujte dodatečné záplaty IPv6 (prozatím nejsou součástí vanilla jádra): # make patch-o-matic KERNEL_DIR=/path/to/src/linux-version-iptables-version/
Potvrďte následující volby (iptables-1.2.2): ah-esp.patch, masq-dynaddr.patch (pouze pro systémy s dynamickou IP adresou přiřazenou spojení WAN, např. PPP nebo PPPoE), ipv6-agr.patch.ipv6, ipv6-ports.patch.ipv6, LOG.patch.ipv6, REJECT.patch.ipv6. Ověřte rozšíření IPv6: # make print-extensions Extensions found: IPv6:owner IPv6:limit IPv6:mac IPv6:multiport
Konfigurace, vytvoření a instalace nového jádra Přejděte do zdrojového adresáře: # cd /path/to/src/linux-version-iptables-version/
Spusťte konfiguraci, aktivujte IPv6: Code maturity level options Prompt for development and/or incomplete code/drivers:yes Networking options Network packet filtering: yes The IPv6 protocol: module IPv6: Netfilter Configuration IP6 tables support: module All new options like following: limit match support: module MAC address match support: module Multiple port match support: module Owner match support: module netfilter MARK match support: module Aggregated address check: module Packet filtering: module REJECT target support: module
Zkonfigurujte zbytek systému. Kompilace a instalace: viz část o jádru v tomto návodu a také v jiných návodech
Vytvoření a instalace binárního tvaru iptables Přesvědčte se, že je dostupná i horní část stromu zdrojového kódu jádra na /usr/src/linux/ . Přejmenujte starší adresář: # mv /usr/src/linux /usr/src/linux.old
Vytvořte nový odkaz na software: # ln -s /path/to/src/linux-version-iptables-version /usr/src/linux
Vytvořte nový SRPMS: # rpm --rebuild /path/to/SRPMS/iptables-version-release.src.rpm
Nainstalujte nové balíky iptables (iptables + iptables-ipv6): ■ V systémech RH 7.1 je obvykle už nainstalována starší verze, použijte proto parametr pro „freshen“ (aktualizaci). # rpm -Fhv /path/to/RPMS/cpu/iptables*-version-release.cpu.rpm ■
Není-li už nainstalován, zadejte „install“: # rpm -ihv /path/to/RPMS/cpu/iptables*-version-release.cpu.rpm
■
V systémech RH 6.2 obvykle není nainstalováno jádro 2.4.x, proto požadavky nevyhovují. Nainstalujte je pomocí -nodeps.
Do vstupního filtru vložte logovací pravidla s volbami # ip6tables --table filter --append INPUT -j LOG --log-prefix “INPUT:” ¬ --log-level 7
Do vstupního filtru vložte pravidla pro odmítání # ip6tables --table filter --append INPUT -j DROP
Zrušte pravidlo dle čísla # ip6tables --table filter --delete INPUT 1
Povolte ICMPv6
Se starším jádrem (jádro bez záplat 2.4.5 a iptables-1.2.2) nelze specifikovat typ.
■ Akceptujte příchozí ICMPv6 prostřednictvím tunelů: # ip6tables -A INPUT -i sit+ -p icmpv6 -j ACCEPT ■
Povolte odchozí ICMPv6 prostřednictvím tunelů: # ip6tables -A OUTPUT -o sit+ -p icmpv6 -j ACCEPT
Novější jádra umožňují specifikaci typů ICMPv6: # ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request -j ACCEPT
Omezování rychlosti
Může se stát (autor to už viděl dvakrát), že dojde k útoku ICMPv6. Z toho důvodu byste měli pou-žívat dostupné omezování rychlosti alespoň na úrovni množiny pravidel ICMPv6. Navíc by měla být omezena i pravidla pro přihlašování, abyste zabránili útokům DoS na logy systému a ukládá-ní oblastí s logovacím souborem. Příklad omezení rychlosti ICMPv6 vypadá takto: # ip6tables -A INPUT --protocol icmpv6 --icmpv6-type echo-request ¬ -j ACCEPT --match limit --limit 30/minute
Povolení příchozího SSH
Množina pravidel v uvedeném příkladu umožňuje příchozí spojení SSH z určité adresy IPv6. ■ Povolení příchozího SSH z 3ffe:ffff:100::1/128: # ip6tables -A INPUT -i sit+ -p tcp -s 3ffe:ffff:100::1/128 --sport 512:65535 ¬ --dport 22 -j ACCEPT ■
Povolení odpovědních paketů (v současné době není sledování spojení IPv6 v hlavní části netfilter6 implementováno): # ip6tables -A OUTPUT -o sit+ -p tcp -d 3ffe:ffff:100::1/128 --dport 512:65535 ¬ --sport 22 ! --syn -j ACCEPT
Aktivace tunelu IPv6-in-IPv4
Abyste mohli přijímat pakety z tunelu IPv6-in-IPv4, musíte do nastavení firewallu vložit pravidla, která se vztahují k těmto paketům, například: Přijímej příchozí IPv6-in-IPv4 na rozhraní ppp0: Povol odchozí IPv6-in-IPv4 na rozhraní ppp0: # iptables -A INPUT -i ppp0 -p ipv6 -j ACCEPT # iptables -A OUTPUT -o ppp0 -p ipv6 -j ACCEPT
Máte-li pouze statický tunel, můžete také specifikovat adresu IPv4, např.: Přijímej příchozí IPv6-in-IPv4 na rozhraní ppp0 z koncového bodu tunelu 1.2.3.4: Povol odchozí IPv6-in-IPv4 na rozhraní ppp0 na koncovém bodu tunelu 1.2.3.4: # iptables -A INPUT -i ppp0 -p ipv6 -s 1.2.3.4 -j ACCEPT # iptables -A OUTPUT -o ppp0 -p ipv6 -d 1.2.3.4 -j ACCEPT
Ochrana proti příchozím požadavkům na spojení TCP
VELMI DOPORUČUJEME! Z důvodu bezpečnosti byste skutečně měli vložit pravidlo, které bloku-je příchozí požadavky na spojení TCP. Jsou-li ostatní jména rozhraní použita, zadejte volbu -i. ■ Blokování příchozích požadavků na spojení TCP na tomto počítači: # ip6tables -I INPUT -i sit+ -p tcp --syn -j DROP ■ Blokování příchozích požadavků na spojení TCP na počítačích za tímto směrovačem # ip6tables -I FORWARD -i sit+ -p tcp --syn -j DROP
Pravidla musí pravděpodobně být umístěna za ostatními, avšak to je práce, kterou byste si měli dobře promyslet. Nejlepší je vytvořit skript a pravidla provádět uvedeným způsobem.
Ochrana proti příchozím požadavkům na spojení UDP TAKÉ DOPORUČUJEME! Jak už jsem se zmínil v popisu firewallu, je možné řídit porty na odcho-zích sezeních UDP/TCP. Pokud tedy všechny lokální systémy IPv6 používají lokální porty napří-klad v rozmezí od 32 768 do 60 999, jste schopni filtrovat také spojení UDP (dokud funguje sle-dování spojení), například: ■ Blokování příchozích paketů UDP, které nemohou být odpověďmi na odchozí požadavky tohoto počítače: # ip6tables -I INPUT -i sit+ -p udp ! --dport 32768:60999 -j DROP
■
Blokování příchozích paketů UDP, které nemohou být odpověďmi na přeposlané požadavky počítačů za tímto směrovačem: # ip6tables -I FORWARD -i sit+ -p udp ! --dport 32768:60999 -j DROP
Demonstrační příklad V následujícím příkladu naleznete sofistikovanější nastavení. Šťastné je vytváření množiny pravidel netfilter6... # ip6tables -n -v -L Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 extIN all sit+ * ::/0 ::/0 4 384 intIN all eth0 * ::/0 ::/0 0 0 ACCEPT all * * ::1/128 ::1/128 0 0 ACCEPT all lo * ::/0 ::/0 0 0 LOG all * * ::/0 ::/0 ¬ LOG flags 0 level 7 prefix `INPUT-default:' 0 0 DROP all * * ::/0 ::/0 Chain FORWARD (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 int2ext all eth0 sit+ ::/0 ::/0 0 0 ext2int all sit+ eth0 ::/0 ::/0 0 0 LOG all * * ::/0 ::/0 ¬ LOG flags 0 level 7 prefix `FORWARD-default:' 0 0 DROP all * * ::/0 ::/0 Chain OUTPUT (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 extOUT all * sit+ ::/0 ::/0 4 384 intOUT all * eth0 ::/0 ::/0 0 0 ACCEPT all * * ::1/128 ::1/128 0 0 ACCEPT all * lo ::/0 ::/0 0 0 LOG all * * ::/0 ::/0 ¬ LOG flags 0 level 7 prefix `OUTPUT-default:' 0 0 DROP all * * ::/0 ::/0 Chain ext2int (1 references) pkts bytes target prot opt in out source destination ¬ 0 0 ACCEPT icmpv6 * * ::/0 ::/0 0 0 ACCEPT tcp * * ::/0 ::/0 ¬ tcp spts:1:65535 dpts:1024:65535 flags:!0x16/0x02 0 0 LOG all * * ::/0 ::/0 ¬ LOG flags 0 level 7 prefix `ext2int-default:' 0 0 DROP tcp * * ::/0 ::/0 0 0 DROP udp * * ::/0 ::/0 0 0 DROP all * * ::/0 ::/0 Chain extIN (1 references) pkts bytes target prot opt in out source destination 0 0 ACCEPT tcp * * 3ffe:400:100::1/128 ::/0 ¬ tcp spts:512:65535 dpt:22 0 0 ACCEPT tcp * * 3ffe:400:100::2/128 ::/0 ¬ tcp spts:512:65535 dpt:22 0 0 ACCEPT icmpv6 * * ::/0 ::/0 0 0 ACCEPT tcp * * ::/0 ::/0 ¬ tcp spts:1:65535 dpts:1024:65535 flags:!0x16/0x02 0 0 ACCEPT udp * * ::/0 ::/0 ¬ udp spts:1:65535 dpts:1024:65535 0 0 LOG all * * ::/0 ::/0 ¬ limit: avg 5/min burst 5 LOG flags 0 level 7 prefix `extIN-default:' 0 0 DROP all * * ::/0 ::/0 Chain extOUT (1 references) pkts bytes target prot opt in out source destination ¬ 0 0 ACCEPT tcp * * ::/0 ¬ 3ffe:ffff:100::1/128tcp spt:22 dpts:512:65535 flags:!0x16/0x02 0 0 ACCEPT tcp * * ::/0 ¬ 3ffe:ffff:100::2/128tcp spt:22 dpts:512:65535 flags:!0x16/0x02 0 0 ACCEPT icmpv6 * * ::/0 ::/0 0 0 ACCEPT tcp * * ::/0 ::/0 ¬ tcp spts:1024:65535 dpts:1:65535 0 0 ACCEPT udp * * ::/0 ::/0 ¬ udp spts:1024:65535 dpts:1:65535 0 0 LOG all * * ::/0 ::/0 ¬ LOG flags 0 level 7 prefix `extOUT-default:' 0 0 DROP all * * ::/0 ::/0 Chain int2ext (1 references) pkts bytes target prot opt in out source destination ¬ 0 0 ACCEPT icmpv6 * * ::/0 ::/0 0 0 ACCEPT tcp * * ::/0 ::/0 ¬ tcp spts:1024:65535 dpts:1:65535 0 0 LOG all * * ::/0 ::/0 ¬ LOG flags 0 level 7 prefix `int2ext:' 0 0 DROP all * * ::/0 ::/0 0 0 LOG all * * ::/0 ::/0 ¬ LOG flags 0 level 7 prefix `int2ext-default:' 0 0 DROP tcp * * ::/0 ::/0 0 0 DROP udp * * ::/0 ::/0 0 0 DROP all * * ::/0 ::/0 Chain intIN (1 references) pkts bytes target prot opt in out source destination ¬ 0 0 ACCEPT all * * ::/0 ¬ fe80::/ffc0:: 4 384 ACCEPT all * * ::/0 ff02::/16 Chain intOUT (1 references) pkts bytes target prot opt in out source destination ¬ 0 0 ACCEPT all * * ::/0 ¬ fe80::/ffc0:: 4 384 ACCEPT all * * ::/0 ff02::/16 0 0 LOG all * * ::/0 ::/0 LOG flags 0 level 7 prefix `intOUT-default:'
0 0 DROP all * * ::/0 ::/0
Bezpečnost Bezpečnost uzlu Velmi doporučujeme aplikovat všechny existující záplaty a zablokovat všechny nepotřebné služ-by. Také připojte služby pouze k adresám IPv4/IPv6 a nainstalujte lokální firewall.
Omezení přístupu Mnohé služby používají pro řízení přístupu knihovnu tcp_wrapper. V dalším textu je popsáno použití tcp wrapperu, viz kapitola „Tcp_wrapper“.
Bezpečnostní audit IPv6 Momentálně nejsou k dispozici účinné nástroje, jimiž by bylo možné po síti zkontrolovat bezpeč-nostní opatření IPv6. Pokud vím, těmto účelům nevyhovuje ani Nessus (http://www.nessus.org/), ani žádný jiný komerční skener.
Zákonná úprava UPOZORNĚNÍ: Nechcete-li porušit zákon, vždy dbejte na to, abyste skenovali pouze své vlastní systémy anebo jiné systémy jen na základě písemné objednávky. Než začnete se skenováním, cílovou adresu IPv6 si raději DVAKRÁT OVĚŘTE!
Bezpečnostní audit prováděný pomocí utility netcat s podporou IPv6 Pomocí nástroje netcat s podporou IPv6 (podrobnosti viz http://www.bieringer.de/linux/IPv6/ status/IPv6+Linux-statusapps.html#security-auditing) můžete spustit portscan tak, že zabalíte skript, aby prošel daný rozsah portů, zachytil bannery atd. Příklad použití: # nc6 ::1 daytime 13 JUL 2002 11:22:22 CEST
Bezpečnostní audit prováděný pomocí nástroje nmap s podporou IPv6 NMap (http://www.insecure.org/nmap/), jeden z nejlepších skenerů portů na světě, podporuje IPv6 od verze 3.10ALPHA1. Příklad použití: # nmap -6 -sT ::1Starting nmap V. 3.10ALPHA3 ( www.insecure.org/nmap/ ) Interesting ports on localhost6 (::1): (The 1600 ports scanned but not shown below are in state: closed) Port 22/tcp 53/tcp 515/tcp 2401/tcp
State open open open open
Service ssh domain printer cvspserver
Nmap run completed -- 1 IP address (1 host up) scanned in 0.525 seconds Bezpečnostní audit prováděný pomocí nástroje strobe s podporou IPv6 Strobe je (ve srovnání s NMap) jednodušší, existuje záplata pro podporu IPv6 (podrobnosti viz http://www.bieringer.de/linux/ IPv6/status/IPv6+Linux-status-apps.html#security-auditing). Příklad použití: # ./strobe ::1 strobe 1.05 (c) 1995-1999 Julian Assange <[email protected]>. ::1 2401 unassigned unknown ::1 22 ssh Secure Shell - RSA encrypted rsh ::1 515 printer spooler (lpd) ::1 6010 unassigned unknown ::1 53 domain Domain Name Server
Poznámka: Vývoj strobe už nepokračuje, uvedená verze není správná.
Výsledky auditu Jestliže výsledky auditu nejsou ve shodě s vaší bezpečnostní politikou IPv6, zabezpečte zranitel-ná místa firewallem IPv6 s použitím netfilter6 (podrobnosti viz kapitola „Firewally“).Informace: Podrobnější informace o bezpečnosti IPv6 naleznete na adrese: ■ http://www.ietf.org/internet-drafts/.
Šifrování a autentizace
Na rozdíl od IPv4 je šifrování a autentizace povinnou součástí IPv6. Tyto funkce jsou obvykle implementovány pomocí IPsec (jež lze použít i v případě IPv4).
Režimy šifrování a autentizace Existují dva režimy šifrování a autentizace spojení:
Transportní režim Transportní režim je skutečný režim koncového spojení. Zašifrován je pouze obsah (obvykle ICMP, TCP nebo UDP) s hlavičkou, zatímco hlavička IP není zašifrovaná (avšak obvykle je součástí autentizace). Transportní režim se šifrováním AES-128 a autentizací SHA1 snižuje MTU o 42 oktetů.
Tunelový režim Tunelový režim je využíván buď pro koncové spojení nebo pro spojení mezi branami. V tomto případě jsou zašifrovány celé IP pakety a jsou opatřeny novými IP hlavičkami, čímž je vytvořen nový paket (tento mechanismus je znám pod názvem „zapouzdření“, angl. „encapsulation“). Tento režim obvykle snižuje MTU o 40 oktetů oproti transportnímu režimu, tj. se šifrováním AES-128 a autentizací SHA1 je MTU o 82 oktetů nižší než normální MTU.
Podpora v jádru (ESP a AH)
Podpora v jádru vanilla
Linuxu 2.4.x V době psaní chyběla podpora IPv6 v jádru systému vanilla do verze 2.4.28. Kvůli exportním zákonům vztahujícím se na šifrování vznikl problém s volným šířením jádra. Toto je další případ, kdy do zdrojového kódu vanilla nebyl zahrnut projekt FreeS/WAN (http://www.freeswan.org/). Snad bude v budoucnosti toto jádro doplněno z jádra 2.6.x.
Podpora v jádru vanilla Linuxu 2.6.x Současné verze (v době psaní 2.6.9 a vyšších) podporují vlastní IPsec pro IPv4 a IPv6. Pomoc při implementaci přišla i z projektu USAGI.
Automatická výměna klíčů (IKE) V IPsec je požadována výměna klíčů. To se většinou děje automaticky pomocí tzv. démonů IKE. Také zpracovávají autentizaci účastníků buď pomocí sdílených klíčů (angl. „pre-shared secret“) nebo klíčů RSA (je možné je získat i z certifikátů X.509). V Linuxu jsou v současnosti k dispozici dva různé démony IKE, které se podstatně liší jak v kon figuraci, tak i způsobem použití.Já dávám přednost démonu pluto v implementaci *S/WAN, neboť je jednodušší a vyžaduje pouzejednu konfiguraci.
IKE démon racoon IKE démon racoon byl převzat z projektu KAME a přenesen do Linuxu. V současných linuxových distribucích jsou součástí balíku ipsec-tools. Ke správnému nastavení IPsec jsou potřebné dva pro-gramy. Viz také http://lartc.org/howto/lartc.ipsec.html. Manipulace s databází IPsec SA/SP pomocí nástroje setkey
Nástroj setkey je důležitý pro definici bezpečnostní politiky jádra. Soubor: /etc/racoon/setkey.sh ■ Příklad šifrovaného koncového spojení v transportním režimu: #!/sbin/setkey -f flush; spdflush; spdadd 2001:db8:1:1::1 2001:db8:2:2::2 any -P out ipsec esp/transport//require; spdadd 2001:db8:2:2::2 2001:db8:1:1::1 any -P in ipsec esp/transport//require; ■ Příklad
šifrovaného koncového spojení v tunelovém režimu:
#!/sbin/setkey -fflush;spdflush;spdadd 2001:db8:1:1::1 2001:db8:2:2::2 any -P out ipsec¬ esp/tunnel/2001:db8:1:1::1-2001:db8:2:2::2/ require;spdadd 2001:db8:2:2::2 2001:db8:1:1::1 any -P in ipsec¬ esp/tunnel/2001:db8:2:2::2-2001:db8:1:1::1/require ;
U ostatních účastníků musíte místo „in“ dát „out“. Konfigurace IKE démona racoon
Pro správnou činnost vyžaduje racoon konfigurační soubor. Obsahuje příslušná nastavení bez-pečnostní politiky, která by měla být nastavena pomocí setkey už dřív. Soubor: /etc/racoon/racoon.conf # Racoon IKE daemon
configuration file. # See 'man racoon.conf' for a description of the format and entries. path include "/etc/racoon"; path pre_shared_key "/etc/racoon/psk.txt"; listen { isakmp 2001:db8:1:1::1; } remote 2001:db8:2:2::2 { exchange_mode main; lifetime time 24 hour; proposal { encryption_algorithm 3des; hash_algorithm md5; authentication_method pre_shared_key ; dh_group 2; } } # gateway-to-gateway sainfo address 2001:db8:1:1::1 any address 2001:db8:2:2::2 any { lifetime time 1 hour; encryption_algorithm 3des; authentication_algorithm hmac_md5; compression_algorithm deflate; } sainfo address 2001:db8:2:2::2 any address 2001:db8:1:1::1 any { lifetime time 1 hour; encryption_algorithm 3des; authentication_algorithm hmac_md5; compression_algorithm deflate; }
Nastavení sdíleného klíče: Soubor: /etc/racoon/psk.txt # file for pre-shared keys used for IKE authentication # format is: ‘identifier’ ‘key ’ 2001:db8:2:2::2 verysecret
Spuštění IPsec s IKE démonem racoon
Nakonec je třeba démona spustit. Při prvním spuštění použijte ladicí program a démona spusťte na pozadí. Následující příklad znázorňuje úspěšnou komunikaci ve fázi 1 IKE (ISAKMP-SA) a 2 (IPsec-SA): # racoon -F -v -f /etc/racoon/racoon.confForeground mode. 2005-01-01 20:30:15: INFO: @(#)ipsec-tools 0.3.3 (http://ipsec-tools.sourceforge.net)2005-01-01 20:30:15: INFO: @(#)This product linked¬ OpenSSL 0.9.7a Feb 19 2003 (http://www.openssl.org/)2005-01-01 20:30:15: INFO: 2001:db8:1:1::1[500] used as isakmp port (fd=7)2005-01-01 20:31:06: INFO: IPsec-SA request for 2001:db8:2:2::2¬ queued due to no phase1 found.2005-01-01 20:31:06: INFO: initiate new phase 1 negotiation:¬ 2001:db8:1:1::1[500]<=>2001:db8:2:2::2[500]2005-01-01 20:31:06: INFO: begin Identity Protection mode.2005-01-01 20:31:09: INFO: ISAKMP-SA established¬ 2001:db8:1:1::1[500]-2001:db8:2:2::2 [500]spi:da3d3693289c9698:ac039a402b2db4012005-01-01 20:31:09: INFO: initiate new phase 2 negotiation:¬ 2001:6f8:900:94::2 [0]<=>2001:db8:2:2::2[0]2005-01-01 20:31:10: INFO: IPsec-SA established:¬ ESP/Tunnel 2001:db8:2:2::2->2001:db8:1:1::1 spi=253935531 (0xf22bfab) 2005-01-01 20:31:10: INFO: IPsec-SA established:¬ ESP/Tunnel 2001:db8:1:1::1->2001:db8:2:2::2 spi=175002564(0xa6e53c4)
Každý směr dostal vlastní IPsec-SA (jak je definováno ve standardu IPsec ). Když provedete tcdump na příslušné rozhraní, jako výsledek IPv6 ping uvidíte: 20:35:55.305707 2001:db8:1:1::1 > 2001:db8:2:2::2: ESP(spi=0x0a6e53c4,seq=0x3) 20:35:55.537522 2001:db8:2:2::2 > 2001:db8:1:1::1: ESP(spi=0x0f22bfab,seq=0x3)
Zadaná SPI jsou dle předpokladu použita zde. Stávající aktivní parametry si vypíšeme pomocí setkey: # setkey -D 2001:db8:1:1::1 2001:db8:2:2::2 esp mode=tunnel spi=175002564(0x0a6e53c4) reqid=0 (0x00000000) E: 3des-cbc bd26bc45 aea0d249 ef9c6b89 7056080f 5d9fa49c 924e2edd A: hmac-md5 60c2c505 517dd8b7 c9609128 a5efc2db seq =0x00000000 replay=4 flags=0x00000000 state=mature created: Jan 1 20:31:10 2005 diff: 577(s) hard: 3600(s) last: Jan 1 20:35:05 2005
2001:db8:2:2::2 2001:db8:1:1::1 esp mode=tunnel spi=253935531(0x0f22bfab) reqid=0 (0x00000000) E: 3des-cbc c1ddba65 83debd62 3f6683c1 20e747ac 933d203f 4777a7ce A: hmac-md5 3f957db9 9adddc8c 44e5739d 3f53ca0e seq=0x00000000 replay=4 flags=0x00000000 state=mature created: Jan 1 20:31:10 2005 current: Jan 1 20:40:47 2005 diff: 577(s) hard: 3600(s) soft: 2880(s) last: Jan 1 20:35:05 2005 hard: 0(s) soft: 0(s) current: 312 (bytes) hard: 0(bytes) soft: 0(bytes) allocated: 3 hard: 0 soft: 0 sadb_seq=0 pid=22358 refcnt=0 IKE démon pluto IKE démon pluto je součástí distribuce projektu *S/WAN, který se dříve jmenoval FreeS/WAN. Další vývoj tohoto projektu byl bohužel zastaven v roce 2004. Kvůli pomalému tempu vývoje v minulosti se od hlavního projektu oddělily dva vedlejší produkty: StrongSwan (http://www.strongswan.org/) a Openswan (http://www.openswan.org/). V současnosti je k dispo-zici přinejmenším instalační balík Openswan (je součástí Fedora Core 3). Hlavním rozdílem oproti racoon je nutnost pouze jednoho konfiguračního souboru. Automatické nastavení po zavedení systému se provede pomocí inicializačního skriptu. Konfigurace IKE démona pluto
Konfigurace je velice podobná konfiguraci v IPv4, pouze jedna volba je důležitá. Soubor: /etc/ipsec.conf # /etc/ipsec.conf - Openswan IPsec configuration
file # # Manual: ipsec.conf.5 version 2.0 # conforms to second version of ipsec.conf specification # basic configuration config setup # Debuglogging controls: "none" for (almost) none, "all" for lots. # klipsdebug=none # plutodebug="control parsing" #Disable Opportunistic Encryption include /etc/ipsec.d/examples/no_oe.conf conn ipv6-p1-p2 connaddrfamily=ipv6 # Important for IPv6! left=2001:db8:1:1::1 right=2001:db8:2:2::2 authby=secret esp=aes128-sha1 ike=aes128-shamodp1024 type=transport #type=tunnel compress=no #compress=yes auto=add #auto=start
Nezapomeňte zde také definovat sdílený klíč.Soubor: /etc/ipsec.secrets2001:db8:1:1::1 2001:db8:2:2::2 : PSK “verysecret” Spuštění IPsec s IKE démonem pluto
Byla-li instalace Openswan úspěšná, pro spuštění IPsec by měl existovat inicializační skript. Na každém počítači pouze zadejte: # /etc/rc.d/init.d/ipsec start
Poté spusťte toto spojení na jednom počítači. Pokud zahlédnete řádek „IPsec SA established“, funguje vše správně. # ipsec auto --up ipv6-peer1-peer2 104 "ipv6-p1-p2" #1: STATE_MAIN_I1: initiate 106 "ipv6-p1-p2" #1: STATE_MAIN_I2: sent MI2, expecting MR2 108 "ipv6-p1-p2" #1: STATE_MAIN_I3: sent MI3, expertčin MR3 004 "ipv6-p1-p2" #1: STATE_MAIN_I4: ISAKMP SA established 112 "ipv6-p1-p2" #2: STATE_QUICK_I1: initiate 004 "ipv6-p1-p2" #2: STATE_QUICK_I2: sent QI2, ¬ IPsec SA established {ESP=>0xa98b7710 <0xa51e1f22}
Vzhledem k tomu, že *S/WAN a setkey/racoon používají v jádru Linuxu 2.6.x stejnou implemen-taci, můžeme zde použít setkey, abychom si ukázali stávající aktivní parametry: # setkey -D 2001:db8:1:1::1 2001:db8:2:2::2 esp mode=transport spi=2844489488(0xa98b7710) reqid=16385(0x00004001) E: aes-cbc 082ee274 2744bae5 7451da37 1162b483 A: hmac-sha1 b7803753 757417da 477b1c1a 64070455 ab79082c seq=0x00000000 replay=64 flags=0x00000000 state=mature created: Jan 1 21:16:32 2005 diff: 348(s) hard: 0(s) last:
V linuxovém jádru 2.6.x můžete získat bezpečnostní politiku a stav IPsec také pomocí ip: # ip xfrm policy ... # ip xfrm state ...
Kvalita služby (QoS) IPv6 podporuje QoS pomocí Flow Labels a Traffic Classes. K řízení můžete použít tc (součást balí-ku iproute).Doplňující informace: ■ RFC 3697.
Démoni s podporou IPv6 Nabízíme některé tipy na démony s podporou IPv6.
BIND (Berkeley Internet Name Daemon, named) IPv6 je podporováno od verze 9. Vždy používejte nejnovější možnou verzi, a to nejméně 9.1.3. Starší verze mohou obsahovat zranitelná místa zneužitelná po síti.
Naslouchání na adresách IPv6 Poznámka Na rozdíl od IPv4 stávající verze neumožňuje svázat soket na serveru s určitou adresou IPv6, takže platné adresy jsou pouze libovolná nebo žádná. Vzhledem k tomu, že může jít o bezpečnostní problém, přečtěte si i část Access Control List (ACL) v dalším textu. Aktivace démona BIND named pro naslouchání na adrese IPv6
Aktivace IPv6 pro naslouchání vyžaduje následující změnu voleb: options { # sure other options here, too listen-on-v6 { any; }; };
Výsledek po restartu by měl být následující: # netstat -lnptu |grep "named\W*$" tcp 0 0 :::53 :::* LISTEN 1234/named ¬ # incoming TCP requests udp 0 0 1.2.3.4:53 0.0.0.0:* 1234/named ¬ # incoming UDP requests to IPv4 1.2.3.4 udp 0 0 127.0.0.1:53 0.0.0.0:* 1234/named ¬ # incoming UDP requests to IPv4 localhost udp 0 0 0.0.0.0:32868 0.0.0.0:* 1234/named ¬ # dynamic chosen port for outgoing queries udp 0 0 :::53 :::* 1234/named ¬ # incoming UDP request to any IPv6
A jednoduchý test vypadá takto: # dig localhost @::1
Poté by se měl vypsat výsledek. Blokování démona BIND named pro naslouchání na adrese IPv6:
Blokování IPv6 pro naslouchání vyžaduje následující změnu voleb options { # sure other options here, too listen-on-v6 { none; }; };
Seznamy přístupových práv (Access Control Lists, ACL) s aktivací IPv6 ACL s aktivací IPv6 by se měly používat všude tam, kde je to možné. Například: acl internal-net { 127.0.0.1; 1.2.3.0/24; 3ffe:ffff:100::/56; ::1/128; ::ffff:1.2.3.4/128; }; acl ns-internal-net { 1.2.3.4 ; 1.2.3.5; 3ffe:ffff:100::4/128; 3ffe:ffff:100::5/128; };
ACL se mohou používat například při dotazování klientů nebo přenosové zóny pomocných jmenných serverů. Tím zabráníte využívání jmenných serverů IPv6 zvenčí.
Je také možné nastavit volby allow-query a allow-transfer pro většinu definovaných samo-statných zón.
Posílání dotazů s jednoúčelovou adresou IPv6 Tato volba není povinná, avšak pravděpodobně je nutno ji uvést: query-source-v6 address port <port|*>;
Jednoúčelové adresy IPv6 definované pro zóny Adresy IPv6 mohou být definovány pro zóny. Přenos zdrojové adresy
Přenos zdrojové adresy se používá pro přenosy ze zón: transfer-source-v6 [port port];
Oznámení zdrojové adresy
Oznámení zdrojové adresy se používá pro odchozí oznamovací zprávy: notify-source-v6 [port port];
Příklady zónových souborů DNS IPv6 Některé informace naleznete i na http://www.isi.edu/~bmanning/v6DNS.html. Něco užitečného asi najdete i na http:// tools.fpsn.net/ipv6-inaddr/.
Poskytování DNS dat IPv6 Pro nové typy IPv6 a kořenové zóny pro inverzní vyhledávání jsou definovány: AAAA a inverzní IP6.INT: specifikované v RFC 1886, využitelné od verze BIND 4.9.6. A6, DNAME (NYNÍ NESCHVÁLENÉ!) a inverzní IP6.ARPA: specifikované v RFC 2874, vyu-žitelné od verze BIND 9, viz také informace o současném stavu na http://www.ietf.org/ internet-drafts/. Později bude pravděpodobně doplněno, prozatím si prohlédněte stávající RFC a také: AAAA a inverzní IP6.INT: http://www.isi.edu/~bmanning/v6DNS.html. A6, DNAME (NYNÍ NESCHVÁLENÉ!) a inverzní IP6.ARPA: nahlédněte do kapitol 4 a 6 dokumentu BIND 9 Administrator Reference Manual (ARM) distribuovaného s balíkem bind nebo na adrese: http://www.nominum.com/content/ documents/bind9arm.pdf. Vzhledem k tomu, že IP6.INT není schválené (avšak používá se), DNS server, který bude podporovat informace IPv6, musí obsluhovat obě inverzní zóny. Současná nejlepší praxe
Vzhledem k tomu, že s používáním nových formátů jsou určité problémy, současná nejlepší praxe je: Podpora přímého hledání: AAAA. Podpora inverzního hledání: Inverzní „nibble“ (čtyřbitový) formát pro zónu ip6.int (PRO ZPĚTNOU KOMPATIBILITU). Inverzní „nibble“ formát pro zónu ip6.arpa (DOPORUČENO).
Ověření spojení s aktivací IPv6 Jak ověřit, jestli BIND naslouchá na soketu IPv6 a poskytuje data, se dozvíte z následujících příkladů. Spojení IPv6 odmítnuté ACL
Specifikací jednoúčelového serveru pro dotazy lze vytvořit spojení: $ host -t aaaa www.6bone.net 3ffe:ffff:200:f101::1 Using domain server: Name: 3ffe:ffff:200:f101::1 Address: 3ffe:ffff:200:f101::1#53 Aliases:Host www.6bone.net. not found: 5(REFUSED)
Odpovídající položka v logu vypadá takto: Jan 3 12:43:32 gate named[12347]: client ¬ 3ffe:ffff:200:f101:212:34ff:fe12:3456#32770: query denied
Pokud v logu uvidíte takové položky, ověřte, zda dotazy od tohoto klienta jsou povolené, a také asi bude nutné zkontrolovat konfiguraci ACL. Úspěšné spojení IPv6
Úspěšné spojení IPv6 vypadá takto:
$ host -t aaaa www.6bone.net 3ffe:ffff:200:f101::1 Using domain server: Name: 3ffe:ffff:200:f101::1 Address: 3ffe:ffff:200:f101::1#53 Aliases: www.6bone.net. is an alias for 6bone.net. 6bone.net. has AAAA address 3ffe:b00:c18:1::10
Internetový super démon (xinetd) Xinetd (http://www.xinetd.org/) podporuje IPv6 od verze asi 1.8.9. Vždy používejte nejnovější možnou verzi, a to nejméně 2.3.3. Starší verze mohou obsahovat zranitelná místa zneužitelná po síti. Některé linuxové distribuce obsahují zvláštní balík pro xinetd s aktivovanou IPv6, některé jiné spouštějí xinetd s aktivovanou IPv6 tehdy, je-li nastavená proměnná NETWORKING_IPV6 na hod-notu yes, přičemž spuštění většinou provede /etc/sysconfig/network (což však platí pouze v distribucích Red Hat a odvozených). V novějších vydáních je podpora IPv4 i IPv6 zajištěna v jedi-ném binárním souboru. Pokud aktivujete vestavěnou službu, např. daytime, modifikací konfiguračního souboru v /etc/xinetd.d/daytime , například takto: # diff -u /etc/xinetd.d/daytime.orig /etc/xinetd.d/daytime --- /etc/xinetd.d/daytime.orig Sun Dec 16 19:00:14 2001 +++ /etc/xinetd.d/daytime Sun Dec 16 19:00:22 2001 @@ -10,5 +10,5 @@ protocol = tcp user = root wait = no -disable = yes + disable = no }
V uvedeném příkladu je také výpis xinetd, který naslouchá IMAP a IMAP-SSL s IPv4. Poznámka Ve starších verzích nebylo možné spustit xinetd/IPv4 na uzlu IPv6 a naopak xinetd/IPv6 nebylo možné spustit na uzlu IPv4. Chyba byla v novějších verzích odstraněna, přinejmenším od verze 2.3.11.
Webový server Apache2 (httpd2) Webový server Apache podporuje IPv6 od verze 2.0.14. Záplaty pro starší verze řady 1.3.x nejsou aktualizované a neměly by se používat ve veřejném prostoru. Lze je nicméně nalézt na ftp://ftp.kame.net/pub/kame/misc/.
Naslouchání na adresách IPv6 Poznámka Do verze 2.0.28 nefungují virtuální počítače na adresách IPv6 (pro verzi 2.0.28 existuje záplata). Vždy však nejdříve vyzkoušejte nejnovější verzi, neboť starší verze mají určité bezpečnostní problémy. Virtuální počítač naslouchá pouze na adrese IPv6 Listen [3ffe:ffff:100::1]:80 ServerName ipv6only.yourdomain.yourtopleveldomain # ...sure more config lines
Virtuální počítač naslouchá na adrese IPv6 i na adrese IPv4 Listen [3ffe:ffff:100::2]:80 Listen 1.2.3.4:80 ServerName ipv6andipv4.yourdomain.yourtopleveldomain # ...sure more config lines VirtualHost>
Po restartu by měl být výsledek: # netstat -lnptu |grep “httpd2\W*$” tcp 0 0 1.2.3.4:80 0.0.0.0:* LISTEN 12345/httpd2 tcp 0 0 3ffe:ffff:100::1:80 :::* LISTEN 12345/httpd2 tcp 0 0 3ffe:ffff:100::2:80 :::* LISTEN 12345/httpd2
K jednoduchému testu použijte příklad s příkazem telnet shora. Doplňující poznámka ■
Kvůli urychlení přenosu podporuje Apache2 metodu zvanou „sendfile“. Některé ovladače síťových karet také podporují kontrolní součty prováděné off-line. V některých případech to může vést k problémům se spojením a chybným kontrolním součtům TCP. V takovém případě zablokujte vlastnost „sendfile“ buď novou kompilací s volbou --withoutsendfile nebo do konfiguračního souboru doplňte direktivu EnableSendfile off .
Démon pro oznamování směrovačů (radvd)
Démon pro oznamování směrovačů je v LAN velice užitečný, má-li být provedena autokonfigura-ce klienta. Démon samotný by měl běžet na implicitním směrovači brány IPv6 (tato brána však nemusí být současně implicitní bránou IPv4, takže věnujte pozornost tomu, kdo na vaší lokální síti posílá oznámení směrovače). Můžete uvést určité informace a příznaky, které by mělo oznámení obsahovat. Obvykle se uvádí: Prefix (povinný). Životnost prefixu. Četnost odesílání oznámení (volitelné). Poté co je démon správně zkonfigurovaný, odešle oznámení přes uvedená rozhraní, klienti je snad obdrží a automaticky zkonfigurují adresy se zaslaným prefixem a s implicitní trasou.
Konfigurace radvd Jednoduchá konfigurace
Konfigurační soubor radvd se obvykle jmenuje /etc/ radvd.conf. Zde je jednoduchý příklad: interface eth0 { AdvSendAdvert on; MinRtrAdvInterval 3; MaxRtrAdvInterval 10; prefix 3ffe:ffff:0100:f101::/64 { AdvOnLink on; AdvAutonomous on; AdvRouterAddr on; }; };
Výsledek na straně klienta pak vypadá takto: # ip -6 addr show eth0 3: eth0: mtu 1500 qdisc pfifo_fast qlen 100 inet6 3ffe:ffff:100:f101:2e0:12ff:fe34:1234/64 scope global dynamic valid_lft 2591992sec preferred_lft 604792sec inet6 fe80::2e0:12ff:fe34:1234/10 scope link
Vzhledem k tomu, že nebyla definovaná životnost, dosadí se vysoká hodnota. Speciální konfigurace 6to4
Verze od 0.6.2pl3 podporují automatické (re)generování prefixu v závislosti na adrese IPv4 na určeném rozhraní. Toho lze využít při distribuci oznámení v lokální síti po změně tunelu 6to4. Vět-šinou se využívá za dynamickým vytáčeným směrovačem. Kvůli zaručeně kratší době životnosti takového prefixu (po každém vytočení je platný jiný prefix) je životnost zkonfigurovaná na minimální hodnotu: interface eth0 { AdvSendAdvert on; MinRtrAdvInterval 3; MaxRtrAdvInterval 10; prefix 0:0:0:f101::/64 { AdvOnLink off; AdvAutonomous on; AdvRouterAddr on; Base6to4Interface ppp0; AdvPreferredLifetime 20; AdvValidLifetime 30; }; };
Tento výsledek na straně klienta je (předpokládejme, že ppp0 má lokální adresu IPv4 1.2.3.4): # /sbin/ip -6 addr show eth0 3: eth0: mtu 1500 qdisc pfifo_fast qlen 100 inet6 2002:0102:0304:f101:2e0:12ff:fe34:1234/64 scope global dynamic valid_lft 22sec preferred_lft 12sec inet6 fe80::2e0:12ff:fe34:1234/10 scope link
Nepřijde-li příslušné oznámení, bude prefix vzhledem ke krátké životnosti záhy odstraněn. Doplňující poznámka Pokud v inicializačních skriptech nepoužíváte zvláštní podporu 6to4, musíte na interním rozhraní směrovače nastavit speciální trasu, jinak vzniknou problémy se zpáteční trasou, viz příklad: # /sbin/ip -6 route add 2002:0102:0304:f101::/64 dev eth0 metric 1
Trasa se musí při každé změně prefixu také změnit, což je případ přiřazení adresy IPv4 vytáčenému rozhraní.
Ladění Odeslaná a přijatá oznámení si můžete prohlížet pomocí programu radvdump. Použití je jedno-duché:
# radvdump Router advertisement from fe80::280:c8ff:feb9:cef9 (hoplimit 255) AdvCurHopLimit: 64 AdvManagedFlag: off AdvOtherConfigFlag: off AdvHomeAgentFlag: off AdvReachableTime: 0 AdvRetransTimer: 0 Prefix 2002:0102:0304:f101::/64 AdvValidLifetime: 30 AdvPreferredLifetime: 20 AdvOnLink: off AdvAutonomous: on AdvRouterAddr: on Prefix 3ffe:ffff:100:f101::/64 AdvValidLifetime: 2592000 AdvPreferredLifetime: 604800 AdvOnLink: on AdvAutonomous: on AdvRouterAddr: on AdvSourceLLAddress: 00 80 12 34 56 78
Oznamovací balíky jsou na výstupu v čitelném tvaru. Měli byste v něm najít svoje konfigurační hodnoty; nenajdete-li je, oznámení pravděpodobně neposílá váš radvd ... vyhledejte na spojení jiný směrovač (a použijte LLAddress, což je fyzická adresa pro sledování).
Server DHCPv6 (dhcp6s) DHCPv6 lze využít pro stavovou konfiguraci. Démon samotný nemusí běžet pouze na implicitním směrovači brány IPv6. Můžete uvést více informací než v případě radvd. Server je velmi podobný serveru DHCP IPv4. Po správném zkonfigurování démon reaguje na obdržené vícesměrové pakety ICMPv6 odeslané klientem na adresu ff02::16.
Konfigurační soubor dhcp6s se obvykle jmenuje /etc/dhcp6s.conf. Zde je jednoduchý příklad: interface eth0 { server-preference 255; renew-time 60; rebind-time 90; prefer-life-time 130; valid-life-time 200; allow rapid-commit; option dns_servers 2001:db8:0:f101::1 sub.domain.example; link AAA { range 2001:db8:0:f101::1000 to 2001:db8:0:f101::ffff/64; prefix 2001:db8:0:f101::/64; }; };
Konfigurační soubor dhcp6s se obvykle jmenuje /etc/dhcp6s.conf. Zde je jednoduchý příklad: interface eth0 { send rapid-commit; request domainname-servers; };
Použití dhcpv6_server
Start serveru, tj. # service dhcp6s start
dhcpv6_client
Start klienta na pozadí, tj. # dhcp6c -f eth0
Ladění dhcpv6_server
Server má jeden klíč pro popředí a dva pro ladění (všechny by se měly používat pouze při ladění): # dhcp6c -d -D -f eth0
dhcpv6_client
Klient má jeden klíč pro popředí a dva pro ladění, viz příklad: # dhcp6c -d -f eth0 Oct/03/2005 17:18:16 dhcpv6 doesn't support hardware type 776 Oct/03/2005 17:18:16 doesn't support sit0 address family 0 Oct/03/2005 17:18:16 netlink_recv_rtgenmsg error Oct/03/2005 17:18:16 netlink_recv_rtgenmsg error Oct/03/2005 17:18:17 status code for this address is: success Oct/03/2005 17:18:17 status code: success Oct/03/2005 17:18:17 netlink_recv_rtgenmsg error Oct/03/2005 17:18:17 netlink_recv_rtgenmsg error Oct/03/2005 17:18:17 assigned address 2001:db8:0:f101::1002 prefix len is not in any RAs prefix length using 64 bit instead Oct/03/2005 17:18:17 renew time 60, rebind time 9
Poznamenejme, že chybová zpráva „netlink“ nemá žádný význam.
tcp_wrapper tcp_wrapper je knihovna, která slouží k ochraně libovolné služby před zneužitím.
Filtrovací funkce tcp_wrapper můžete využívat pro: Filtrování podle zdrojových adres (IPv4 nebo IPv6). Filtrování podle uživatelů (na klientovi musí běžet démon ident).
Které programy využívají tcp_wrapper Známy jsou tyto: Všechny služby volané démonem xinetd (je-li xinetd zkompilován s knihovnou tcp_wrapper). Démon sshd (je-li zkompilován s knihovnou tcp_wrapper).
Použití tcp_wrapper je řízen dvěma soubory jménem /etc/hosts.allow a /etc/hosts.deny. Další informace viz: $ man hosts.allow
Příklad souboru /etc/hosts.allow
V tomto souboru musí mít každá pozitivně filtrovaná služba (tj. spojení je přijato) vlastní řádek sshd: 1.2.3. [3ffe:ffff:100:200::]/64 daytime-stream: 1.2.3. [3ffe:ffff:100:200::]/64
Poznámka: Vyskytují se ještě i vadné implementace, které obsahují následující nesprávný popis sítě IPv6: [3ffe:ffff:100:200::/64]. Doufejme, že budou brzy odstraněny. Příklad souboru /etc/hosts.deny
Tento soubor obsahuje položky se všemi negativními filtry a obvykle by měl odmítat zbytek pomocí: ALL: ALL
Je-li uzel příliš citlivý, můžete standardní řádek shora nahradit řádkem následujícím, což však může umožnit útok typu DoS (odmítnutí služby, přetížení poštovního programu a vyrovnávacího adresáře pro spooling), pokud je v krátkém čase uskutečněno příliš mnoho spojení. Pro tento případ je pravděpodobně vhodnější nástroj logwatch. ALL: ALL: spawn (echo “Attempt from %h %a to %d at `date`” root@localhost )
| tee -a /var/log/tcp.deny.log | mail
Logy V závislosti na položce v konfiguračním souboru /etc/syslog.conf démona syslog zapisuje tcp_wra-pper obvykle do souboru /var/ log/secure. Odmítnuté spojení
Odmítnutí spojení IPv4 s démonem xinetd, který zajišťuje službu daytime, má za následek výpis podobný následujícímu příkladu: Jan 2 20:40:44 gate xinetd-ipv6[12346]: FAIL: daytime-stream libwrap ¬ from =::ffff:1.2.3.4 Jan 2 20:32:06 gate xinetd-ipv6[12346]: FAIL: daytime-stream libwrap from=3ffe:ffff:100:200::212:34ff:fe12:3456
Odmítnutí spojení IPv4 s démonem sshd, který zajišťuje dvojí naslouchání, má za následek výpis podobný následujícímu příkladu: Jan 2 20:24:17 gate sshd[12345]: refused connect from ::ffff:1.2.3.4 ¬ (::ffff:1.2.3.4) Jan 2 20:39:33 gate sshd[12345]: refused connect from 3ffe:ffff:100:200::212:34ff:fe12:3456 ¬ (3ffe:ffff:100:200::212:34ff:fe12:3456)
Povolené spojení
Povolené spojení IPv4 s démonem xinetd, který zajišťuje službu daytime, má za následek výpis podobný následujícímu příkladu: Jan 2 20:37:50 gate xinetd-ipv6[12346]: START: daytime-stream pid=0 ¬ from=::ffff:1.2.3.4 Jan 2 20:37:56 gate xinetd-ipv6[12346]: START: daytime-stream pid=0 ¬ from=3ffe:ffff:100:200::212:34ff:fe12:3456
Povolené spojení IPv4 s démonem sshd, který zajišťuje dvojí naslouchání, má za následek výpis podobný následujícímu příkladu: Jan 2 20:43:10 gate sshd[21975]: Accepted password for user from ::ffff:1.2.3.4 ¬ port 33381 ssh2 Jan 2 20:42:19 gate sshd[12345]: Accepted password for user ¬ from 3ffe:ffff:100:200::212:34ff:fe12:3456 port 33380 ssh2
vsftpd Naslouchání na adresách IPv6 Volbu pro naslouchání nastavte v konfiguračním souboru (obvykle je to /etc/vsftpd/vsftpd.conf) takto: listen_ipv6=yes
Toť vše.
proftpd Naslouchání na adresách IPv6 Volbu pro naslouchání nastavte v konfiguračním souboru (obvykle je to /etc/vsftpd/ proftpd.conf) takto (avšak pozor, ne vše je v nastavení virtuálního počítače stoprocentně logic-ké): ... Bind 2001:0DB8::1 ...
Toť vše.
Ostatní démoni Nyní je situace poměrně jednoduchá. Chcete-li naslouchat na IPv6, vyhledejte buď příslušnou volbu na příkazovém řádku nebo konfigurační hodnotu. Přečtěte si manuálové stránky démona nebo si projděte často kladené otázky. Může se stát, že z důvodu nedostatku podpory lze někdy démona svázat pouze s „libovolnou“ adresou IPv6 (any, ::), nikoli s určitou adresou. Záleží na tom, jak daleko je programátor s implementací...
Další informace a URL Programování (s použitím API) S programováním IPv6 nemám žádné zkušenosti. Možná, že kapitolu doplní někdo jiný nebo budepřenesena do jiného návodu.Informace naleznete v RFC 2553 a na adresách: http://www.ietf.org/internet-drafts/ http://jungla.dit.upm.es/~ecastro/IPv6-web/ipv6.html, aut. Eva M. Castro
Součinnost Ve světě existují projekty, které se zabývají součinností různých operačních systémů vzhledem k implementaci vlastností IPv6. Zde jsou některé odkazy: ■ TAHI Project, http://www.tahi.org/
Tištěné knihy, články, on-line časopisy (směs) Tištěné knihy (anglicky) Cisco
Cisco Self-Study: Implementing IPv6 Networks (IPV6), Regis Desmeules. Cisco Press; ISBN 1587050862; 500 stran; 1. vydání (11. 4. 2003). Configuring IPv6 with Cisco IOS, Sam Brown, Neal Chen, Robbie Harrell, Edgar, Jr. Parenti (redaktor), Eric Knipp (redaktor ), Paul Fong (redaktor), 362 stran; Syngress Media Inc; ISBN 1928994849 (12. 7. 2002). Obecné
IPv6 Essentials, Silvia Hagen, červenec 2002, O’Reilly. Obj. číslo: 1258, ISBN 0-5960-0125-8; 352 stran. ToC, Index, Sample Chapter etc.; O’Reilly Pressrelease. IPv6: The New Internet Protocol. By Christian Huitema; Vydalo Prentice-Hall; ISBN 0138505055. Popis: Autorem knihy je Christian Huitema – člen InternetArchitecture Board. Kniha nabízí vynikající popis IPv6, odlišnosti od IPv4 a otázky spojené s vývojem. Zdroj: http://www.cs.uu.nl/wais/html/na-dir/internet/tcp-ip/resource-list.html. IPv6 Networks, Niles, Kitty (ISBN 0070248079); 550 stran. Vyšlo 05/01/1998. ■ Implementing IPv6. Supporting the Next Generation Internet Protocols, P. E. Miller, Mark A. Miller. Vydavatel: John Wiley & Sons; ISBN 0764545892; 2. vydání (15/03/2000); 402 stran.
Big Book of IPv6 Addressing Rfcs, Peter H. Salus (překlad ); vyd. Morgan Kaufmann Publishers; 04/2000; 450 stran; ISBN 0126167702. Understanding IPV6, Davies, Joseph; ISBN 0735612455. Vyšlo 05/01/2001; 350 stran. Understanding IPV6, Davies, Joseph; ISBN 0735612455. Vyšlo 13/11/2002; 544 stran. Migrating to IPv6 – IPv6 in Practice, Marc Blanchet. Vydavatel: John Wiley & Sons; ISBN 0471498920; 1. vydání (11/2002); 368 stran. Ipv6 Network Programming, Jun-ichiro Hagino; ISBN 1555583180. Wireless boosting IPv6, Carolyn Duffy Marsan, 23/10/2000. O’Reilly Network, klíčové slovo IPv6, 29 odkazů (28/01/2002).
Tištěné knihy (německy) Technik der IP-Netze (TCP/IP incl. IPv6); vyd. Amazon.de; Anatol Badach, Erwin Hoffmann; Carl Hanser Verlag; München, Wien, 2001 ISBN 3-446-21501-8. Kap. 6: Protokol IPv6, s. 205-242. Kap. 7: Plug&Play – podpora IPv6; s. 243-276. Kap. 8: Migrace v IPv6, s. 277–294. Kap. 9.3.4: RIP protokolu IPv6 (RIPng), s. 349-351. Kap. 9.4.6: OSPF pro IPv6, s. 384-385. Komentář: nikoli zcela aktuální a nikoli zcela bez chyb. ■ Internet-Sicherheit (Browser, Firewalls und Verschlüsselung); vyd. Amazon. Kai Fuhrberg. 2. uprav. vyd., vyšlo r. 2000, Carl Hanser Verlag, München, Wien, ISBN 3-446-21333-3. Kap. 2.3.1.4. IPv6, s. 18-22. Stručný přehled: RFC1825 – Security Association Konzept RFC1826 – IP authentication Header RFC1827 – IP Encapsulation Security Payload. IPv6. Das neue Internet-Protokoll. Technik, Anwendung, Migration; vyd. Amazon Hans Peter Dittler. 2. upr. a doplň. vyd. 2002, ISBN 3-89864-149-X. Das neue Internetprotokoll IPv6; vyd. Amazon Herbert; Wiese 2002;Carl Hanser Verlag, ISBN 3446216855.
Tištěné knihy (česky) IPv6. Satrapa Pavel, Neokortex 2002; 238 stran; ISBN 80-86330-10-9. Patrně jediná česká kniha věnovaná výhradně IPv6. TCP/IP v kostce, Pužmanová Rita; Kopp 2004; 608 stran; ISBN 80-7232-236-2. Podrobný popis protokolů TCPI/IP, zabývá se částečně i IPv6.
Články, eKnihy, on-line časopisy (směs) Getting Connected with 6to4, http://www.onlamp.com/pub/a/onlamp/2001/06/01/ipv6_ tutorial.html, Huber Feyrer, 06/01/2001. Transient Addressing for Related Processes: Improved Firewalling by Using IPv6 and Mul-tiple Addresses per Host; written by Peter M. Gleiz, Steven M. Bellovin (PC-PDF-Version: http://www.securiteinfo.com/ebooks/pdf/tarp.pdf; Palm-PDFVersion: http://www.securite info.com/ebooks/palm/tarp.pdf; PDB-Version: http://www.securiteinfo.com/ebooks/ pdb/tarp.pdb). ■ IPv6, théorie et pratique (francouzsky); http://www.oreilly.fr/catalogue/ipv6-3ed.html; 3. vydání, 03/2002, O'Reilly; ISBN 2-84177-139-3. IPSec (francouzsky), http://www.securiteinfo.com/crypto/IPSec.shtml. Internetworking IPv6 with Cisco Routers, http://www.ip6.com/index.html, Silvano Gai, McGrawHill Italia, 1997. 13 kapitol a přílohy A-D si lze stáhnout jako dokumenty PDF. Secure and Dynamic Tunnel Broker, http://www.vermicelli.pasta.cs.uit.no/ipv6/ students/vegars/, Vegar Skaerven Wang, Disetrační práce v IT; 02/06/2000; Faculty of Sci-ence, Dep.of Computer Science, University of Tromso, Norsko. Aufbruch in die neue Welt – IPv6 in IPv4 Netzen, http://www.old.netobjectdays.org/pdf/ 99/stja/doering.pdf. Dipl. Ing. Ralf Döring, TU Illmenau, 1999. Migration and Co-existence of IPv4 and IPv6 in Residential Networks, http://www.csc.fi/~psavola/residential.html; Pekka Savola, CSC/FUNET, 2002.
Vědecké publikace (abstrakty, bibliografie, on-line zdroje) GEANT IPv6 Workplan, http://www.ipv6.ac.uk/gtpv6/workplan.html. A simulation study on the performance of Mobile IPv6 in a WLAN-based cellular network, Perez Costa X.; Hartenstein H. Computer Networks, 09/2002, sv. 40, č. 1, s. 191–204 (14); Elsevier Science. IPv6 Trials on UK Academic Networks: Bermuda Project; Aug. 2002; http://www.ipv6.ac.uk/ bermuda2/, Participants – Getting connected – Project deliverables – Network topology – Address assignments – Wireless IPv6 access – IPv6 migration – Project presentations – Internet 2 – Other IPv6 projects – IPv6 fora and standards Bermuda 2... http://www.ipv6.ac.uk/, http://www.ipv6.ac.uk/. A scalable parallel internet router that enables the QoS through merging ATM with IPv6. Song S. – Computer Communications, 01/05/2002, sv. 25, č. 7, s. 647–651 (5) – Elsevier Science. ■ Linux IPv6: Which One to Deploy? Linux Journal, č. 96, s. 86, 88–90, 04/2002. ■ An overview and analysis of mobile Internet protocols in cellular environments; http://www.ingenta.com/isis/ searching/ExpandSearch/ingenta?year_to=2002&year_from=1 997&date_type=range&title=IPv6&title_type=tka&database=1&newMatches=false&page-Start=1&index=3, Chao H-C. –
Internet Research: Electronic Networking Applications and Policy, 24/10/2001, sv. 11, č. 5, s. 435–450 (16) – MCB University Press IPv6 for Future Wireless NetworksToftegaard Nielsen T. – Wireless Personal Communicati-ons, June 2001, sv. 17, č. 2/3, s. 237–247 (11) – Kluwer Academic Publishers, Dordrecht, Nizozemí. IPv6 at the University of Southampton, http://www.ipv6.ecs.soton.ac.uk/ Seamless Support for Mobile Internet Protocol Based Cellular Environments, Chao H-C.; Chu Y-M. – International Journal of Wireless Information Networks, 07/2001, sv. 8, č. 3, s. 133–153 (21) – Kluwer Academic/Plenum Publishers, New York, USA. IPv6: The Solution for Future Universal Networks. Lecture Notes in Computer Science, sv. 1818, s. 82, 2000. Modeling and performance analysis for IPv6 traffic with multiple QoS classes. Zhang L.; Zheng L. – Computer Communications; 09/2001, sv. 24, č. 15, s. 1626–1636 (11) – Elsevier Science. Threshold-Based Registration (TBR) in Mobile IPv6. Lecture Notes in Computer Science, sv. 1818, s. 150, 2000. IPv6 Performance Analysis on FreeBSD Workstation Using Simple Applications. Lecture Notes in Computer Science, sv. 1961, s. 33, 2000. Microsoft Research IPv6 Implementation (MSRIPv6): http://www.research.microsoft.com/ msripv6/. New fr, http://www.ingenta.com/isis/searching/ExpandSearch/ingenta?year_to=2002&year from=1997&date_type=range&title=IPv6&title_type=tka&database=1&newMatches=false&p ageStart=1&index=9.
Hlavní regionální rejstříky Amerika: ARIN, http://www.arin.net/. Evropa a Blízký východ: Ripe NCC, http://www.ripe.net/. Asie/Pacifik: APNIC, http://www.apnic.net/. Latinská Amerika a Karibik: LACNIC, http://lacnic.org/. Afrika: AfriNIC, http://www.afrinic.org/. Seznam hlavních (délka prefixu 32) umístění lokálních registrů je zde: http://www.ripe.net/ ripencc/mem-services/registration/ ipv6/ipv6allocs.html.
Tuneloví makléři Sourcecode, http://www.vermicelli.pasta.cs.uit.no/ipv6/students/vegars/TunnelBroker/; viz Vermicellis, disertační práce o tunelových makléřích, University of Tromso, Norsko. Původní IPng. Tunelový makléř a zdroje IPv6, nyní migrovalo do http://www.sixxs.net/main/. Eckesovy stránky: IPv6-with-Linux, http://sites.inka.de/lina/linux/ipv6.html. tunnelc – tunelový klientský skript založený na perl: freshmeat.net; http://freshmeat.net/ projects/tunnelc, SourceForge: http://sourceforge.net/projects/tunnelc Linux Advanced Routing & Traffic Control HOWTO, http://howtos.linuxbroker.com/ howtoreader.shtml?file=Adv-Routing-HOWTO.html#LARTC.TUNNEL-IPV6.ADDRESSING. Další informace a URL na http://www.ipv6-net.de/.
Novinky a URL ostatních dokumentů Náměty uvítáme! http://www.ipv6-net.de/, německé fórum. http://www.estoile.com/links/ipv6, aut. Anil Edathara.
Odkazy na protokoly RFC/IPv6
autor
http://www.join.uni-
Rozsah tohoto dokumentu neumožňuje publikování seznamu RFC/IPv6, avšak následující URL vás k tomuto seznamu přivedou: Setříděný seznam je v http://playground.sun.com/pub/ipng/html/specs/standards.html nebo v http://playground.sun.com/ pub/ipng/html/specs/specifications.html, aut. Robert Hinden. http://www.ipv6.org/specs.html na IPv6.org. Návrhy pracovních skupin
Návrhy pracovních skupin, které se týkají IPv6, naleznete na: http://www.ietf.org/ids.by.wg/ipv6.html http://www.ietf.org/ids.by.wg/ngtrans.html http://www.ietf.org/ids.by.wg/dhc.html http://www.ietf.org/ids.by.wg/dnsext.html http://www.ietf.org/ids.by.wg/mobileip.html http://playground.sun.com/pub/ipng/html/ipng-main.html (včetně dostupnosti zásobníků na různých platformách & zdrojový kód pro zásobníky IPv6) Ostatní
http://www.networksorcery.com/enp/protocol/ipv6.htm, hlavička protokolu IPv6 http://www.switch.ch/lan/ipv6/references.html, velký seznam odkazů na IPv6, který udržu-je Simon Leinen.
Další informace http://www.deepspace6.net/sections/links.html Vztahující se k určité distribuci Linuxu
PLD http://www.pld-linux.org/ („jednička na trhu“ v balících IPv6) Red Hat http://www.redhat.com/, http://www.netcore.fi/pekkas/linux/ipv6/ (Pekka Savola) Debian http://www.debian.org/, http://people.debian.org/~csmall/ipv6/, Jims_LAN_IPv6_global_connectivity_howto.html
http://www.jipo.org/jim/
Novell/openSUSE http://www.novell.com/linux/suse/ Mandriva Linux http://www.mandriva.com/ Další na stránkách http://www.bieringer.de/linux/IPv6/status/IPv6+Linux-status-distributions.html.
Obecně
http://www.ipv6.org/ http://www.6bone.net/ http://www.cs-ipv6.lancs.ac.uk/ – Spojené království http://www.ipv6forum.com/ – světové konsorcium internetových prodejců, Research & Education Networks http://playground.sun.com/pub/ipng/html/ipng-main.html – udržuje Robert Hinden, Nokia. Veškeré informace o IPv6, od přehledů přes RFC & návrhy až k implementacím (včetně dostupnosti zásobníků na různých platformách & zdrojový kód pro zásobníky IPv6) http://www.6init.com/ – Internetová iniciativa IPv6 – Pátý rámcový program EU, součást programu IST.. http://www.ipv6-taskforce.org/ http://www.6init.org/ – IPv6 INternet IniTiative http://www.isoc.org/HMP/PAPER/PT1/html/pt1.html.hinden http://www.usenix.org/publications/library/proceedings/ana97/summaries/deering.html, aut. Steve Deering http://www.garykessler.net/library/ipv6_exp.html, aut. Gary C. Kessler http://www.3com.com/nsc/ipv6.html – 3Com http://www.ngi.gov/ http://www.internet2.org/ a http://ipv6.internet2.edu/ – http://ipv6.internet2.edu/ presentations/ z dílen IPv6 (Bezstavová autokonfigurace, adresování IPv6, USAGI, adreso-vání IPv6 nezávislé na poskytovateli a další témata) NetworkWorldFusion (102 dokumentů k datu 22. 12. 2002) http://www.theregister.co.uk/ (30 dokumentů IPv6, 22. 12. 2002) http://zdnet.search.com/search?cat=279&q=IPv6 http://whatis.techtarget.com/wsearchResults/1,290214,sid9,00.html?query=IPv6
http://www.faqs.org/faqs/internet/tcp-ip/resource-list/index.html http://ipv6.klingon.nl/, http://www.ipv6.klingon.nl/: příklady firewallů IPv6, testování šířky pásma a portscanner Informace v češtině
Bezpečnost IPv6 Internet Security Systems: Security Center, http://www.iss.net/security_center/search.php? type= 3&type=3&pattern=IPv6 (21. 12. 2002 – nalezeno 6 částí věnovaných IPv6) http://csrc.nist.gov/ipsec/ (National Institute of Standards and Technology, NIST) http://www.infosecuritymag.com/index.shtml http://neworder.box.sk/search.php3?srch=IPv6 (články, využití, soubory, databáze atd.)
Seznamy aplikací http://www.deepspace6.net/docs/ipv6_status_page_apps.html http://www.ipv6.org/v6-apps.html http://freshmeat.net/search/ ?q=IPv6, v současnosti (14/12/2002) 62 projektů Fórum IPv6: http://www.ipv6forum.com/navbar/links/v6routerlist.htm Nástroje na analýzu
http://www.wireshark.org/ – Wireshark (dříve Ethereal) je volně dostupný analyzátor pro-tokolů v systémech Unix a Windows. http://www.ip6.com/us/analyzer.htm. Stáhnout lze: Radcom RC100-WL protocol analyzer, verze 3.20. Produkty IPv6
http://www.6wind.com/ – řešení pro směrovače IPv4/IPv6, QoS, vícesměr, mobilitu, bez-pečnost/VPN/firewally. http://www.fefe.de/dns/ 08/2002 – Co je djbdns a proč potřebuje IPv6? (djbdns je plnohod-notný DNS server, který předčí BIND prakticky ve všech ohledech) http://www.ipinfusion.com/products/server/products_server.html. Inframail (Advantage Server Edition) 6.0, http://download.com.com/3000-2165-8202652.html?tag=lst-0-2. http://download.com.com/3000-2377-10149393.html?tag=lst-0-1. ftp://ftp.porcupine.org/pub/ipv6/. SNMP ■
Propojovací centra Seznam propojovacích center lze nalézt na: http://www.v6nap.net/ nebo na http://www.euro-ix.net/isp/choosing/search/matrix.php. Evropa ■
http://www.euro6ix.net/, European IPv6 Internet Exchange Backbone
USA
http://www.6tap.net/: Chicago. Supports peerings around the globe http://www.ny6ix.net/: New York City IPv6 based Internet Exchange http://www.paix.net/: Palo Alto
Tuneloví makléři Viz také: http://www.deepspace6.net/docs/tunnelbrokers.html Evropa ■
http://www.xs26.net/, USA & Evropa
Německo
http://6bone.informatik.uni-leipzig.de/ http://fix.ipv6.berkom.de/cgi-bin/tb.pl USA
http://www.es.net/hypertext/welcome/pr/ipv6.html, USA – Energy Sciences Network: Tun-nel Registry & Address Delegation for directly connected ESnet sites and ESnet collabo-rators. http://www.6ren.net/, USA – Iniciativa 6ren je koordinovaná společností Energy Sciences Network (ESnet), což je síť pro energetický výzkumný program Ministerstva pro energii USA, je umístěna v kalifornské laboratoři Lawrence Berkeley National Laboratory. http://www.xs26.net/, USA & Evropa http://ipv6tb.he.net/, US backbone; http://tunnelbroker.com/ Další tuneloví makléři... ■
http://www.kfu.com/~nsayer/6to4/ (bojkot MS IIE!)
Služby IPv6 Poznámka: Tyto služby jsou většinou dostupné pouze s platným připojením IPv6! Novinky na síti (NNTP) ■
nntp://news.ipv6.scarlet-internet.nl/ (dostupné přes všechny SixXS POPy).
Server s hrami ■
http://www.viagenie.qc.ca/en/ipv6/quake2/ipv6-quake2.shtml přes IPv6.
IRC Server ■
http://ipv6.cyconet.org/?id=server (Cyconet IRCnet Servery prostřednictvím IPv6).
Rozhlasové stanice, hudební kanály
http://aopteryx.informatik.uni-leipzig.de:8000/live.mp3, Lipská univerzita, Německo. http://www.ipv6.bieringer.de/. www server
Ještě něco chybí? Náměty uvítáme!
E-mailové konference Seznam konferencí naleznete na: ■ http://www.deepspace6.net/sections/lists.html. Hlavní konference jsou uvedeny v následující tabulce: Téma e-mailová adresa Co lze vybrat Adresa konference Jazyk Přístup přes WWW Jádro Linuxu, sítě majordomo (at) včetně IPv6 oss.sgi.com
netdev
Linux a IPv6 majordomo (at) obecně (1) list.f00f.org
Pomocné aplikace http://www.tdoi.org/prefcalc.php, aut. http://www.tdoi.org/, http://www.maths.tcd.ie/cgi-bin/check_dns.pl.
Školení, semináře http://www.aerasec.de/workshops/ipv6.html, AERAsec, Německo (prozatím pouze v němči-ně). http://www.seminarinformation.com/wconnect/wc.dll?sis~details0~194045, Learning Tree International. http://www.e-trainonline.com/html/ciw_internetworking_profession.html#IPv6, CIW Inter-networking Professional Training CBT CD. http://www.trainingpages.net/x/category.html?kw=125, U.K. (13 kurzů, 22. 12. 2002). Chybí něco? Náměty uvítáme!
„Výzkum on-line“ IPv6: Addressing The Needs Of the Future, http://www.amazon.com/exec/obidos/tg/detail/-/B00006334Y/ copernicshopper/103-1420916-1341420 [KE STAŽENÍ V PDF], Yankee Group (autor). Cena: $595.00. Vydání: e-book (Acrobat Reader). Počet stran: 3 (tři). Vydavatel: Marke-tResearch.com; ISBN B00006334Y (1/11/2001). Zajímavý by mohl být počet výtisků...
Stručný úvod do IRC Úvod Informace týkající se probíraných témat naleznete i v následujících příručkách: Dokument RFC 1459 (Jarkko Oikarinen a Darren Reed) se jako první věnoval protokolu Internet Relay Chat Protocol – http://ftp.isi.edu/in-notes/rfc1459.txt RFC 2810 (Christophe Kalt) aktualizuje RFC 1459 a popisuje architekturu Internet Relay Chat – http://ftp.isi.edu/innotes/rfc2810.txt RFC 2811 (Christophe Kalt) aktualizuje RFC 1459 a popisuje správu kanálů IRC – http://ftp.isi.edu/in-notes/rfc2811.txt ■ RFC 2812 (Christophe Kalt) aktualizuje RFC 1459 a popisuje klientský protokol IRC – http://ftp.isi.edu/in-notes/rfc2812.txt ■ RFC 2813 (Christophe Kalt) aktualizuje RFC 1459 a popisuje serverový protokol IRC – http://ftp.isi.edu/in-notes/rfc2813.txt Navštívit byste měli i web http:// www.irchelp.org/.
Cíle Kromě jiného jsou cíle tohoto dokumentu následující: Seznámit se s odkazy na důležité zdroje, které se zabývají IRC Předejít častým chybám při používání IRC Seznámit se s oblíbenými klienty, servery, roboty (bots), proxy bránami (bouncers) a jejich správci, s IRC #kanály, stručným popisem, možností stažení, domovskými stránkami a radami Seznámit se s dostupnými nástroji IRC
O IRC Výňatek z RFC2810: Protokol IRC (Internet Relay Chat) se používá při textově založených konferencích. Vyvíjí se od roku 1989, kdy byl původně implementován jako prostředek pro uživatele na BBS, kteří mezi sebou chatovali. Poprvé protokol formálně zdokumentovala v květnu roku 1993 příručka RFC 1459 [IRC] a od té doby se neustále rozvíjí. Protokol IRC je založen na modelu klient/server a je vhodný pro použití u množství počítačů v různých umístěních. Typická instalace představuje jediný krok (server), při němž se vytvoří cent-rální bod pro klienty (či jiné servery), ke kterým se připojuje a probíhá doručování zpráv/více-směrové vysílání a další funkce. Tento model, který vyžaduje, aby každý server měl kopii informací o globálním stavu, je stále největším problémem protokolu, protože se tím omezuje maximální velikost, jaké může síť dosáhnout. Jestliže se existující sítě mohly dostatečně rozrůstat, musíme poděkovat výrobcům hardwaru, že nám dodávají stále výkonnější systémy.
Stručná historie IRC První démon pro IRC vytvořil v polovině roku 1998 Jarkko „WiZ“ Oikarinen z univerzity v Oulu,Finsko. Původně byl vytvořen podle BBS jako náhrada programu Talk a rychle se rozšiřoval ; nej-dříve ve Skandinávii a následně i ve zbytku světa. Během jednoho roku existovalo přes 40 pro-pojených serverů. V dané fázi existovala pouze jedna síť, proto nebylo nutné ji pojmenovat – jmenovala se jedno-duše „IRC“; s rozrůstáním sítě však začalo docházet k nedorozuměním. IRC byl dosti chaotickýmmédiem s rozdělenými sítěmi, kolizemi nicků a různými propojeními komunikačních kanálů; bylonevyhnutelné, aby se uživatelé v určité fázi rozhodli vytvořit své vlastní sítě. K jednomu z prvních podstatných rozdělení došlo v roce 1992, kdy Wildthang vytvořil síť Under-net. Původně mělo jít o testovací síť, ale síť Undernet se rychle rozrůstala a díky zavádění služebpro ochranu uživatelů a komunikačních kanálů získala pověst přátelské sítě. O dva roky později se rozdělila i síť Undernet a vznikla nová síť s názvem DALnet. Zakladatelemsítě DALnet byl dalvenjah, který povýšil princip služeb sítě Undernet na novou úroveň a zavedlregistraci nicků, linky G-lines a nabízel i další funkce. Mezitím se změnily i názory v síti IRCnet (pod tímto názvem byla nyní známá síť IRC). Síť IRCnetvzdorovala principu „vlastnictví komunikačního kanálu/nicku“, který zavedly sítě Underneta DALnet, bylo však nutné řešit neustálé protínání komunikačních kanálů. Představeny byly dvěrůzné možnosti: prodleva nicku/komunikačního kanálu a časová razítka (informace naleznete nawebu http://www.irc-help.org), došlo však k rozhořčené debatě o tom, kterou z možností imple-mentovat. V červenci roku 1996 se síť IRCnet rozdělila, přičemž se většina severoamerických serverů zfor movala do sítě EFnet a síť IRCnet tak zůstala převážně evropská.Od té doby vznikly stovky dalších menších sítí, z nichž většina používá upravené verze DALnet,EFnet, IRCnet či Undernet.
Začínáme používat IRC Standardním klientem IRC je původní ircII. Je součástí většiny distribučních balíčků systému Linux a je od něj odvozena většina ostatních textově založených klientů IRC (zvláště BitchX a EPIC).
Spuštění programu ircII Používání klienta ircII je snadné. Řekněme například, že se chcete připojit k irc.freenode.net jako uživatel mini-HOWTO. Do příkazového řádku napište: $ irc mini-HOWTO irc.freenode.net
Můžete také exportovat proměnné, abyste je nemuseli používat v příkazovém řádku. Pro uživate-le bash a zsh:
Uživatelé csh a tcsh uvedou setenv místo export. Po dokončení přidejte proměnné do svého profilu shell (například ~/.bash_profile či ~/.zpro-file, viz část „Úvod do Linuxu“, kapitolu „Konfigurační soubory shellu“). Dalšími běžnými proměnnými jsou IRCNAME a IRCUSER pro nastavení části ircname v /whois a uživatelské jméno v prvním řádku „mini-HOWTO ~username@hostname (ircname)“. Nezapomínejte, že IRCUSER nebude fungovat, pokud používáte ident daemon (který je ve většině distribučních balíčků výchozí). Potřebujete-li změnit své uživatelské jméno (nedoporučuje se, abyste používali IRC při přihlášení jako root!), nainstalujte oidentd z webu http://ojnk.sourceforge.net/. Informace pro konfiguraci naleznete v dokumentu oidentd.conf. Nakonec spusťte: # /usr/local/sbin/oidentd -g nobody -u nobody
Po dokončení přidejte příkaz do svých spouštěcích skriptů (například /etc/rc.d/rc.local). Pokud nejsou proměnné IRCNICK , IRCUSER a IRCNAME nastaveny, budou získány z /etc/passwd (čili z informací o uživateli).
Příkazy Pro zobrazení seznamu všech dostupných příkazů použijte /help (nápověda /help je dobrý začá-tek). Nahraďte nick jakýmkoli IRCNICK. Nejdříve vypněte /set NOVICE. /nick IRC-mini-HOWTO změní proměnnou IRCNICK na IRC-mini-HOWTO. /set realname The Linux IRC mini-HOWTO změní proměnnou IRCNAME na The Linux IRC mini-HOWTO (nemění se u stejného připojení). /j #mini-HOWTO se připojí ke komunikačnímu kanálu #mini-HOWTO. /j #unmaintained-HOWTO se připojí ke komunikačnímu kanálu #unmaintained-HOWTO. /j #mini-HOWTO změní aktuální aktivní komunikační kanál na #mini-HOWTO. /msg nick Ahoj odešle soukromou zprávu pro nick obsahující Ahoj. /notice nick (či #mini-HOWTO) Ahoj. odešle oznámení pro nick (či #mini-HOWTO) obsa-hující Ahoj. /query nick spustí soukromou konverzaci s nickem; /query ukončí soukromou konverzaci. /me uses Linux odešle akci do aktuálního komunikačního kanálu či dotaz obsahující IRC-mini-HOWTO loves Linux. /dcc chat nick zahájí chat s nickem. Použijte /msg =nick (všimněte si znaku = ) pro odesí-lání zpráv prostřednictvím chatu. /dcc send nick /etc/HOSTNAME odešle daný soubor nicku. /dcc get nick přijme soubor nabízený nickem. /part opustí aktuální aktivní komunikační kanál. /part #unmaintained-HOWTO opustí kanál #unmaintained-HOWTO. /discon se odpojí od aktuálního IRCSERVER. /server irc.oftc.net připojí k IRCSERVER irc.oftc.net. /quit Bye ukončí vaši relaci IRC s důvodem Bye. Většina z výše uvedených příkazů (včetně použití proměnných prostředí) bude fungovat také v jiných textově založených klientech.
Etiketa služby IRC VAROVÁNÍ ■
Nikdy nepoužívejte IRC, jste-li přihlášení jako root či jako kterýkoli jiný uživatel s rozšíře-nými oprávněními. Dříve či později se něco stane. Varovali jsme vás. Velmi doporučujeme, abyste vytvořili uživatele, který bude sloužit pouze k používání služby IRC. Viz: $ man adduser
V komunikačních kanálech Linux byste neměli: Chovat se jako idiot. Chcete-li být respektováni, respektujte všechny ostatní. Používat barvy (^C). Většina uživatelů systému Linux takové blázniviny pocházející z programu mIRC netoleruje a ircII je ve skutečnosti nepodporuje. To samé platí pro ANSI. Používat pouze velká písmena (CAPS), tučné písmo (^B), reverzní znaky (^V), podtržení (^_), blikání (^F) a zvonění (^G). První 4 slouží ke zdůraznění slov, ne celého textu. Poslední 2 jsou jednoduše otravné. Ptát se, zda se můžete na něco zeptat. Prostě se zeptejte, předtím si však přečtěte veš-kerou dostupnou dokumentaci týkající se daného tématu. Začněte s /usr/share/doc (v některých systémech může jít o /usr/doc), případně navštivte web http:// www.tldp.org/ nebo http://www.ibiblio.org/pub/Linux/docs/. Neopakujte své otázky několikrát za sebou. Počkejte alespoň 10 minut. Nedostanete-li žádnou odpověď, je to proto, že vám nikdo nemůže nebo nechce pomoci. Respektujte jejich volbu, nejsou vaši-mi osobními asistenty. Nikdy také neposílejte příliš mnoho soukromých zpráv. Je to stejné jako se spamem.
Klienti IRC pro textový režim ircII Správce: ircII project.Komunikační kanál IRC: #ircII (oficiální komunikační kanál) v síti EFNet http://www.efnet.org/? module=servers. ircII vytvořil Michael Sandrof a je k dispozici ve většině distribucí Linuxu. Používá termcap a není vhodný pro většinu uživatelů, jedná se však o standard. Používat jej bude Mathusalem a další odborníci. Méně zkušení budou po jeho instalaci litovat. Aktuální verzi ircII získáte na webu ftp://ircii.warped.com/pub/ircII/. Domovskou stránku nalez-nete na internetové adrese http:// www.eterna.com.au/ircii/.
EPIC Správce: EPIC Software Labs.Komunikační kanál IRC: #EPIC v síti EFNet. Klient EPIC (Enhanced Programmable ircII Client) je založen na ircII a je určen pro skutečné tvůr-ce skriptů a uživatele, kteří hledají svobodu. Při jeho prvním spuštění zjistíte, že byste se skuteč-ně měli naučit základy skriptování. Aktuální verzi EPIC získáte na webu http://prbh.org/?page=ftp. Domovskou stránku naleznete na internetové adrese http:// www.epicsol.org/.
BitchX Správce: Colten Edwards.Komunikační kanál IRC: #BitchX v síti EFNet.Původně se jednalo o skript pro ircII, nyní je však BitchX oblíbeným klientem, který snižuje potřebu vytváření skriptů, protože nabízí obrovské množství funkcí v klientovi jako takovém (všechny dostupné funkce si nezapamatují ani zkušení uživatelé). BitchX bývá považován za přeceňovaný software, mezi uživateli je však velmi oblíbený. Aktuální verzi BitchX získáte na webu http://www.bitchx.org/download.php. Domovskou stránkunaleznete na internetové adrese http://www.bitchx.org/. BitchX pravděpodobně najdete i ve svédistribuci Linuxu.
irssi Správce: Timo Sirainen. Komunikační kanál IRC: #irssi na webu freenode (http://freenode.net/irc_servers.shtml) a IRCnet (http://www.ircnet.org/). Timo zveřejnil v roce 1997 klienta yagIRC. Jednalo se o grafického klienta, který využíval sadu nástrojů GTK+. Rok poté byl povolán na vojnu a nikdo nepřevzal správu klienta yagIRC. Po návra-tu vytvořil klienta irssi jako náhradu za yagIRC. Používal GTK+. Později se objevily verze pro GNOME a textovou konzoli. Od verze 0.7.90 se jedná pouze o klienta ve standardním textovém režimu. Podporuje skriptování v jazyce Perl. Aktuální verzi irssi získáte na webu http://irssi.org/?page=download. Domovskou stránku nalezne-te na internetové adrese http:// irssi.org/.
Další textoví klienti IRC Existuje několik dalších klientů založených na ircII: Blackened (ftp://ftp.blackened.com/pub/irc/blackened/). Ninja (ftp://qoop.org/ninja/). ScrollZ (http://www.scrollz.com/).
Klienti IRC pro X Window Zircon Správce: Lindsay F. Marshall.Komunikační kanál IRC: Žádný?Vytvořen v Tcl/Tk, používá nativní komunikaci Tcl.Aktuální verzi Zircon získáte na webu ftp://catless.ncl.ac.uk/pub/. Domovskou stránku naleznete na internetové adrese http://catless.ncl.ac.uk/Programs/Zircon/.
KVIrc Správce: Szymon Stefanek.Komunikační kanál IRC: #KVIrc na webu freenode.Tento klient je vytvořen také v knihovně Qt, přičemž je velmi výkonný. Podporuje DCC Voice,
vestavěný skriptovací jazyk a moduly plug-in.Aktuální verzi KVIrc získáte na webu http://www.kvirc.net/?id=download. Domovskou stránkunaleznete na internetové adrese http://www.kvirc.net/.
X-Chat Správce: Peter Zelezny.Komunikační kanál IRC: #Linux na webu ChatJunkies – http://www.chatjunkies.org/servers.php.Používá GTK+, případně i GNOME, podporuje skriptování Perl a Python.Aktuální verzi X-Chat získáte na webu http://xchat.org/ download/. Domovskou stránku naleznete na internetové adrese http://xchat.org/.
QuIRC Správce: Patrick Earl.Komunikační kanál IRC: #QuIRC v síti DALnet – http://www.dal.net/servers/index.php3.Za použití Tk, podporuje Tcl pro skriptování.Aktuální verzi QuIRC získáte na webu http://quirc.org/.
Servery IRC IRCD Správce: vývojáři ircd.Komunikační kanál IRC: #ircd v síti IRCnet.Původní daemon IRC používaný hlavně v síti IRCnet. Novější verze se pokusily zdokonalit zabezpečení komunikačních kanálů prostřednictvím dalších typů kanálů (například !linux) a režimů kanálů.Aktuální verzi IRCD získáte na webu ftp://ftp.irc.org/irc/server/. Domovskou stránku naleznete nainternetové adrese http://www.irc.org/.
IRCD-Hybrid Správce: Neznámý?Komunikační kanál IRC: Žádný?Používaný hlavně v síti EFNet. Hybrid se zaměřuje na rychlost a výkon, přičemž mu chybí mnoho služeb nabízených v jiných sítích. Podle filozofie sítě EFnet, že se klienti nemají zabývat chodemkomunikačních kanálů, nepovoluje Hybrid klientům nastavovat režimy v kanálech či se připojo-vat ke kanálům, z kterých byli vyloučeni. Není tomu tak dávno, kdy Hybrid nabídl možnost, abyslužba znovu aktivovala kanál bez klientů. Aktuální verzi IRCD-Hybrid získáte na webu http://ftp1.sourceforge.net/ircd-hybrid/. Domovskoustránku naleznete na internetové adrese http://www.ircd-hybrid.org/.
ircu Správce: Undernet Coder Committee.Komunikační kanál IRC Channel: #ircu v síti Undernet (http://www.undernet.org/ servers.php).Používá se převážně v síti Undernet. Po řadě útoků DDoS v letech 2001/2002 nabídl klient ircu uživatelům a serverům možnost skrývat své adresy. Ze sítě Undernet bylo také odstraněno mnoho příkazů /stats.Aktuální verzi ircu získáte na webu http://ftp1.sourceforge.net/undernet-ircu/. Domovskou stránkunaleznete na internetové adrese http://coder-com.undernet.org/.
Bahamut Správce: DALnet Coding Team.Komunikační kanál IRC: #Bahamut v síti DALnet.Bahamut je server DALnet založený na DreamForge a Hybrid. Mezi funkce patří registrace komunikačních kanálů a nicků, podpora pro délku nicků až 15 znaků a evidenční služba.Aktuální verzi Bahamut získáte na webu http:// bahamut.dal.net/download.php. Domovskou strán-ku naleznete na internetové adrese http://bahamut.dal.net/.
IRC „bots“ Eggdrop Správce:Komunikační kanál IRC: #eggdrop v síti Undernet.Eggdrop nabízí silnou ochranu komunikačního kanálu a díky skriptování Tcl je velmi přizpůsobi-
telný. Více eggdrop botů lze propojit a vytvořit tak celek, který zahrnuje větší počet komunikačních kanálů, či dokonce sítí. V sítích bez služeb registrace kanálů je eggdrop běžnou funkcí téměř všechvětších komunikačních kanálů.Aktuální verzi eggdrop získáte na webu http://www.eggheads.org/downloads/. Domovskou stránku naleznete na internetové adrese http://www.eggheads.org/.
EnergyMech Správce: Proton.Komunikační kanál IRC: Žádný.První verze EnergyMech (či emech) si získala svou nepříliš příznivou pověst díky své schopnosti spouštět více chatů z jednoho procesu (což umožňovalo méně žádoucím uživatelům načíst stov-ky klonů z účtu). Takovou reputaci si však emech nezaslouží, protože ve skutečnosti nabízí dob-rou ochranu komunikačních kanálů a aktuální verze programu emech této funkci zamezily (namaximálně 4 instance). Jedná se o oblíbenou alternativu k Eggdrop. Aktuální verzi EnergyMech získáte na webu http://www.energymech.net/download.html. Domov-skou stránku naleznete na internetové adrese http://www.energymech.net/.
IRC Bouncers (IRC Proxy) bnc Správce: James Seter.Komunikační kanál IRC: ŽádnýNástroj bnc je původní bouncer.Aktuální verzi bnc získáte na webu http:// gotbnc.com/download.html. Domovskou stránku naleznete na internetové adrese http://gotbnc.com/.
muh Správce: Sebastian Kienzl.Komunikační kanál IRC: ŽádnýNástroj muh je mnohostranný nástroj, který zamezuje zjišťování adresy IP a po spuštění bude bránit pokusům o získání vašeho nicku.Aktuální verzi nástroje muh získáte na webu http://ftp1.sourceforge.net/muh/. Domovskou stránkunaleznete na internetové adrese http://seb.riot.org/muh/.
ezbounce Správce: Murat Deligönül.Komunikační kanál IRC: ŽádnýK základním funkcím ezbounce patří ochrana hesla, vzdálená správa, přihlašování a sledování většího množství portů.Aktuální verzi ezbounce získáte na webu http://druglord.freelsd.org/ezbounce/.
Instalace Klienti Všichni oblíbení klienti používají GNU Autoconf a GNU Automake, proto jsou k dispozici s konfi-guračním skriptem. Po rozbalení zdrojů si přečtěte pokyny k instalaci. Před provedením kompila-ce se ujistěte, zda máte požadované knihovny. Správným postupem je: # cd nazev_vytvoreneho_adresare # ./configure --help # ./configure --zde_jsou_vase_moznosti # make; # make install > ~/sources_install.log.
Pro ircII, EPIC a BitchX byste měli upravit include/config.h tak, aby odpovídal vašim potře-bám.
Servery Skutečně potřebujete pomoc pro nastavení serveru? ~$ touch ircd.conf
Co je součástí mé distribuce? (Linux v počítačích x86) 11.1. Debian IRC Channel: #Debian na webu freenode (irc.debian.org -> irc.freenode.net)Debian (http://www.debian.org/) nabízí tolik nástrojů IRC, že je nemůžeme všechny uvést. Nalez-nete je na následujících webech:
Stabilní Debian – http://ftp.debian.org/debian/dists/stable/main/binary-i386/. Nestabilní Debian (neproběhlo dostatečné testování) – http://ftp.debian.org/debian/ dists/unstable/main/binary-i386/. Plánované aktualizace naleznete na internetové adrese http://ftp.debian.org/debian/ dists/proposed-updates/. Může obsahovat také klienty IRC.
Fedora (Red Hat) Komunikační kanál IRC: #RedHat na webu freenode (irc.redhat.com -> irc.freenode.net)Fedora Core 3 (http://fedora.redhat.com/ ) nabízí následující klienty (v novějších verzích najdeteaktualizované balíčky): EPIC4 1.0.1 – http://download.fedora.redhat.com/pub/fedora/linux/core/3/i386/os/ Fedora/RPMS/ epic-1.0.1-18.i386.rpm. KSirc z KDE Network 3.3.0 – http://download.fedora.redhat.com/pub/fedora/linux/core/3/ i386/os/Fedora/RPMS/ kdenetwork-3.3.0-5.i386.rpm. X-Chat 2.4.0 – http://download.fedora.redhat.com/pub/fedora/linux/core/3/i386/os/ Fedora/RPMS/ xchat-2.4.0-3.i386.rpm. Rawhide (vývojová verze) – http://download.fedora.redhat.com/pub/fedora/linux/core/ development/. Používání je na vlastní nebezpečí.
Slackware Komunikační kanál IRC: #Slackware na webu freenode a OFTC – http://www.oftc.net/ Slackware (http:// www.slackware.com/) verze 10.0 nabízí následující klienty: BitchX 1.1 – ftp://ftp.slackware.com/pub/slackware/slackware-10.0/slackware/n/bitchx-1.1-i486-1.tgz. EPIC4 2.0 – ftp://ftp.slackware.com/pub/slackware/slackware-10.0/slackware/n/epic4-2.0-i486-1.tgz. irssi 0.8.9 – ftp://ftp.slackware.com/pub/slackware/slackware-10.0/slackware/n/irssi-0.8.9-i486-3.tgz. KSirc od KDE Network 3.2.3 – ftp://ftp.slackware.com/pub/slackware/slackware-10.0/slack-ware/kde/ kdenetwork-3.2.3-i486-1.tgz. X-Chat 2.0.9 – ftp://ftp.slackware.com/pub/slackware/slackware-10.0/slackware/gnome/ xchat-2.0.9-i486-1.tgz. Slackware – current (ve vývoji) – ftp://ftp.slackware.com/pub/slackware/slackware-current/. Používání je na vlastní nebezpečí.
Mandriva Linux Mandriva Linux nabízí v distribučních zdrojích Main a Contrib následující balíčky (pro instalaci použijte urpmi): BitchX, irssi, X-chat, EPIC, Ksirc.
LDAP v Linuxu Úvod V tomto dokumentu je popsána instalace, konfigurace, provozování a údržba serveru LDAP (Light-weight Directory Access Protocol) na linuxovém počítači. V dokumentu jsou rovněž uvedenypodrobnosti o vytváření databází LDAP a jsou zde popsány postupy při přidávání, aktualizacia rušení dat v adresáři. Tento návod vychází z informačních stránek LDAP University of Michigana z Průvodce správou OpenLDAP (OpenLDAP Administrator’s Guide).
Autorem je Luiz Ernesto Pinheiro Malere, <[email protected]>.Hlavním cílem tohoto dokumentu je poskytnout návod, jak nastavit a používat adresářový serverLDAP na linuxovém počítači. Dozvíte se, jak se instaluje, provozuje a udržuje server LDAP. Dálese dozvíte, jak máte pomocí klientů a utilit LDAP ukládat, číst a aktualizovat data v adresáři. Démon adresářového serveru LDAP se nazývá slapd a běží na mnoha různých unixových platfor-mách.Další démon zajišťuje replikace mezi servery LDAP. Nazývá se slurpd, avšak v tomto dokumentu se jím nemusíme zabývat. Budeme používat pouze démona slapd, který zajišťuje adresářové služ-by pouze pro lokální doménu, bez replikací, takže i bez slurpd. Úplné informace o replikacíchjsou k dispozici na stránkách OpenLDAP Administrator's Guide (http://www.openldap.org/ doc/-admin22/replication.html). Nastavení lokální domény představuje jednodušší variantu konfigurace serveru, s níž je vhodnézačít a kterou je možné v případě potřeby snadno později změnit. Informace uvedené v tomtodokumentu představují důležitý úvod k používání serveru LDAP. Je možné, že po jeho přečtení sidodáte odvahu k rozšíření funkcí serveru, anebo dokonce začnete pomocí vývojových nástrojů C,C+ + a Java psát své vlastní klienty.
Co je LDAP? LDAP je zkratkou Lightweight Directory Access Protocol. Jak už název napovídá, jde o „lehký“ pro-tokol typu klient/server pro přístup k adresářovým službám, zejména pak ke službám založeným na X.500. LDAP běží nad TCP/IP nebo jinými přenosovými službami zaměřenými na spojení. Defi-nici LDAP naleznete v RFC2251. Adresář se podobá databázi, avšak obsahuje více popisných informací vycházejících z „vlastností“. Adresářové údaje se mnohem častěji čtou než zapisují. Jsou uspořádány tak, aby na požadavek vyhledávání ve velkém objemu dat bylo možno poskytnout rychlou odpověď. Z důvodu dostupnosti, spolehlivosti a zkrácení doby odezvy mohou být údaje v adresáři ve značném měřít-ku uloženy na více místech. Než je provedena jejich synchronizace, může docházet i k dočasným chybám v konzistenci. Existuje mnoho metod, jak zajišťovat adresářové služby. Různé druhy informací mohou být uklá-dány v adresářích různými způsoby, vznikají různé požadavky na odkazy, dotazování a aktuali-zaci, ochranu před neoprávněným přístupem atd. Některé adresářové služby jsou lokální v ome-zeném rozsahu (např. služba finger na samostatném počítači), jiné mohou být globální a jsou poskytovány v daleko širším kontextu.
Jak pracuje? Adresářová služba LDAP je založena na modelu klient/server. Jeden nebo několik serverů LDAP obsahují data, která vytvářejí adresářový strom neboli vnitřní strukturu („backend“) databáze. Kli-ent LDAP se připojí k serveru LDAP a položí dotaz. Server buď poskytne odpověď nebo adresu, na níž klient nalezne požadovanou informaci (obvykle je to jiný server LDAP). Nezáleží na tom, ke kterému serveru LDAP se klient připojí. Pohled na adresář je vždy stejný; jméno zadané jed-nomu serveru LDAP odkazuje na stejnou položku, jako kdyby bylo zadané jinému serveru. To je důležitou vlastností globální adresářové služby, jakou je LDAP.
Vnitřní struktura, objekty a atributy LDAP Serverový démon LDAP se jmenuje Slapd. Podporuje různá úložiště dat – databáze, které můžete používat.Především je to BDB, což je vysoce výkonná databáze s podporou transakcí; dále LDBM – data-báze lehčího typu; SHELL je strukturované rozhraní k shellovým skriptům a PASSWD, která tvořírozhraní pro přístup k záznamům v souboru passwd(5). BDB využívá Sleepycat (http://www.sleepycat.com/), Berkeley DB 4. LDBM využívá buď Berkeley DB (http://www.sleepycat.com/) nebo GDBM (http://www.gnu.org/software/gdbm/).Transakční struktura BDB je určena pro víceuživatelský přístup k databázi s možností čtení i zápi-su a libovolné kombinace obou operací. Používá se v aplikacích, které vyžadují: Nepřerušitelné transakce včetně hromadných změn a možnost jejich vracení do původního stavu. Možnost obnovy při havárii systému nebo hardwarových chybách bez ztráty transakce. V tomto dokumentu budeme pracovat s databází BDB. Pro import a export adresářových dat mezi servery LDAP a k popisu změn v adresáři obvykle pou-žíváme formát souboru označovaný jako LDIF, což je zkratka, která vznikla z LDAP Data Interchange Format. Soubor LDIF ukládá data do objektově orientovaných položkových struktur. Softwarový balík LDAP obsahuje nástroj, kterým provádíme konverzi souborů LDIF do formátu BDB. Běžný soubor LDIF vypadá takto: dn: o=TUDelft, c=NL o: TUDelft objectclass: organization dn: cn=Luiz Malere, o=TUDelft, c=NL cn: Luiz Malere sn: Malere mail: [email protected] objectclass: person
Jak vidíte, každá položka je jednoznačně identifikovaná rozlišitelným jménem, resp. DN (distin-guished name). DN se skládá ze jména položky a cesty tvořené jmény, která směřují zpět ke koře-ni adresářové struktury (jako u stromu).
Třída objektů v LDAP definuje množinu atributů, které lze použít k definici položky. Existují tyto základní typy tříd objektů: Skupiny v adresáři včetně neuspořádaného seznamu jednotlivých objektů nebo skupin objektů. Umístění, např. jméno státu a popis. Organizace v adresáři. Lidé v adresáři. Položka může patřit více než jedné třídě objektů. Například položka pro osobu je definovaná tří-dou objektů person, ale může být definovaná také atributy v třídě objektů inetOrgPerson, group-OfNames nebo organization. Struktura tříd objektů na serveru (což je schéma) určuje celkovýseznam požadovaných a povolených atributů pro určitou položku. Data v adresáři představují dvojice atribut – hodnota. Každá informace je spojena s popisným atri butem. Například atribut commonName (resp. cn) se používá k uložení jména osoby. Osoba jménemJonas Salk bude v adresáři uvedena jako: cn: Jonas Salk
Každá osoba v adresáři je definovaná jako množina atributů v třídě objektů person. Jiné atributy, jimiž lze definovat tuto položku, mohou obsahovat: givenname: Jonas surname: Salk mail: [email protected]
Požadované atributy jsou atributy, které musí být uvedeny v položkách dané třídy objektů. Všech ny položky vyžadují atribut objectClass, který je seznamem tříd objektů, k němž položka patří. Povolené atributy jsou atributy, které mohou být uvedeny v položkách dané třídy objektů. Napří-klad v třídě objektů person jsou požadované atributy cn a sn. Atributy telephoneNumber, seeAl-so a userpassword jsou povolené, nikoli však požadované. Všechny atributy mají syntaktickou definici, která popisuje typ informace poskytované daným atributem, například: bin binární; ces case exact string (při porovnávání řetězců musí být ve shodě i malá a velká písmena); cis case ignore string (při porovnávání se neberou v úvahu malá/velká písmena); tel telephone number string (jako cis, avšak navíc se ignorují mezery a pomlčky „–“); dn jména se musí lišit. Poznámka Definice tříd objektů a atributů jsou v instalaci OpenLDAP obvykle v souborech schema v podadresáři schema/.
Nové verze dokumentu Tento dokument může být opravován a aktualizován na základě ohlasů čtenářů. Nové verze toho-to návodu naleznete na: http:// www.tldp.org/HOWTO/LDAP-HOWTO.html.
Názory a návrhy Pokud byste měli o údajích uvedených v tomto dokumentu jakékoli pochybnosti, kontaktujte měna e-mailové adrese: <[email protected]>.Seznamte mne, prosím, i s případnými komentáři a návrhy...
Instalace serveru LDAP Server nainstalujete pomocí následujících pěti kroků: Nainstalujte požadované balíky (pokud už nejsou nainstalovány). Stáhněte si server. Software rozbalte. Zkonfigurujte soubory Makefiles. Vygenerujte server.
Vytvoření prostředí Z důvodu plné shody s LDAPv3 vyžadují klienti i servery instalaci některých dalších balíků. Pro psaní tohoto dokumentu jsem použil systém Mandrake 9.0 s jádrem 2.4.20, ručně nainstalovaný balík Berkeley BDB a knihovny SASL.
TLS knihovny OpenSSL
TLS knihovny OpenSSL jsou běžnou součástí základního systému anebo tvoří jeho volitelnou sou-část. Oficiální url OpenSSL je: http://www.openssl.org.
Autentizační služby Kerberos Klienti i servery OpenLDAP podporují autentizační služby založené na systému Kerberos. Kon-krétně OpenLDAP podporuje autentizační mechanismus SASL/GSSAPI prostřednictvím balíků Heimdal nebo MIT Kerberos V. Pokud chcete používat autentizaci SASL/GSSAPI založenou na systému Kerberos, musíte nainstalovat buď Heimdal nebo MIT Kerberos V. Heimdal Kerberos naleznete na http://www.pdc.kth.se/heimdal, MIT Kerberos na http://web.mit.edu/kerberos/www. Používání silné autentizační služby typu Kerberos lze vřele doporučit.
Knihovny Cyrus SASL (Simple Authentication and Security Layer) Knihovny Cyrus SASL jsou obvykle součástí základního systému nebo jsou jeho volitelnou kom-ponentou. Naleznete jej na adrese http://asg.web.cmu.edu/sasl/sasl-library.html. Při instalaci vyu-žívají knihovny OpenSSL a Kerberos/GSSAPI. V době psaní tohoto dokumentu byl k dispozici Cyrus SASL ve verzi 2.1.17.
Databázový software Primární databázová struktura BDB démona slapd vyžaduje Sleepycat Software Berkeley DB (http://www.sleepycat.com/), verzi 4. Při konfiguraci musí být k dispozici, jinak slapd s primární databázovou strukturou nelze vygenerovat. Je pravděpodobné, že součástí vašeho základního operačního systému nebo jeho volitelnou kom-ponentou je Berkeley DB, verze 4. Pokud není, několik verzí této databáze naleznete na stránkách Sleepycat (http://www.sleepycat.com/download.html). Její nejnovější verze nese v době psaní toho-to dokumentu označení 4.2.52 a lze ji doporučit. Struktura LDBM démona slapd podporuje celou řadu správců databází, např. Berkeley DB (version 3) nebo GDBM. GDBM je možno stáhnout z ftp stránek FSF na adrese ftp://ftp.gnu.org/pub/gnu/gdbm/.
Vlákna Je téměř jisté, že váš Linux obsahuje také podporu vláken. Tuto výhodu využívá OpenLDAP. Pod-poruje posixový pthreads, Mach CThreads a řadu dalších. Pokud skript configure nenalezne vhod-ný subsystém vláken, ohlásí to. Kdyby tato situace nastala, nahlédněte, prosím, do části Software – Installation – Platform Hints v často kladených otázkách (FAQ) systému OpenLDAP na adrese http://www.openldap.org/faq/.
TCP Wrappers Jsou-li předinstalovány TCP wrappery (filtry pro řízení přístupu na úrovni IP), slapd je podporuje. Použití těchto nebo podobných přístupových filtrů na úrovni IP (např. takových, které obsahují IP firewally) lze doporučit zejména na serverech, na nichž jsou uloženy neveřejné informace.
Stažení balíku Existují dva volně šiřitelné servery LDAP: Je to jednak server LDAP z University of Michigan a jed-nak server OpenLDAP. Také existuje Netscape Directory Server, který je zdarma pouze za určitých podmínek (například pro vzdělávací instituce). Server OpenLDAP vychází z nejnovější verze ser-veru University of Michigan a z tohoto serveru má k dispozici rozesílací seznamy a další doku-mentaci. V tomto dokumentu budeme předpokládat, že používáte server OpenLDAP. Nejnovější verze OpenLDAP v komprimované (.zip) a archivované (.tar ) podobě je k dispozici na adrese: http://www.openldap.org.Nejnovější verze serveru University of Michigan naleznete na adrese:ftp:// terminator.rs.itd.umich.edu/ldap. Při psaní tohoto dokumentu jsem používal verzi OpenLDAP 2.2.5. Mám operační systém Mandra ke Linux 9.0 s jádrem 2.4.20.Na stránkách OpenLDAP také naleznete informace o vývoji tohoto produktu a stabilní verze serveru LDAP. V době aktualizace tohoto dokumentu byla poslední stabilní verzí openldap-stable-20031217.tgz (verze 2.1.25) a poslední vývojovou verzí openldap-2.2.5.tgz.
Rozbalení Teď, když máte na počítači komprimovaný balík tar, jej můžete rozbalit. Nejprve balík zkopírujte do vhodného adresáře, například /usr/local. Dále zadejte příkaz: tar xvzf openldap-2.2.5.tgz
anebo: gunzip openldap-2.2.5.tgz | tar xvf -
Konfigurace Zdrojové soubory serveru OpenLDAP jsou distribuovány s konfiguračním skriptem pro nastavení různých parametrů, např. instalačních adresářů a příznaků pro překladač a sestavovací program. V adresáři, kde máte rozbalený software, zadejte příkaz: ./configure --help
Vypíší se všechny volby, které je možno zadat skriptu configure před zahájením generování. Pro nastavení instalačních adresářů jsou důležité parametry --prefix=pref, --exec-prefix=eprefix a --bindir=dir. Když spustíte skript configure bez parametrů, obvykle provede příslušná nasta-vení sám a připraví generování do implicitního adresáře. Takže pouze zadáte: ./configure
a pozorujete, zda vše běží, jak má. Tip Někdy potřebujete předat skriptu configure určité parametry, např. --with-tls (aktivace používání bezpečného kanálu démonem slapd: LDAPS://). Může se stát, že máte knihov-ny SSL/TLS uložené v nestandardních adresářích. V takovém případě upozorníte skript configure na změnu umístění knihoven příkazem env. Příklad: Předpokládejte, že máte balík openssl nainstalovaný v /usr/local/openssl. Démona slapd s podporou SSL/TLS vygenerujete tímto příkazem: env CPPFLAGS=-I/usr/local/openssl/include \ LDFLAGS=-L/usr/local/openssl/lib \ configure --with-tls ...
Než spustíte skript configure, můžete příkazem env specifikovat následující vnější proměnné: CC: alternativní překladač C. CFLAGS: přídavné příznaky překladače. CPPFLAGS: příznaky preprocesoru C. LDFLAGS: příznaky sestavovacího programu. LIBS: přídavné knihovny.
Kompilace serveru Poté co software zkonfigurujete, můžete začít s kompilací. Nejdříve vygenerujete závislosti pomocí příkazu: make depend
a pak už můžete zkompilovat server příkazem: make
Běží-li vše, jak má, server bude zkompilován dle konfigurace. Pokud nikoli, vraťte se k předcho-zímu kroku a zkontrolujte konfiguraci. Také byste si měli v tom adresáři, kde jste tento software rozbalili, přečíst soubory INSTALL a README. Také zkontrolujte pokyny, které se vztahují ke skrip-tu configure – jsou umístěny na cestě doc/install/configure pod adresářem, do nějž jste roz-balili daný software. O tom, zda je server vygenerován správně, se můžete přesvědčit pomocí sady testů (což zabere nanejvýš pár minut): make test
Spustí se pouze testy odpovídající dané konfiguraci a ty by měly projít. Některé testy mohou být vynechány, například test replikace. Nyní nainstalujte binární soubory a manuálové stránky. Je možné, že to budete muset provést jako superuživatel (záleží na tom, kam budete instalovat): su root -c ‘make install’
To je vše, vytvořili jste binární soubory serveru a několika dalších nástrojů. Konfiguraci serveru LDAP naleznete v následující kapitole.
Konfigurace serveru LDAP Jakmile máte software nainstalovaný, můžete začít s konfigurací pro danou síť. Pro konfiguraci démona slapd v době běhu je určen soubor slapd.conf nainstalovaný v adresáři zadaném v kon-figuračním skriptu nebo implicitně v adresáři /usr/local/etc/ openldap . V této části podrobně probereme nejdůležitější konfigurační příkazy v souboru slapd.conf. Jejich úplný seznam naleznete v manuálových stránkách man 5 slapd.conf. Konfigurační příkazy jsou rozděleny dle toho, k čemu jsou určeny, na globální, strukturové a databázové. Zde naleznete popis těchto příkazů, implicitní hodnoty (pokud existují) a příklady použití.
Tvar konfiguračního souboru
Soubor slapd.conf obsahuje tři typy konfiguračních informací: globální, strukturové a databázo-vé. Nejdříve jsou uvedeny globální informace, dále následují informace, které se týkají typu struk-tury, a nakonec informace o konkrétní použité databázi. Globální příkazy mohou být přepsány v příkazech pro strukturu a/nebo databázi, příkazy pro strukturu mohou být přepsány databázovými příkazy.Prázdné řádky a komentáře začínající znakem # jsou ignorovány. Začíná-li řádek mezerou, jepovažován za pokračování předchozího řádku. Obecný tvar souboru slapd.conf je takovýto: # globální konfigurační příkazy
# definice struktury backend
# definice první databáze & konfigurační příkazy database
# definice druhé databáze & konfigurační příkazy database
# druhá definice databáze "typeA" & konfigurační příkazy database
# následují definice struktury & databáze & konfigurační příkazy ...
Konfigurační příkaz může mít parametry oddělené mezerami. Obsahuje-li parametr mezeru, je nutno jej uvést v uvozovkách, „takto“. Obsahuje-li parametr znak dvojitou uvozovku nebo obrácené lomítko „\“, musí před ním být obrácené lomítko „\“. Distribuce obsahuje příklad konfiguračního souboru, který bude nainstalován v adresáři /usr/local/etc/openldap . Soubory obsahující definice schémat (typy atributů a třídy objektů) jsou také uloženy v adresáři /usr/local/etc/openldap/schema.
Globální příkazy Příkazy popsané v této části se vztahují ke všem strukturám a databázím, ledaže by byly speciál-ně přepsány v definicích struktur a databází. Parametry, které mají být nahrazeny textem, jsou uve-deny v lomených závorkách, <>. access to <what> [ by <who> ]+
Tento příkaz opravňuje k přístupu (blíže určeném v ) k množině položek a/nebo atributů (blíže určených ve <what>) jednomu nebo více žadatelům (blíže určeným ve <who>). Pří-klady s dalšími podrobnostmi viz kapitola „Příkazy na řízení“. Důležité: Nejsou-li uvedeny příkazy pro oprávnění k přístupu, implicitní nastavení oprávnění k přístupu (access to * by * read) znamená, že oprávnění ke čtení mají jak autentizovaní, tak i ano-nymní uživatelé. attributetype
Tento příkaz definuje typy atributů. Další podrobnosti naleznete na stránkách Schema Specificati-on na adrese http:// www.openldap.org/doc/admin22/schema.html. idletimeout
Počet vteřin čekání před vynuceným uzavřením nepoužívaného klientského spojení. Implicitní hodnota je 0 a znamená zablokování této funkce. include
Tento příkaz zadává, že slapd má číst další konfigurační údaje z uvedeného souboru, než bude pokračovat na dalším řádku běžného souboru. Soubor uvedený v příkazu include jako parametr musí mít tvar běžného konfiguračního souboru. Obvykle se používá pro specifikaci schématu. Poznámka Při používání tohoto příkazu musíte být opatrní. Hloubka vnoření příkazů include není omezena a neprovádí se detekce zacyklení. loglevel
Tento příkaz udává úroveň zaznamenávání ladicích příkazů a operační statistiky do logu (běžně připojeného ke kategorii LOCAL4 démona syslogd(8)). Aby to fungovalo, OpenLDAP musí být zkonfigurován s volbami --enable-debug ( implicitně) – kromě úrovní dvou statistik, které jsou aktivovány vždy. Úrovně zápisu do logu lze zvyšovat. Vztah mezi zadanými čísly a úrovněmi ladění zjistíte buď spuštěním slapd -? nebo z následující tabulky. Možné hodnoty parametru jsou: Úrovně ladění Úroveň Popis -1 aktivace veškerého ladění 0 žádné ladění 1 funkce sledování 2 zpracování ladicích paketů 4 rozsáhlé sledování 8 správa spojení 16 výpis odeslaných a obdržených paketů 32 hledání filtrů 64 konfigurační soubor 128 seznam přístupů 256 statistiky spojení/ operací/výsledků 512 statistika logovacích položek 1024 tisková komunikace se strukturou shellu 2048 ladění lexikální analýzy tiskových položek Příklad: loglevel 255, resp. loglevel -1 Do logu se bude zapisovat velké množství ladicích údajů. Implicitně: loglevel 256 objectclass
Tento příkaz definuje třídu objektů. Další podrobnosti naleznete na stránkách Schema Specificati-on (http://www.openldap.org/ doc/admin22/schema.html). referral
Tento příkaz specifikuje doporučení, které má vrátit, když slapd nenajde lokální databázi, aby mohl zpracovat požadavek. Příklad: referral ldap://root.openldap.org
Tento příkaz odkáže nelokální dotazy na globální kořenový server LDAP projektu OpenLDAP. Důvtipní klienti mohou zadat dotaz znovu tomuto serveru, avšak většina klientů pouze chce vědět, jak má zpracovat jednoduché URL, které se skládá z názvu stanice a volitelně i rozlišitelné jmenné části. sizelimit
Tento příkaz udává maximální počet položek, které má vrátit vyhledávací operace.Implicitně: sizelimit 500timelimit Tento příkaz udává maximální počet vteřin (v reálném čase), jak dlouho může slapd trvat odpo-věď na požadavek vyhledávání. Není-li požadavek v tomto čase proveden, je vrácen výsledeks indikací překročení časového limitu. Implicitně: timelimit 3600
Obecné příkazy pro strukturu Příkazy v této kapitole se vztahují pouze na strukturu, v níž jsou definované. Jsou podporovány všemi typy struktur. Příkazy pro strukturu platí pro všechny databáze téhož typu a v závislosti na konkrétním příkazu mohou být přepsány databázovými příkazy. backend
Tento příkaz označuje začátek definice struktury; by měl být některý bdb nebo jeden z jiných podporovaných typů struktur dle následujícího seznamu: Struktury databází Typ bdb dnssrv ldbm ldap meta monitor
Popis transakční struktura Berkeley DB struktura DNS SRV struktura Lightweight DBM struktura Lightweight Directory Access Protocol (Proxy) struktura Meta Directory struktura Monitor
passwd perl shell sql
zajišuje pouze čtení z passwd(5) programátorská struktura Perlu struktura Shellu (externí program) programovatelná struktura SQL
Příklad: backend bdb Tento příkaz označuje začátek definice nové struktury BDB.
Obecné databázové příkazy Příkazy v této kapitole se vztahují pouze na databázi, v níž jsou definované. Jsou podporovány všemi typy databází. database
Tento příkaz označí začátek definice nového databázového procesu; by měl být jeden z typů struktur uvedených v předchozí položce. Příklad: database bdb
Tento příkaz označuje začátek definice nového výskytu databáze se strukturou BDB. readonly { on | off }
Tento příkaz převede databázi do režimu „read-only“, v němž lze z databáze pouze číst. Pokusy o modifikaci databáze budou odmítnuty s hlášením chyby „unwilling to perform“. Implicitně: readonly off replica uri=ldap[s]://[:<port>] | host=[:<port>] [bindmethod={simple|kerberos|sasl}] ["binddn="] [saslmech=<mech>] [authcid=] [authzid=] [credentials=<password>] [srvtab=]
Tento příkaz zadává umístění kopie dané databáze. Parametr uri= zadává schéma, počítač a voli-telně i port, kde lze nalézt dceřiný proces slapd. Na místě může být jméno domény nebo IP adresa. Není-li zadán <port>, použije se standardní číslo portu LDAP (389 nebo 636). Poznámka Parametr uri má přednost před host. Parametr uri umožňuje zadat server LDAP pro uložení kopie jako LDAP URI, např. ldap://slave.example.com:389 nebo ldaps://slave.example.com:636. Parametr binddn= svazuje DN pro aktualizaci s dceřiným procesem slapd. DN by měl mít opráv-nění ke čtení i zápisu do databáze dceřiného procesu slapd. Musí také být ve shodě s příkazem updatedn v konfiguračním souboru démona slapd. Obecně by tento DN neměl být totožný s rootdn v hlavní databázi. Vzhledem k tomu, že DN pravděpodobně obsahují mezery, celý řetě-zec „binddn=“ by měl být uzavřen ve dvojitých uvozovkách. Parametr bindmethod je simple nebo kerberos nebo sasl v závislosti na tom, zda při připojování k dceřinému procesu slapd je použita jednoduchá autentizace na základě hesla nebo Kerberos nebo SASL. Jednoduchá autentizace by se neměla používat, pokud není v činnosti příslušná ochrana integrity a soukromí (např. TLS nebo IPSEC). Při jednoduché autentizaci musí být zadány binddn a para-metry s autentizačními údaji. Autentizační mechanismus SASL má přednost před autentizací Kerberos, konkrétně jde o mecha-nismy KERBEROS_V4 a GSSAPI. Autentizace pomocí mechanismu Kerberos vyžaduje parametry binddn a srvtab. Obecně lze doporučit autentizaci SASL. Pokud ji použijete, mechanismus musíte zadat v paramet-ru saslmech. V závislosti na vybraném mechanismu lze pomocí authcid, resp. credentials, zadat autentizační totožnost a/nebo autentizační údaje. K zadání autorizační totožnosti slouží parametr authzid. Další podrobnosti o tomto příkazu naleznete na stránkách Replication with Slurpd (http://www.openldap.org/doc/admin22/ replication.html). replogfile
Tento příkaz zadává jméno replikačního logovacího souboru, do nějž bude slapd zapisovat změny. Do replikačního logu obvykle zapisuje slapd a čte z něho slurpd. Tento příkaz se použí-vá zejména tehdy, když probíhá replikace databáze pomocí slurpd.
Můžete jej však použít i k vytvoření transakčního logu, když slurpd není v činnosti. V takovém případě budete ovšem muset ze souboru pravidelně odstraňovat nepotřebná data, jinak nekontrolovaně poroste. Další podrobnosti o tomto příkazu naleznete na stránkách Replication with Slurpd (http://www.openldap.org/doc/admin22/ replication.html). rootdn
Tento příkaz zadává DN, které nepodléhá žádným kontrolám přístupu k databázi ani jiným admi-nistrativním omezením. Musí mít přístup ke všem položkám v adresáři. Může se odkazovat na totožnost SASL. Příklad (položky): rootdn “cn=Manager, dc=example, dc=com” Příklad (SASL): rootdn “uid=root,cn=example.com,cn=digest-md5,cn=auth” rootpw <password>
Tento příkaz je možno použít k zadání hesla pro rootdn (když je rootdn nastaveno na DN uvnitř databáze). Příklad: rootpw secret Je také přípustné provést transformaci hesla do tvaru RFC 2307. Transformaci může provést napří-klad slappasswd. Příklad: rootpw {SSHA}ZKKuqbEKJfKSXhUbHG3fG8MDn9j1v4QN Transformace byla provedena příkazem slappasswd -s secret. suffix
Tento příkaz zadává příponu DN dotazů, které budou předávány struktuře této databáze. Můžebýt zadáno více řádků s příponami, pro každou definici databáze musí být zadán alespoň jeden.Příklad: suffix “dc=example, dc=com”Struktuře budou předány dotazy se zakončením DN „dc=example, dc=com“. Poznámka Když je vybrána struktura pro předání dotazu, slapd se ve všech definicích databází podí-vá na řádky s příponami v tom pořadí, v jakém se nacházejí v souboru. Je-li tedy jedna pří-pona databáze předponou jiné, musí být v konfiguračním souboru uvedena za ní. syncrepl
Tento příkaz se používá k synchronizaci replikované databáze s hlavní databází, takže obsah re plikované databáze je udržován v aktuálním stavu v souladu s hlavní databází.Tento příkaz není v tomto dokumentu popsán podrobně, protože konfigurujeme samostatný ser-ver LDAP. Další informace o tomto příkazu naleznete na stránkách LDAP Sync Replication(http://www.openldap.org/doc/admin22/syncrepl.html). updatedn
Tento příklad se vztahuje pouze na dceřiný proces slapd. Určuje přípustná DN, jež mohou pro-vádět změny v kopii databáze. Tak může být DN slurpd připojeno při provádění změn ke kopiinebo k DN spojenému s totožností SASL. Příklad (položky): updatedn “cn=Update Daemon, dc=example, dc=com”Příklad (SASL): updatedn “uid=slurpd,cn=example.com,cn=digestmd5,cn=auth ”Další podrobnosti o tomto příkazu naleznete na stránkách Replication with Slurpd
Tento příkaz je použitelný pouze v dceřiném procesu slapd. Zadává URL, jež má být vráceno kli-entům, kteří zaslali požadavek na aktualizaci kopie databáze. Je-li uvedeno několik URL, předává je všechna. Příklad: updateref ldap://master.example.net
Příkazy databáze BDB
Tato kategorie příkazů se vztahuje pouze na databázi BDB. Musí tedy být za řádkem „database bdb“ a před řádky „backend“ a „database“, které následují. Úplný přehled konfiguračních příkazů BDB naleznete na manuálových stránkách slapd-bdb (man slapd-bdb). directory
Tento příkaz zadává adresář, v němž jsou umístěny soubory s databází BDB a příslušné indexy. Implicitně: directory /usr/local/ var/openldap-data sessionlog <sid>
Tento příkaz definuje úložiště logů daného sezení na serveru poskytovatele kopie syncrepl, které obsahuje informace o sledovaných položkách v kopii databáze určených pomocí <sid>. První požadavek na hledání syncrepl má v cookie, které
vytvořilo úložiště logu daného sezení na ser-veru poskytovatele, stejnou hodnotu <sid>. Počet položek v úložišti je omezen parametrem . Přebytečné položky jsou z úložiště odstraňovány v pořadí FIFO. <sid> a jsou nezá-porná celá čísla. < sid> může mít nejvýš tři dekadické číslice. Synchronizace obsahu provedená v předchozím sezení mohla z důvodu omezení synchronizačních přenosů použít úložiště logů. Není-li kopie databáze tak stará, aby ji nebylo možné aktualizovat z dat uložených v úložišti sezení, poskytovatel slapd pošle zákazníkovi slapd jména sledovaných položek společně s položkami, jež byly přidány nebo modifikovány v kopii databáze. Je-li však databáze natolik zastaralá, že ji nelze z tohoto úložiště aktualizovat, poskytovatel slapd pošle jména sledovaných položek, které nebyly změněny, společně s těmi, které byly změněny. Zákazník pak v kopii odstraní ty položky, které nejsou v obsahu poskytovatele označeny jako přítomné. Další informace o tomto příkazu naleznete na stránkách LDAP Sync Replication (http://www.openl dap.org/doc/admin22/ syncrepl.html).
Databázové příkazy LDBM Příkazy v této kategorii se vztahují pouze k struktuře databáze LDBM. Musí tedy být až za řádkem „database ldbm“ a před řádky „database“ a „backend“, které následují. Úplný přehled konfigurač-ních příkazů LDBM naleznete na manuálových stránkách slapd-ldbm (man slapd-ldbm). cachesize
Tento příkaz zadává velikost rychlé vyrovnávací paměti (cache) v položkách používané procesem,který byl vytvořen strukturou databáze LDBM.Implicitně: cachesize 1000 dbcachesize
Tento příkaz zadává velikost rychlé vyrovnávací paměti (cache) v bajtech přiřazené indexovému souboru. Pokud příslušná databázová metoda tuto paměť nepotřebuje, příkaz je bez komentáře ignorován. Zvětšíte-li hodnotu parametru, zvýší se spotřeba paměti, avšak také může dramaticky vzrůst výkon, a to zvlášť při modifikaci databáze nebo při vytváření indexů. Implicitně: dbcachesize 100000 dbnolocking
Je-li tato volba přítomna, blokuje zamykání databáze. Její aktivace může zvýšit výkon za cenu snížení bezpečnosti databáze. dbnosync
Tato volba ruší okamžitou synchronizaci disku s operační pamětí při změně jejího obsahu. Aktivace této volby může zvýšit výkon za cenu snížení bezpečnosti databáze. directory
Tento příkaz zadává adresář se soubory LDBM obsahujícími databázi a příslušné indexové sou-bory. Implicitně: directory /usr/local/ var/openldap-data index { | default } [pres,eq,approx,sub,none]
Tento příkaz zadává indexy, které mají být udržovány pro daný atribut. Je-li zadáno pouze , jsou udržovány implicitní indexy. Příklad: index default pres,eq index uid index cn,sn pres,eq,sub index objectClass eq
První řádek nastaví implicitní množinu indexů tak, aby byly udržovány pro present a equality. Druhý řádek říká, že implicitní množina indexů (pres,eq) má být udržována pro typ atributu uid. Třetí řádek říká, že indexy present, equality a substring mají být udržovány pro typy atributů cn a sn. Čtvrtý řádek říká, že index equality má být udržován pro typ atributu objectClass. Implicitně nejsou udržovány žádné indexy. Obecně lze doporučit, aby byl udržován alespoň index equality pro objectClass. index objectClass eq mode
Tento příkaz zadává režim ochrany nově vytvořených indexových souborů. Implicitně: mode 0600
Příklady na řízení přístupu Příkaz access je velice silným nástrojem pro řízení přístupu. V této kapitole si ukážeme několik příkladů použití. Nejdříve několik jednodušších příkladů: access to * by * read
Tento příkaz zadává, že všichni mohou číst. Následující příklad znázorňuje, jak se dvěma příkazy access s regulárními výrazy vyberou polož ky pomocí DN, přičemž je důležité pořadí těchto příkazů. access to dn=".*, o=U of M, c=US" by * search access to dn=".*, c=US" by * read
Položky v podstromě pod c=US mohou číst s výjimkou položek v podstromě pod „o=U z M, c=US“, které mohou vyhledávat. c=US nemá povolen žádný přístup, neboť žádný příkaz access není shodný s tímto DN. Pokud byste tyto příkazy provedli v opačném pořadí, příkaz s U-M by nikdy nebyl ve shodě, neboť všechny položky U-M jsou současně položkami c=US. Stejný přístup lze zadat i takto: access to dn.children="dc=example,dc=com" by * search access to dn.children="dc=com" by * read
Položky v podstromě pod dc=com mohou číst s výjimkou položek v podstromě pod dc=exam-ple,dc=com, které mohou vyhledávat. dc=com nemá povolen žádný přístup, neboť žádný příkaz access není shodný s tímto DN. Pokud byste tyto příkazy provedli v opačném pořadí, druhý pří-kaz by se nikdy neprovedl, neboť všechny položky pod dc=example,dc=com jsou současně pod položkami dc=com. Poznámka Všimněte si také, že pokud se příkaz neprovede nebo klauzule „by <who>“ není ve shodě, přístup není povolen. To znamená, že všechny příkazy access to jsou implicitně ukončeny klauzulí * none a všechny seznamy přístupů jsou implicitně ukončeny příkazem access to * by * none. V následujícím příkladu si opět ukážeme, jak důležité je pořadí příkazů access a současně i klau-zulí „by <who>“. Příkaz také znázorňuje, jak můžete pomocí selektoru atributů poskytnout přístup k určitému atributu a k různým selektorům <who>. access to dn.subtree="dc=example,dc=com" attr=homePhone by self write by dn.children=dc=example,dc=com" search by peername=IP:10\..+ read access to dn.subtree="dc=example,dc=com" by self write by dn.children ="dc=example,dc=com" search by anonymous auth
Tento příklad se vztahuje k položkám v podstromě „dc=example,dc=com“. Tyto položky mohou zapisovat do svých atributů kromě homePhone, položky pod položkami example.com se mohou prohledávat. Nikdo jiný nemá přístup (implicitně platí * none) kromě autentizace a autorizace, jež jsou vždy prováděny anonymně. Položka může zapisovat do atributu homePhone, mohou jej pro-hledávat položky pod example.com, mohou jej číst klienti připojení ze sítě 10 a jinak jej nemůže číst nikdo (implicitně platí * none). Všechny ostatní přístupy jsou implicitně odmítnuty klauzulí * by * none. Někdy je vhodné povolit určitému DN, aby se samo smělo přidávat k atributu a odstraňovat se z něj. Když například chcete vytvořit skupinu a povolit uživatelům, aby směli k atributu member přidávat pouze svoje DN a odstraňovat je, můžete to provést například takovýmto příkazem: access to attr=member,entry by dnattr=member selfwrite
Selektor <who> dnattr říká, že přístup platí pro položky v atributu member. Selektor zápisu sama do sebe říká, že tito členové mohou do atributu přidávat nebo z něj odstraňovat pouze svoje DN, jiné hodnoty nikoli. Přidávání atributu položky je nutné, protože přístup k položce znamená přístup ke všem jejím atributům. Mnoho dalších informací o řízení přístupu je uvedeno v OpenLDAP Administrator’s Guide. Chce-te-li se s nimi seznámit, nahlédněte na stránky Access Control (http://www.openldap.org/doc/ admin22/slapdconfig.html#Access Control).
Příklad konfiguračního souboru Následuje příklad konfiguračního souboru proloženého vysvětlujícím textem. Soubor definuje dvě databáze pro zpracování různých částí stromu X.500; obě jsou procesy BDB. Čísla řádků slouží pouze odkazům v textu a ve skutečnosti nejsou součástí souboru. Nejprve tedy globální konfigurační část: # example config file - global configuration section include /usr/local/etc/schema/core.schema
referral ldap://root.openldap.org access to * by * read
První řádek je komentář. Druhý řádek obsahuje jiný konfigurační soubor, v němž je definice základního schématu. Příkaz referral na třetím řádku znamená, že dotazy, které nejsou lokální vzhledem k žádné z níže definovaných databázi, budou odkázány na server LDAP, který běží na standardním portu (389) na počítači root.openldap.org. Na řádku 4 je zadán globální přístup. Vztahuje se na všechny položky (po všech příkazech pro řízení přístupu, které se vztahují k databázi). Následující část konfiguračního souboru definuje strukturu BDB, která bude zpracovávat dotazy v části stromu „dc=example,dc=com“. Databáze bude replikovaná na dva dceřiné slapd, jeden na slave1, druhý na slave2. Indexy budou udržovány pro několik atributů a atribut userPassword bude chráněn proti neautorizovanému přístupu. # BDB definition for the example.com database bdb suffix "dc=example,dc=com" directory /usr/local/var/openldap-data rootdn "cn=Manager,dc=example,dc=com" rootpw secret # replication directives replogfile /usr/local/var/openldap/slapd.replog replica uri=ldap://slave1.example.com:389 binddn="cn=Replicator,dc=example,dc=com" bindmethod=simple credentials=secret replica uri=ldaps://slave2.example.com:636 binddn="cn=Replicator,dc=example,dc=com" bindmethod=simple credentials=secret # indexed attribute definitions index uid pres,eq index cn,sn,uid pres,eq,sub index objectClass eq # database access control definitions access to attr=userPassword by self write by anonymous auth by dn.base="cn=Admin,dc=example,dc=com" write by * none access to * by self write by dn.base="cn=Admin,dc=example,dc=com" write by * read
Řádek 5 je komentář. Začátek definice databáze je označen klíčovým slovem databáze na řádku 6. Řádek 7 specifikuje příponu DN pro dotazy předávané této databázi. Řádek 8 specifikuje adre sář, v němž se budou nacházet databázové soubory.Řádky 9 a 10 identifikují databázovou položku „super user“ a heslo, které k ní náleží. Tato polož-ka není předmětem řízení přístupu, omezení velikosti ani časové prodlevy. Nezapomeňte, prosím,rootpw zašifrovat pomocí slappasswd. Příklad: rootpw {SSHA}Jq4xhhkGa7weT/0xKmaecT4HEXsdqiYA Řádky 11 až 18 zajišťují replikace. Další informace o tomto příkazu viz odkaz na stránky Replica-tion (http://www.openldap.org/ doc/admin22/replication.html).Řádky 20 až 22 udávají, které indexy se mají udržovat pro různé atributy.Řádky 24 až 32 specifikují řízení přístupu pro položky v této databázi. Vzhledem k tomu, že je to první databáze, řízení se také vztahuje na položky, které nejsou obsaženy v žádné databázi (např.Root DSE). Pro všechny položky platí, že do atributu userPassword může psát položka samaa položka „admin“. Lze ji používat pro účely autentizace a autorizace, jinak ji ale nelze číst. Dovšech ostatních atributů může psát položka sama a položka „admin“, avšak mohou ji číst všichniuživatelé (autentizovaní i neautentizovaní). Následující část ukázkového konfiguračního souboru definuje jinou databázi BDB. Ta zpracovává dotazy z podstromu dc=example,dc=net, avšak je spravovaná stejnou entitou jako první databáze. Všimněte si, že bez řádku 39 by kvůli globálnímu přístupovému pravidlu na řádku 4 bylo povoleno čtení. # BDB definition for example.net database bdb suffix "dc=example,dc=net" directory /usr/local/var/openldap-data-net rootdn "cn=Manager,dc=example,dc=com" index objectClass eq access to * by users read
Provozování serveru LDAP Démon slapd je určen k provozování na samostatném serveru. To umožňuje tomuto serveru vyu-žít rychlou vyrovnávací paměť, paralelně spravovat problémy podpůrných databází a šetřit systé-mové prostředky. Spuštění pomocí démona (x)inetd není podporováno.
Volby příkazového řádku Slapd podporuje řadu voleb příkazového řádku, jak je podrobně uvedeno v manuálových strán-kách. V této kapitole se budeme detailně věnovat jen několika často používaným volbám: -f
Tato volba zadává alternativní konfigurační soubor pro slapd. Implicitní je obvykle /usr/local/etc/openldap/slapd.conf. -h
Tato volba zadává alternativní konfigurace naslouchání. Implicitní je ldap:///, z níž plyne LDAP přes TCP na všech rozhraních na implicitním portu LDAP 389. Můžete zadat zvláštní dvojice počí-tač – port nebo jiná schémata protokolu (např. ldaps:// nebo ldapi://). Například -h „ldaps:// ldap://127.0.0.1:667“ vytvoří dva posluchače: jednoho pro LDAP přes SSL na všech rozhraních na implicitním portu LDAP/SSL 636 a jednoho pro LDAP přes TCP na rozhraní lokálního počítače (prázdná smyčka) na portu 667. Počítače mohou být specifikovány v dekadickém tvaru IPv4 s tečkami nebo pomocí jmen počítačů. Hodnoty portů musí být číselné. -n <service-name>
Tato volba zadává jméno služby pro logování a podobné účely. Implicitní jméno služby je slapd. -l <syslog-local-user>
Tato volba zadává lokálního uživatele pro syslog (8). Hodnotami může být LOCAL0, LOCAL1, LOCAL2, ... a LOCAL7. Implicitní hodnotou je LOCAL4. Tuto volbu nemusí podporovat všechny systémy, podrobnosti viz kapitola „Logy“. -u user -g group
Tyto volby zadávají uživatele a skupinu, kteří budou provozovat slapd; user může být buď jméno uživatele nebo uid ; group může být jméno skupiny nebo gid. -r directory
Tato volba zadává adresář v době běhu. Po otevření posluchačů, avšak před čtením konfigurač-ních souborů a inicializací struktury si slapd příkazem chroot vytvoří z tohoto adresáře nový koře-nový adresář. -d | ?
Tato volba nastaví úroveň ladění slapd na . Je-li level znak „?“, slapd vytiskne různé režimy ladění a ukončí se bez ohledu na případné další volby. Úrovně ladění popisuje následující tabulka: Úrovně ladění Úroveň Popis -1 aktivace veškerého ladění 0 žádné ladění 1 funkce sledování 2 zpracování ladicích paketů 4 rozsáhlé sledování 8 správa spojení 16 výpis odeslaných a obdržených paketů 32 hledání filtrů 64 konfigurační soubor 128 seznam přístupů 256 statistiky spojení/ operací/výsledků 512 statistika logovacích položek 1024 tisková komunikace se strukturou shellu 2048 ladění lexikální analýzy tiskových položek Můžete aktivovat několik úrovní tak, že zadáte volbu pro každou požadovanou úroveň. Anebo, vzhledem k tomu, že úroveň ladění je aditivní, můžete si ji spočítat sami. Když tedy například chcete sledovat volání funkcí a současně zpracovávaný konfigurační soubor, úroveň nastavíte na součet těchto dvou úrovní (v tomto případě -d 65). Anebo můžete přenechat tento výpočet na slapd (např. -d 1 -d 64). Další podrobnosti viz soubor ldap.h. Poznámka Aby bylo možno tyto úrovně zadávat, slapd musí být přeložen s volbou -DLDAP_DEBUG
Spuštění serveru LDAP Obecně spustíte slapd takto: /usr/local/etc/libexec/slapd [