Linux brctl 的以太網橋命令例子
原文鏈接
我的博客
在 Linux
中,這個命令用來創建、操作以太網橋。通常在你的服務器上具有多個以太網,且你希望對它們進行組合,呈現某種邏輯網絡時,使用 brctl
命令。
比如,你有一個 eth0
以及 eth1
,你可以組合它們,讓他們呈現為 br0
,那么在處理網絡流量時,會同時使用 eth0
以及 eth1
在本文檔中,會有如下內容:
- 使用
addbr
創建新的以太網橋 - 使用
show
展示可用的以太網橋 - 使用
delbr
刪除現有的以太網橋 - 添加接口到現有的橋
- 添加多個接口到現有的橋
- 跟蹤橋的
MAC
地址 - 對橋上的
MAC
地址設置老化時間
使用 addbr
創建新的以太網橋
下面的例子,我們創建了 dev
,stage
以及 prod
三個以太網橋:
$ brctl addbr dev
$ brctl addbr stage
$ brctl addbr prod
注意: 在本階段,這幾個以太網橋還是空白的橋,沒有其他的以太網依附在上面。
使用 show
展示可用的以太網橋
使用 brctl show
,可以看到當前服務器上可用的以太網橋:
$ brctl show
bridge name bridge id STP enabled interfaces
dev 8000.000000000000 no
prod 8000.000000000000 no
stage 8000.000000000000 no
可以看到,現在在 interfaces
下面內容為空,這意味着這些橋現在沒有以太網設備。
使用 delbr
刪除以太網橋
下面刪除以太網橋 stage
:
$ brctl delbr stage
$ brctl show
bridge name bridge id STP enabled interfaces
dev 8000.000000000000 no
prod 8000.000000000000 no
要注意,如果橋處於 up
狀態,那么首先需要 down
掉橋,才能刪除它。
添加接口到現有的橋
下面的例子將會添加以太網 eth0
到橋 dev
:
brctl addif dev eth0
注意: 不要在任何實際的機器上執行這個命令,因為你可能會使這個設備的網絡鏈接斷開。如果你能夠通過終端訪問時,以這個作為一個測試用例。
這個例子中:
- 將會使
eth0
成為dev
橋設備的一個端口 - 因此所有到達
eth0
的數據幀將會認為是到達這個橋上 - 同時,當有數據幀從
dev
橋發出時,它將會使用eth0
,當dev
具有多個接口時,eth0
將會是一個潛在的候選者來將數據幀從橋上發送出去
在添加 eth0
到橋后, brctl show
展示如下:
$ brctl show
bridge name bridge id STP enabled interfaces
dev 8000.000000000000 no eth0
prod 8000.000000000000 no
如果在添加接口之后,機器出現了問題,執行下面的命令恢復:
$ brctl delbr dev
注意: 如果你嘗試添加一個回環接口到橋,會有如下無效語句提示: # brctl addif dev lo can't add to bridge dev: Invalid argument
同樣,你也不能夠添加系統中不存在的接口到橋:
$ brctl addif dev eth123
interface eth123 does not exist!
添加多個接口
下面的例子添加多個接口到 dev
:
brctl addif dev eth0 eth1
再次執行 brctl show
可以看到這些接口:
$ brctl show
bridge name bridge id STP enabled interfaces
dev 8000.000000000000 no eth0
eth1
prod 8000.000000000000 no
注意: 如果一個以太網接口已經是一個橋的一部分,那么你不能添加它到另一個橋。一個網絡只能是單個橋的一部分:
$ brctl addif prod eth1
device eth1 is already a member of a bridge; can't enslave it to bridge prod
跟蹤橋的 MAC
地址
使用 brctl showmacs
,我們可以查看橋學到的所有 MAC
地址。
設置橋的 MAC
地址的老化時間
下面的例子,設置 dev
橋的 MAC
地址老化時間為120秒:
$ brctl setaging dev 120
設置完上面的語句后,如果一個數據幀 dev
橋超過120秒沒有看到,那么 dev
將會從轉發數據庫中刪除該 MAC
地址。