Forum Turris
Fórum Turris Nápověda

Milí majitelé routerů Turris,

toto fórum bylo 9. 12. 2016 zmrazeno a nahrazeno naším novým Turris fórem. Ještě chvíli bude dostupné k prohlížení, ale již zde není možné přispívat. Více informací naleznete v oznámení o uzavření fóra.


Dear Turris routers users,

this forum has been frozen on Dec 9th, 2016 and replaced by our new Turris forum. It will be read-only accessible for some time after. For more information, read the announcement about closing the forum.

Nahoru Téma Veřejnost / Všeobecná diskuse / BIRD a RIP přes OpenVPN
- - Od machvlad Dne 2015-11-30 20:16 Upraveno 2015-11-30 22:09
Zdravím,
doteď jsem letmo pracoval na linuxu s RIP protokolem pomocí démonu Quagga, ale na Turrisu je routovací démon BIRD, tak jsem si říkal, že ho zkusím. Turris je připojen přes OpenVPN do jiné sítě, ve které běží RIP server a posílá směrovací tabulku.

Přidal jsem si tedy do /etc/bird4.conf následující konfiguraci:

filter local_filter {
        if net ~ [ 172.16.0.0/12+, 192.168.0.0/16+, 10.0.0.0/8+ ] then accept;
        else reject;
}
protocol rip {
        import filter local_filter;
        export filter local_filter;
        interface "tap*" { mode broadcast; };
        authentication none;
}

Po spuštění bird démona se v logu zobrazí tyto záznamy:

2015-11-30T19:40:39+01:00 debug bird4[]: rip1: Listening on tap0, port 520, mode broadcast (10.8.0.255)
2015-11-30T19:40:41+01:00 debug bird4[]: rip1: Broadcasting routing table to tap0

a žádné routy se nepřečtou, v logu jsou jen zmínky o odesílání rozpoznaných cestách (Broadcasting...). Když si ale zapnu tcpdump, tak příchozí RIP zprávy jsou vidět:

root@turris:/etc# tcpdump -i any -n src host 10.8.0.1 -vv
tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
22:07:45.330740 IP (tos 0xc0, ttl 1, id 43637, offset 0, flags [DF], proto UDP (17), length 112)
    10.8.0.1.520 > 224.0.0.9.520: [udp sum ok]
        RIPv2, Response, length: 84, routes: 4 or less
          AFI IPv4,        10.0.0.0/16, tag 0x0000, metric: 2, next-hop: self
          AFI IPv4,       10.10.1.0/24, tag 0x0000, metric: 2, next-hop: self
          AFI IPv4,      172.17.0.0/21, tag 0x0000, metric: 1, next-hop: self
          AFI IPv4,   192.168.192.0/24, tag 0x0000, metric: 2, next-hop: self
        0x0000:  0202 0000 0002 0000 0a00 0000 ffff 0000
        0x0010:  0000 0000 0000 0002 0002 0000 0a0a 0100
        0x0020:  ffff ff00 0000 0000 0000 0002 0002 0000
        0x0030:  ac11 0000 ffff f800 0000 0000 0000 0001
        0x0040:  0002 0000 c0a8 c000 ffff ff00 0000 0000
        0x0050:  0000 0002


Do stejné OpenVPN sítě je připojená ještě jiná síť, kde je routerem Debian a na něm běžící Quagga a ta směrovací tabulku bez problémů přečte..

Mohl bych poprosit o nakopnutí jakým směrem hledat zdroj toho, proč si bird běžící na turrisu nenačte směrovací tabulku příchozích zpráv?
Nadřazený - - Od Ondřej Caletka (>>>) Dne 2015-12-01 14:56
BIRD nepracuje přímo se směrovací tabulkou jádra, pomocí směrovacích protokolů nabírá informace do vnitřní směrovací tabulky, odkud se dále mohou předávat jinam, třeba i do jádra. Pro synchronizaci vnitří směrovací tabulky s tabulkou jádra slouží speciální protokol kernel, do kterého je potřeba směrovací informace exportovat.

Zkuste tedy přidat toto:


protocol kernel {
        persist;
        export all;
}
Nadřazený - Od machvlad Dne 2015-12-01 22:14
Děkuji za odpověď.

kernel sekci v bird4.conf mám, ale v tomto myslím problém nebyl, směrovací záznamy nebyly vidět ani pomocí programu birdc4 a příkazu show route v rámci něj.

Ale ještě jsem dnes chvíli experimentoval a zjistil jsem, že když RIP pakety chodí na multicast adresu 224.0.0.9, tak vidět nejsou:

root@turris:~# tcpdump -i any -n src host 10.8.0.1 -vv
tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
23:31:22.079712 IP (tos 0xc0, ttl 1, id 59825, offset 0, flags [DF], proto UDP (17), length 112)
    10.8.0.1.520 > 224.0.0.9.520: [udp sum ok]

Ale když jsou RIP pakety zasílány místo multicastu přes broadcast adresu 10.8.0.255, tak už se v routovací tabulce BIRDu zobrazí.

root@turris:~# tcpdump -i any -n src host 10.8.0.8 -vv
tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
23:30:53.568313 IP (tos 0xc0, ttl 1, id 61758, offset 0, flags [none], proto UDP (17), length 152)
    10.8.0.8.520 > 10.8.0.255.520: [udp sum ok]

Na jiném debianním serveru jsem si ještě zkusil nainstalovat (místo serveru quagga) bird ve verzi 1.4.5, a ten s identickou konfigurací, kterou mám na Turrisu, načetl záznamy z RIP tabulky zaslané i na multicast adresu 224.0.0.9.

Je možné, že verze 1.4.4, která je v balíčcích na Turrisu, špatně pracuje s multicastem?

Pro jistotu přikládám kompletní konfiguraci v bird4.conf:
# cat /etc/bird4.conf
filter local_filter {
        if net ~ [ 172.16.0.0/12+, 192.168.0.0/16+, 10.0.0.0/8+ ] then accept;
        else reject;
}
protocol direct {
        interface "br-lan";
}
protocol kernel {
        learn; 
        scan time 20;
        export all;
        persist;
}
protocol device {
        scan time 10;
}
protocol rip {
        import filter local_filter;
        export filter local_filter;
        port 520;
        interface "tap*" { mode broadcast; };
        honor neighbor;
        authentication none;
}
Nahoru Téma Veřejnost / Všeobecná diskuse / BIRD a RIP přes OpenVPN

Powered by mwForum 2.29.3 © 1999-2013 Markus Wichitill