Networking

IP 別名和埠橋接

  • February 20, 2014

情況是我有一個帶有多個乙太網埠的 Ubuntu 盒子,我希望它的行為就像通過交換機連接到電腦一樣。我可以通過橋輕鬆實現這一點。在/etc/network/interfaces

iface br0 inet static
 bridge_ports regex eth.*
 address 192.168.1.1
 netmask 255.255.255.0

在此配置下,另一台設備可以插入任何埠並在 192.168.1.1 ping 此框。

現在,第二部分是我希望其中一個埠具有 IP 別名,從而它也嘗試獲取 DHCP 地址。我可以在沒有網橋的情況下在 eth0 上執行此操作,如下所示:

iface eth0 inet static
 address 192.168.1.1
 netmask 255.255.255.0

iface eth0:0 inet dhcp

現在的訣竅是,我如何將它與軟體切換功能結合起來?因為 brctl 在第 2 層執行,所以一旦 eth0 是 br0 的一部分,我就無法創建 eth0:0。我唯一能做的就是將其創建為 br0:0:

iface br0 inet static
 bridge_ports regex eth.*
 address 192.168.1.1
 netmask 255.255.255.0

iface br0:0 inet dhcp

這實際上幾乎完全符合我的要求,但有一個奇怪的問題:當乙太網埠斷開連接或沒有 DHCP 伺服器時,網橋無法獲得正確的靜態 IP——或者它會獲得它,但是直到啟動完成後一兩分鐘。

所以我的問題是,延遲是怎麼回事?我能以某種方式擺脫它嗎?

或者,有沒有更好的方法可以在這裡完成我想要的?理想的情況是一個守護程序,它會定期輪詢 DHCP,當它獲得 IP 分配時,將其放在別名而不是主界面上。

謝謝。

看起來您被轉發延遲所困擾。

查看man brctl有關如何調整各種時序參數的詳細資訊,但基本上發生的情況是,當 brctl 將您的網橋放在一起時,它必須稍等片刻才能了解新網路的拓撲結構,然後才能實際發送任何數據包。

長答案簡短,這可能會解決您的問題:

# brctl setfd br0 0

通常別名介面無法獲得 DHCP。

嘗試將 DHCP 放在 br0 介面上,將靜態 IP 放在 br0:0 別名上。

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