====== Quagga ====== [[http://www.quagga.net/|Quagga]] je softwarový směrovač, nástupce dřívějšího projektu [[http://www.zebra.org/|Zebra]]. Je vydán pod otevřenou licencí GPL a distribuován v podobě zdrojových kódů a binárních balíčků pro vybrané systémy unixového typu. Podporuje IPv4 i IPv6 a hovoří směrovacími protokoly RIP, OSPF a BGP. Program se skládá z několika démonů. Hlavní roli hraje démon //zebra// (dědictví po předchůdkyni), který shromažďuje směrovací informace, spolupracuje s jádrem systému a upravuje jeho směrovací tabulky. Ostatní démoni (//ripd//, //ripngd//, //ospfd//, //bgpd//) slouží jako rozhraní centrálního démona pro konkrétní směrovací protokoly. Nevýhodou tohoto distribuovaného uspořádání je poněkud chaotická konfigurace - každý démon má vlastní konfigurační soubor a vlastní rozhraní pro interaktivní komunikaci. Problém roztříštěného ovládání řeší program //vtysh// (VTY shell), který řídí celou Quaggu. Spustit jej smí jen superuživatel root a může pak využívat příkazy všech démonů. //vtysh// může konfiguraci ukládat buď do jednoho společného konfiguračního souboru //Quagga.conf//, nebo do samostatných souborů pro jednotlivé démony (jejich jména jsou vždy //démon.conf//). Implicitiní a doporučovaný je režim se samostatnými konfiguračními soubory. Quagga svým konfiguračním jazykem napodobuje směrovače [[cisco_systems]], shoda ale zdaleka není dokonalá. Zdaleka neobsahuje vše a nereaguje na změny, které postupně Cisco zavádí. Nejpoužívanější interaktivní příkazy jsou | **show interface**| zobrazí stav rozhraní | | **show ip route**| aktuální směrovací tabulka IPv4 | | **show ipv6 route**| aktuální směrovací tabulka IPv6 | | **enable**| přechod do privilegovaného režimu | | **disable**| návrat do pozorovacího režimu | | **config term**| přechod do konfiguračního režimu | | **show running**| zobrazení aktuální konfigurace | | **write memory**| uložení aktuální konfigurace do souboru | | **reload**| restart démona | | **exit**| opuštění konf. režimu či celého démona | Další text obsahuje příkazy jednotlivých démonů. Lze je používat v jejich konfiguračních souborech, při interaktivní komunikaci s démonem nebo v programu //vtysh//. ====== zebra ====== Centrální démon slouží především k práci s jednotlivými rozhraními a ke konfiguraci statických cest. Logika práce s rozhraními odpovídá směrovačům Cisco. Chcete-li nastavovat vlastnosti některého z nich, musíte vstoupit do konfiguračního režimu a následně se přepnout na příslušné rozhraní příkazem interface //jméno// Následně pak můžete nastavovat jeho parametry, jako například IPv6 adresu ipv6 address //adresa/délka_prefixu// Provedená změna se okamžitě promítá do operačního systému, jak si můžete ověřit příkazem //ifconfig//. Existující adresu lze odstranit, když jejímu konfiguračnímu příkazu předřadíte **no**. Tento princip je obecný, můžete negovat jakýkoli příkaz. Pro řízení ohlášení směrovače slouží skupina příkazů **ipv6 nd**. Implicitně je ohlašování směrovače vypnuto, musíte je proto zapnout no ipv6 nd suppress-ra Lze nastavovat celou řadu parametrů, nejdůležitější jsou samozřejmě ohlašované adresy ipv6 nd prefix-advertisement //prefix/délka// Quagga sama o sobě nedokáže vytvářet nová rozhraní (např. tunely). Musíte je založit v operačním systému a pak už je můžete normálně využívat. Jejich identifikátory odpovídají identifikátorům v operačním systému. Jako příklad uvedeme konfiguraci počítače se dvěma Ethernety do lokální sítě a tunelem sit0 připojujícím zdejší síť k IPv6 Internetu. Na rozhraní eth0 se používá bezstavová automatická konfigurace doplněná bezstavovým DHCPv6, na rozhraní eth1 se konfiguruje jen protokolem DHCPv6 (bezstavová konfigurace je zakázána). Do tunelu se neposílá ohlášení směrovače. Konfigurace by vypadala například následovně: interface lo ipv6 nd suppress-ra interface eth0 description Hlavni segment ipv6 address 2001:db8:1:1::aaaa/64 no ipv6 nd suppress-ra ipv6 nd other-config-flag ipv6 nd prefix-advertisement 2001:db8:1:1::/64 interface eth0 description Uctarna ipv6 address 2001:db8:1:2::bbbb/64 no ipv6 nd suppress-ra ipv6 nd managed-config-flag ipv6 nd prefix-advertisement 2001:db8:1:2::/64 no-autoconfig interface sit0 description Externi pripojeni ipv6 address 2001:a:b:c::2/64 ipv6 nd suppress-ra Statické cesty se zadávají příkazem ipv6 route //prefix/délka// //kudy// Na konec příkazu lze připojit informaci o vzdálenosti či klíčová slova **blackhole** (datagramy zahodit) nebo **reject** (datagramy zahodit a poslat odesilateli [[icmpv6]] zprávu. ====== ripngd ====== Konfigurace RIPng je velmi jednoduchá. Zahájíte ji příkazem router ripng Hlavní složkou konfigurace démona je výčet rozhraní, na nichž má běžet. Slouží k tomu příkazy network //rozhraní// Místo //rozhraní// můžete uvést i síť v obvyklém tvaru //prefix/délka//. Několika dalšími příkazy můžete ovlivňovat obsah směrovacích informací šířených RIPem. redistribute bgp do nich přidává cesty, které se dozvěděl z BGP. Podobně lze zařadit do směrování statické cesty (**redistribute static**) a přímo připojené sítě (**redistribute connected**). Pomocí aggregate-address //prefix/délka// lze agregovat menší sítě do jednoho společného prefixu. A konečně default-information originate zařadí do odesílaných informací i implicitní cestu. Konfigurace pro výše uvedený směrovač by mohla vypadat následovně: router ripng network eth0 network eth1 network sit0 redistribute static redistribute connected aggregate-address 2001:db8:1::/48 default-information originate ====== ospf6d ====== Konfigurace démona //ospf6d// pro OSPFv3 se zahájí příkazem router ospf6d Směrovači je třeba přidělit identifikátor. Jedná se o 32bitovou hodnotu, zapisovanou ve stejném tvaru jako IPv4 adresa. Pokud směrovač má nějakou IPv4 adresu, je vhodné ji použít jako identifikátor: router-id //identifikátor// Následně je třeba zapnout OSPFv3 pro jednotlivá rozhraní a zařadit je do oblastí. To zajistí sada příkazů interface //název_rozhraní// area //identifikátor_oblasti// Pro každou oblast můžete definovat prefix obalující všechny její sítě. Místo nich pak bude posílat jen tento společný prefix. Postará se o to příkaz area //identifikátor_oblasti// range //prefix/délka// Opět použijeme směrovač z výše uvedených příkladů. Pro OSPF budou oba Ethernety v oblasti 0.0.0.100 a tunal v páteřní oblasti 0.0.0.0: router ospf6d router-id 11.22.33.44 interface eth0 area 0.0.0.100 interface eth1 area 0.0.0.100 interface sit0 area 0.0.0.0 area 0.0.0.100 range 2001:db8:1::/48 redistribute static rip connected ====== Další informace ====== * [[http://www.quagga.net/|Stránky projektu Quagga]]