====== BIRD ====== [[http://bird.network.cz/|BIRD Internet Routing Daemon]] je softwarový směrovací démon, o jehož rozvoj pečuje [[http://www.nic.cz/|CZ.NIC]]. Je dispozici pod otevřenou licencí GNU GPL pro Linux, BSD a příbuzné systémy. BIRD se stará výlučně o správu směrování a směrovacích tabulek, nezajišťuje konfiguraci síťových rozhraní operačního systému ani žádných dalších síťových parametrů. Program má svou vlastní směrovací tabulku (může jich být i několik), která je centrem jeho architektury. Směrovací tabulka si vyměňuje informace s jednotlivými protokoly. Převzetí informací z protokolu do směrovací tabulky je označováno jako //import//, odeslání směrovacích informací protokolem je //export//. Práce se směrovací tabulkou operačního systému probíhá úplně stejně, představuje ji fiktivní směrovací protokol **kernel**. Import a export informací lze řídit pomocí filtrů. ====== Základy konfigurace ====== BIRD sice podporuje IPv4 i IPv6, nikoli však zároveň. Musíte spustit dva démony, jednoho pro každý z obou síťových protokolů. To se odráží i ve dvou konfiguračních souborech: //bird.conf// pro IPv4 a //bird6.conf// pro IPv6. Nadále už se budeme věnovat jen IPv6, jehož démon se obvykle jmenuje //bird6//. Konfigurační soubor obvykle začíná nastavením globálních parametrů (ladicí informace, protokol o činnosti apod.), za nimiž následuje konfigurace jednotlivých protokolů v jednotném tvaru protocol //název// { //parametry// }; Mezi globálními parametry je třeba především nastavit identifikátor směrovače pomocí router id //IPv4_adresa//; Tento parametr je povinný. Kromě něj lze řídit ještě způsob vedení protokolu o činnosti (''log'') a úroveň ladění (''debug''). Nadále se budeme věnovat klíčovým protokolům. ====== kernel ====== Pseudoprotokol **kernel** slouží ke komunikaci se systémovou směrovací tabulkou. Obvykle se exportuje i importuje vše a příkazem ''learn'' nařídíte, že se BIRD má ze systémové tabulky učit cesty, které se v ní ocitly jinými cestami. Parametr ''scan time'' obsahuje interval, ve kterém se má systémová tabulka kontrolovat. Hodnotou ''persist'' pak řídíte, zda mají být v systémové tabulce zachovány položky vložené BIRDem, nebo zda se mají při jeho ukončení odstranit. Typická konfigurace protokolu **kernel** vypadá takto: protocol kernel { learn yes; scan time 10; persist yes; import all; export all; }; ====== device ====== Tento pseudoprotokol se ve skutečnosti netýká směrování, BIRD jeho prostřednictvím jen zjišťuje, zda jednotlivá síťová rozhraní běží nebo ne. Základním parametrem je interval prováděných kontrol. Jelikož moderní operační systémy signalizují změnu stavu rozhraní, provádí se tato explicitní kontrola jen pro jistotu. Příklad konfigurace: protocol device { scan time 15; }; ====== static ====== "Protokol" umožňuje vkládat do směrovací tabulky statické cesty. Mají tvar route //prefix// via //kudy//; kde //kudy// je buď adresa sousedního stroje, nebo název rozhraní, jímž mají být datagramy odeslány, například protocol static { route 2001:db8:1:1::/64 via "eth3"; route ::/0 via fe80::abcd%eth0; route 2001:db8:bad::/48 drop; }; Pomocí protokolu **static** lze vybrané prefixy i zakázat. Místo ''via'' použijte jednu z těchto variant: ''drop'' (paket potichu zahodit), ''reject'' (zahodit a poslat odesilateli ICMP zprávu o nedosažitelnosti) nebo ''prohibit'' (zahodit se zprávou, že cíl byl administrátorem zakázán). ====== rip ====== Konfigurace protokolu **rip** obvykle bývá velmi jednoduchá, protože většina parametrů funguje dobře se svými výchozími hodnotami. Stačí tedy povolit import a export všech informací a povolit protokol na všech síťových rozhraních: protocol rip { interface "eth*" { metric 1; }; import all; export all; }; ====== ospf ====== V případě OSPF je třeba především definovat jednotlivé oblasti příkazy area //identifikátor// { //parametry// }; Mezi //parametry// rozhodně budou rozhraní, která do dané oblasti patří (''interface''). Pokud se jedná o koncovou oblast, bude obsahovat parametr ''stub yes''. Častou potřebou je agregace delších prefixů. U nekoncové oblasti ji zajistí příkaz networks { //prefix1//; //prefix2//; ... }; V případě koncové oblasti poslouží jednodušší stubnet //prefix// { summary; }; Příklad konfigurace hraničního směrovače pro dvě OSPF oblasti by mohl vypadat takto: protocol ospf { area 0.0.0.0 { interface "eth0" { cost 1; }; }; area 9.8.7.6 { stub yes; stubnet 2001:db8:33::/48 { summary; }; interface "eth1" { cost 1; }; interface "eth2" { cost 1; }; }; }; ====== radv ====== Protokol **radv** se opět netýká směrování, ale zasílání ohlášení směrovače, v němž program poskytuje připojeným stanicím informaci pro [[automaticka_konfigurace|automatickou bezstavovou konfiguraci]]. Často bude stačit vyjmenovat rozhraní, do nichž se mají ohlášení posílat: protocol radv { interface "*"; }; Dalšími parametry lze ovlivňovat obsah ohlášení.