如何配置 BIRD 路由器以與不同子網上的鄰居通信?
介紹
我正在嘗試在執行BIRD routing daemon 的兩台主機之間建立使用 RIPv2 協議的基本通信。
我有一個有地址
Host A
的介面。 我有另一台主機,其介面具有 address 。這些介面通過電纜直接連接。如果我在兩台機器上添加靜態路由,我可以在兩台機器之間 ping 通。enp0``10.0.1.50/24
Host B``enp1``10.1.1.25/24
配置文件
我有以下
bird.conf
內容Host A
:protocol kernel { learn; # Learn all alien routes from the kernel persist; # Don't remove routes on bird shutdown scan time 20; # Scan kernel routing table every 20 seconds export all; # Default is export none } protocol device { scan time 10; # Scan interfaces every 10 seconds } protocol direct { interface "enp0" } protocol rip MyRIP { export all; import all; interface "enp0" { mode multicast;}; }
bird.conf
onHost B
是相同的,除了替換enp0
為enp1
初步結果
在兩台主機上啟動鳥守護程序後,我可以做一個
tcpdump -ni enp0 -vv
13:21:41.943537 IP (tos 0xc0, ttl 1, id 4933, offset 0, flags [none], proto UDP (17), length 132) 10.1.1.25.520 > 224.0.0.9.7742: [udp sum ok] UDP, length 104 13:21:41.943704 IP (tos 0xc0, ttl 1, id 150, offset 0, flags [none], proto UDP (17), length 272) 10.0.1.50.520 > 224.0.0.9.7742: [bad udp cksum 0xec48 -> 0x1219!] UDP, length 244
我可以跳入
birdcl
命令行並執行show rip neighbors
並獲得一個空表。讓它發揮作用
如果我將地址設置在同一個子網上,我可以執行
show rip neighbors
並且可以10.0.1.50
在我的鄰居列表中看到。包起來
如果鏈路的兩端不在同一個子網上,如何讓這些路由器將彼此列為鄰居?
我必須對網路如何工作有某種不正確的心理畫面,路由器是否不需要一直與不在同一子網上的鄰居通信?
我沒有掛斷特定於 BIRD 的答案。
早在遠古時代,網路上的協議比 TCP/IP 還多,我執行 RIP。那時,它是 RIPv1,它使用廣播。網路拓撲看起來像這樣:
[10.0.0.0/24] <-- router --> [10.0.1.0/24] <-- router --> [10.0.2.0/24] [10.0.3.0/24] <-- router ------^ ^---- router --> [10.0.4.0/24] [10.0.5.0/24] <-- router -------^ ^----- router --> [10.0.6.0/24]
所有路由器將共享一個只有路由器的子網。對於兩個路由器設置,它們之間有一根電纜,就像你正在做的那樣。對於較大的設置,將有一個執行子網的快速網路設備(希望是交換機,但並非總是如此)。這樣一來,一切都在 2 跳之外,並且路由收斂變得簡單。這就是我們當時所擁有的。
然後是 RIPv2 和多播,擁有更多的躍點不太容易出現收斂問題。如果將多播 TTL 設置為超過躍點直徑的 +1,則每個路由器都有效地直接向其他每個路由器通告,從而加快收斂速度。
不過,要考慮的關鍵事項是:查看 TCPDUMP 輸出中的源地址。
10.1.1.25.520 > 224.0.0.9.7742 10.0.1.50.520 > 224.0.0.9.7742
路由器
10.0.1.50
已被告知,該路由器10.1.1.25
有一個10.1.1.0/24
本地子網。但是,路由器 at10.0.1.50
沒有到 address 的路由10.1.1.25
,因此它不會將其添加到表中。多播是您的公告頻道,但它不能承載路由流量。一切都沒有失去。
如果由於某種原因您只能使用單根電纜,您可以定義虛擬介面。在
enp0.0
10.3.1.0/24 和 10.0.1.0/24enp0.1
上的位置。這樣您就可以使用 10.3.1.0/24 作為您的“路由網路”。