繫結 WiFi 和乙太網,以使網路間移動更輕鬆

Ben Cotton發表於2019-07-26

有時一個網路介面是不夠的。網路繫結允許將多條網路連線與單個邏輯介面一起工作。你可能因為需要給單條連線更多的頻寬而這麼做,或者你可能希望在有線和無線網路之間來回切換而不會丟失網路連線。

我是後面一種情況。在家工作的好處之一是,當天氣晴朗時,在陽光明媚的陽臺而不是在室內工作是很愉快的。但每當我這樣做時,我都會失去網路連線。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 連線。 enp12s0u1wlp2s0 是我們在這裡感興趣的兩個介面。(請注意,閱讀本文無需瞭解網路裝置的命名方式,但如果你感興趣,可以檢視 systemd.net-naming-scheme 手冊頁。)

第一步是建立繫結介面:

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

在此示例中,繫結介面名為 bond0con-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

如上所示,連線名稱被設定為更具描述性。請務必使用系統上相應的介面名稱替換 enp12s0u1wlp2s0。對於 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 網路時,只需按上述方式啟動繫結介面即可。

微調你的繫結

預設情況下,繫結介面使用“輪詢round-robin”模式。這會在介面上平均分配負載。但是,如果你有有線和無線連線,你可能希望更喜歡有線連線。 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

本文由 LCTT 原創編譯,Linux中國 榮譽推出

繫結 WiFi 和乙太網,以使網路間移動更輕鬆

訂閱“Linux 中國”官方小程式來檢視

相關文章