如何在Linux里使用nmcli添加網(wǎng)橋
Q:我正在電腦上使用 Debian Linux 9 “stretch”。 我想用 NetworkManager 來(lái)建網(wǎng)橋。但是根本就沒(méi)有添加 br0的選項(xiàng)。我該如何在 Linux 里使用 nmcli 來(lái)為 NetworkManager 創(chuàng)建或者添加網(wǎng)橋呢?
網(wǎng)橋沒(méi)什么特別的,只是把兩個(gè)網(wǎng)絡(luò)連在一起。它工作在數(shù)據(jù)鏈路層,即 OSI 模型的第二層。網(wǎng)橋經(jīng)常用在虛擬機(jī)或別的一些軟件中。為了使用網(wǎng)橋而關(guān)閉桌面 Linux 上的 NetworkManager 顯然是不明智的。nmcli
可以創(chuàng)建一個(gè)永久的網(wǎng)橋而不需要編輯任何文件。
本文將展示如何使用 NetworkManager 的命令行工具 nmcli
來(lái)創(chuàng)建網(wǎng)橋。
如何使用 nmcli 來(lái)創(chuàng)建/添加網(wǎng)橋
使用 NetworkManager 在 Linux 上添加網(wǎng)橋接口的步驟如下:
- 打開(kāi)終端
- 獲取當(dāng)前連接狀態(tài):
nmcli con show
- 添加新的網(wǎng)橋:
nmcli con add type bridge ifname br0
- 創(chuàng)建子網(wǎng)卡:
nmcli con add type bridge-slave ifname eno1 master br0
- 打開(kāi) br0:
nmcli con up br0
讓我們從細(xì)節(jié)層面看看如何創(chuàng)建一個(gè)名為 br0 的網(wǎng)橋。
獲取當(dāng)前網(wǎng)絡(luò)配置
你可以通過(guò) NetworkManager 的 GUI 來(lái)了解本機(jī)的網(wǎng)絡(luò)連接:
Getting Network Info on Linux
也可以使用如下命令行來(lái)查看:
$ nmcli con show
$ nmcli connection show --active
View the connections with nmcli
我有一個(gè)使用網(wǎng)卡 eno1
的 “有線連接”。我的系統(tǒng)還有一個(gè) VPN 接口。我將要?jiǎng)?chuàng)建一個(gè)名為 br0
的網(wǎng)橋,并連接到 eno1
。
如何創(chuàng)建一個(gè)名為 br0 的網(wǎng)橋
$ sudo nmcli con add ifname br0 type bridge con-name br0
$ sudo nmcli con add type bridge-slave ifname eno1 master br0
$ nmcli connection show
Create bridge interface using nmcli on Linux
你也可以禁用 STP:
$ sudo nmcli con modify br0 bridge.stp no
$ nmcli con show
$ nmcli -f bridge con show br0
最后一條命令展示了禁用 STP 后的網(wǎng)橋參數(shù):
bridge.mac-address: --
bridge.stp: no
bridge.priority: 32768
bridge.forward-delay: 15
bridge.hello-time: 2
bridge.max-age: 20
bridge.ageing-time: 300
bridge.multicast-snooping: yes
如何打開(kāi)網(wǎng)橋
你必須先關(guān)閉 Wired connection 1
,然后打開(kāi) br0
:
$ sudo nmcli con down "Wired connection 1"
$ sudo nmcli con up br0
$ nmcli con show
使用 ip 命令 來(lái)查看 IP 信息:
$ ip a s
$ ip a s br0
Build a network bridge with nmcli on Linux
附錄: 如何在 KVM 上使用 br0
現(xiàn)在你可以使用 KVM/VirtualBox/VMware workstation 創(chuàng)建的 VM(虛擬機(jī))來(lái)直接連接網(wǎng)絡(luò)而非通過(guò) NAT。使用 vi
或者 cat 命令為虛擬機(jī)創(chuàng)建一個(gè)名為 br0.xml
的文件:
$ cat /tmp/br0.xml
添加以下代碼:
<network>
<name>br0</name>
<forward mode="bridge"/>
<bridge name="br0" />
</network>
如下所示運(yùn)行 virsh
命令:
# virsh net-define /tmp/br0.xml
# virsh net-start br0
# virsh net-autostart br0
# virsh net-list --all
輸出:
Name State Autostart Persistent
----------------------------------------------------------
br0 active yes yes
default inactive no yes
閱讀 man 頁(yè)面獲取更多信息:
$ man ip
$ man nmcli