結合 WiFi 和以太網以實現更輕鬆的網絡移動性 – Linux 技術博客


一個網絡接口可能還不夠。網絡綁定允許多個網絡連接在單個邏輯接口上運行。您可能會這樣做,因為您需要比單個連接處理的更多的帶寬。或者,您可能希望在不丟失網絡連接的情況下在有線和無線網絡之間切換。

後者對我來說很好。在家工作的好處之一是,當天氣晴朗時,您可以在陽光充足的甲板上工作,而不是在室內工作。但是每次我這樣做時,我都會失去互聯網連接。 IRC、SSH、VPN——至少在一些客戶端重新連接時都會消失。本文將向您展示如何在您的 Fedora 30 筆記本電腦上設置網絡綁定,以將您的筆記本電腦擴展塢從有線連接無縫傳輸到 WiFi 連接。

在 Linux 上,接口綁定由綁定內核模塊處理。 Fedora 默認不啟用此功能,但它包含在 kernel-core 包中。這意味著只有一個命令可以啟用接口綁定。

sudo modprobe bonding

請注意,這將一直有效,直到您重新啟動。要永久啟用接口綁定,請在 /etc/modules-load.d 目錄中創建一個名為 bond.conf 的文件,其中僅包含單詞“bonding”。

現在綁定已啟用,創建一個綁定接口。首先,我們需要獲取要綁定的接口的名稱。要列出可用接口,請運行:

sudo nmcli device status

您應該會看到類似於以下內容的輸出:

DEVICE          TYPE      STATE         CONNECTION         
enp12s0u1       ethernet  connected     Wired connection 1
tun0            tun       connected     tun0               
virbr0          bridge    connected     virbr0             
wlp2s0          wifi      disconnected  --      
p2p-dev-wlp2s0  wifi-p2p disconnected  --      
enp0s31f6       ethernet  unavailable   --      
lo              loopback  unmanaged     --                 
virbr0-nic      tun       unmanaged     --       

在這種情況下,有兩個(有線)以太網接口可用。 您可以看到 enp12s0u1 位於筆記本電腦底座中,並通過 STATE 列連接。另一個 enp0s31f6 是筆記本電腦的內置端口。 還有一個名為 wlp2s0 的 WiFi 連接。 enp12s0u1 和 wlp2s0 是這裡感興趣的兩個接口。 (您不需要知道本練習中網絡設備是如何命名的,但如果您有興趣, systemd.net-naming-scheme 手冊頁.)

第一步是創建綁定接口。

sudo nmcli connection add type bond ifname bond0 con-name bond0

在本例中,綁定接口的名稱為bond0。 “con-name bond0”將連接名稱設置為bond0,當你關閉它時,它變成一個名為bond-bond0的連接。您還可以將連接名稱設置為更具描述性的名稱,例如“Docking Station Bond”或“Ben”。

下一步是將接口添加到綁定接口。

sudo nmcli connection add type ethernet ifname enp12s0u1 master bond0 con-name bond-ethernet
sudo nmcli connection add type wifi ifname wlp2s0 master bond0 ssid Cotton con-name bond-wifi

如上,連接名稱指定為 更具描述性將 .enp12s0u1 和 wlp2s0 替換為系統上相應的接口名稱。 為 WiFi 接口使用您自己的網絡名稱 (SSID)。我用“棉花”。 如果您的 WiFi 連接有密碼(當然有!),您還需要將其添加到您的配置中。以下假設您正在使用 WPA2-PSK 確認

sudo nmcli connection modify bond-wifi wifi-sec.key-mgmt wpa-psk
sudo nmcli connection edit bond-wif

第二個命令將您帶到一個交互式編輯器,您可以在其中輸入密碼而無需登錄您的 shell 歷史記錄。在下面輸入並用您的實際密碼替換密碼

set wifi-sec.psk password
save
quit

現在我們準備從剛創建的綁定接口和輔助接口開始。

sudo nmcli connection up bond0
sudo nmcli connection up bond-ethernet
sudo nmcli connection up bond-wifi

您現在應該能夠在不丟失網絡連接的情況下斷開有線或無線連接。

警告:請使用不同的 WiFi 網絡

在指定的 WiFi 網絡上漫遊時,此配置工作正常,但離開此網絡時,綁定中使用的 SSID 不可用。理論上可以為您使用的每個 WiFi 連接添加一個接口到綁定,但這似乎不合理。或者,您可以禁用綁定接口。

sudo nmcli connection down bond0

回到定義的 WiFi 網絡後,如上所述啟動綁定接口。

調整債券

默認情況下,綁定接口使用“循環”模式。這將在接口之間平均分配負載。但是,如果您同時擁有有線和無線連接,您可能更喜歡有線連接。主動備份模式使這成為可能。您可以在創建接口時指定模式和主接口,也可以稍後使用該命令(綁定接口必須關閉)。

sudo nmcli connection modify bond0 +bond.options "mode=active-backup,primary=enp12s0u1"

這個 內核文檔 有更多關於綁定選項的信息。