綁定 WiFi 和乙太網,以使網路間移動更輕鬆
有時一個網路介面是不夠的。網路綁定允許將多條網路連接與單個邏輯介面一起工作。你可能因為需要給單條連接更多的帶寬而這麼做,或者你可能希望在有線和無線網路之間來回切換而不會丟失網路連接。
我是後面一種情況。在家工作的好處之一是,當天氣晴朗時,在陽光明媚的陽台而不是在室內工作是很愉快的。但每當我這樣做時,我都會失去網路連接。IRC、SSH、VPN,一切都斷開了,客戶端重連至少需要一會。本文介紹了如何在 Fedora 30 筆記本上設置網路綁定,以便從筆記本擴展塢的有線連接無縫切換到 WiFi。
在 Linux 中,介面綁定由內核模塊 bonding
處理。默認情況下,Fedora 沒有啟用此功能,但它包含在 kernel-core
軟體包中。這意味著啟用介面綁定只需一個命令:
sudo modprobe bonding
請注意,這隻會在你重啟之前生效。要永久啟用介面綁定,請在 /etc/modules-load.d
目錄中創建一個名為 bonding.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)替換我的 「Cotton」。如果你的 WiFi 連接有密碼(這當然會有!),你也需要將其添加到配置中。以下假設你使用 WPA2-PSK 身份驗證
sudo nmcli connection modify bond-wifi wifi-sec.key-mgmt wpa-psk
sudo nmcli connection edit bond-wif
第二條命令將進入互動式編輯器,你可以在其中輸入密碼,而無需將其記錄在 shell 歷史記錄中。輸入以下內容,將 password
替換為你的實際密碼。
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 網路時,只需按上述方式啟動綁定介面即可。
微調你的綁定
默認情況下,綁定介面使用「 輪詢 」模式。這會在介面上平均分配負載。但是,如果你有有線和無線連接,你可能希望更喜歡有線連接。 active-backup
模式能實現此功能。你可以在創建介面時指定模式和主介面,或者之後使用此命令(綁定介面應該關閉):
sudo nmcli connection modify bond0 +bond.options "mode=active-backup,primary=enp12s0u1"
內核文檔提供了有關綁定選項的更多信息。
via: https://fedoramagazine.org/bond-wifi-and-ethernet-for-easier-networking-mobility/
作者:Ben Cotton 選題:lujun9972 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive