cs:bird

BIRD

BIRD Internet Routing Daemon je softwarový směrovací démon, o jehož rozvoj pečuje 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 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í.

Poslední úprava:: 24.09.2019 13:05