Networking
IP 別名和埠橋接
情況是我有一個帶有多個乙太網埠的 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 別名上。