Routing

OSPF 路由器(在 debian 上使用 BIRD)將彼此辨識為鄰居,但無法相互 ping

  • May 12, 2016

我使用虛擬盒創建了一個“線”拓撲 - 創建 4 台機器並使用內部網路在每台機器之間建立單獨的連結 - R1 (eth0, 10.0.1.1) <-> (eth0, 10.0.2.1) R2 (eth2, 10.0 .2.2) <-> (eth0, 10.0.3.1) R3 (eth2, 10.0.3.2) <-> (eth0, 10.0.4.1) R4。我使用以下方法啟用了 ipv4 的數據包轉發:

sudo sysctl net.ipv4.ip_forward=1

/etc/bird.conf 中 R2 和 R3 的 OSPF 配置如下所示:

protocol ospf MyOSPF {
   tick 2;
   rfc1583compat yes;
   area 0.0.0.0 {
       stub no;
       interface "eth2" {
           hello 9;
           retransmit 6;
           cost 10;
           transmit delay 5;
           dead count 5;
           wait 50;
           type broadcast;
       };
       interface "eth0" {
           hello 9;
           retransmit 6;
           cost 10;
           transmit delay 5;
           dead count 5;
           wait 50;
           type broadcast;
       };
   };
}

當我輸入birdc並輸入

ospf  show topology

ospf show neighbors

似乎所有路由器都看到正確的拓撲,將相鄰路由器辨識為鄰居並正確計算成本。但是,除非手動指定介面(ping -I eth2 10.0.3.1),否則無法從 R2 ping R3。R1 和 R2 的情況並非如此,它們的兩端都使用了 eth0。

這是 /etc/network/interfaces 在 R2 上的樣子:

allow-hotplug eth0
iface eth0 inet static
address 10.0.2.1

auto eth1 #this is the bridged adapter used to ssh to the vm from the host
iface eth1 inet dhcp 

allow-hotplug eth2
iface eth2 inet static
address 10.0.2.2

我有點困惑,問題出在介面的配置還是路由協議的配置上。

是輸出

ip link

ip route

每台機器

我想到了!設置不起作用有幾個原因 - 首先,地址設置不正確。應該為介面分配以下(例如)地址以使事情正常工作:

R1 (eth0, 10.0.1.1) <-> (eth0, 10.0.1.2) R2 (eth2, 10.0.2.1) <-> (eth0, 10.0.2.2) R3 (eth2, 10.0.3.1) <-> (eth0, 10.0.3.2) R4

為了使每兩個相鄰路由器上彼此面對的兩個介面位於同一廣播域(/24 子網)上。每個介面上的網路遮罩應設置為 255.255.255.0。

至於 BIRD 中的 OSPF 配置,必須將“網路”塊添加到該區域,以便指定路由器應該交換什麼樣的資訊(特別是路由器正在談論的網路)。在這種情況下,由於我們在每一端都有一個 /24 (255.255.255.0) 網路,我們可以在 networks 語句中使用 /16 網路 (255.255.0.0) 在兩個相鄰的 /24 網路(10.0.1 和 10.0)之間交換資訊.2 例如)。所以最後它看起來像這樣:

protocol ospf MyOSPF {
   tick 2;
   rfc1583compat yes;
   area 0.0.0.0 {
       networks {
           10.0.0.0/16;
       };
       stub no;
       interface "eth2" {
           hello 9;
           retransmit 6;
           cost 10;
           transmit delay 5;
           dead count 5;
           wait 50;
           type broadcast;
       };
       interface "eth0" {
           hello 9;
           retransmit 6;
           cost 10;
           transmit delay 5;
           dead count 5;
           wait 50;
           type broadcast;
       };
   };
}

來自bird ospf 配置手冊networks {set} - 區域IP 範圍的定義。這用於摘要 LSA 起源。隱藏網路不會傳播到其他區域。

引用自:https://serverfault.com/questions/531220