2014年7月1日 星期二

在 ubuntu 建立 virtual bridge

想要在 ubuntu 上建立 bridge 時,可以透過 bridge-utils 這個套件來達成。

安裝套件
sudo apt-get install bridge-utils

手動設置(暫時的)bridge
假設想要建立的 bridge 名稱為 br0,要橋接的對象是實體網卡 eth0,手動建立的方法如下 [1]:
brctl addbr br0
brctl stp br0 off
brctl addif br0 eth0
第一行指令會在 ubuntu 上產生一個虛擬的網路介面,名稱是 br0
第二行指令關閉 br0 這個介面的 STP 功能 [2](原因我沒有特別查...)
第三行指令設定 br0 這個介面要橋接到 eth0

接著如果要把原本 eth0 的網路能力移動到 br0 上,可以繼續執行以下的指令:
ifconfig eth0 down
ifconfig eth0 0.0.0.0 up
dhclient br0
大略是重新啟動 eth0,並且把 eth0 的 IP 清掉,然後讓 br0 去做 DHCP 取得 IP。

不過以上的動作,做出來的 bridge 只是暫時的,電腦重開機以後就會消失。

設定永久的 bridge
如果想做永久的 bridge,可以參考 [3] 的說明,大概就是上面設定的東西改成寫在 /etc/network/interfaces 裡面。
編輯的內容如下(這裡假設要設定的是固定 IP,IP 是 aaa.bbb.ccc.ddd、閘道是 aaa.bbb.ccc.1):
# The primary network interface
auto eth0

# The virtual bridge interface
auto br0
iface br0 inet static
        bridge_ports    eth0
        bridge_stp      off
        bridge_maxwait  0
        bridge_fd       0
        address aaa.bbb.ccc.ddd
        netmask 255.255.255.0
        gateway aaa.bbb.ccc.1
        dns-nameservers 8.8.8.8 8.8.4.4

如果一樣想要動態取得 IP,則設定的內容就是把 static 改成 dhcp,跟一般設定網路的格式一樣。
# The primary network interface
auto eth0

# The virtual bridge interface
auto br0
iface br0 inet dhcp
        bridge_ports    eth0
        bridge_stp      off
        bridge_maxwait  0
        bridge_fd       0

BTW,做 virtual bridge 出來時,bridge interface 使用的網卡卡號好像是會跟被橋接的網卡一樣
所以如果網路環境是有綁網卡跟 IP 的話,可以不用再去申請變更網卡卡號 XD

參考資料:
1、[Ubuntu] bridge架設
2、Spanning Tree Protocol
3、How to configure a Linux bridge interface

沒有留言: