我喜歡把 virt-manager 所管理的虛擬機從自閉的網路裡面拉到跟 host 同一層的家中區網, 以便手機、 平板等等其他裝置可以看到這些虛擬機。 過去幾年是用 netplan 來建立 bridge; 今年 (從 linux mint) 移民到 debian, 預先安裝的是 nmcli 而不是 netplan。 那就跟著改吧, 這樣比較方便在社群裡求助。
先講結論: 我覺得 nmcli 有幾個地方設計很奇怪、 很難理解。 這個問題 跟我的困惑一樣: 在 nmcli 裡, 一個 device 可以有多個 connection 嗎? 還是反過來, 一個 connection 可以包含多個 device 嗎? 讀完解答還是沒有很懂。
不過沒關係, 指令其實很簡單。 以下都用 root 的身份。
首先, cd /etc/NetworkManager/system-connections ; ls -l
等一下凡是建立或刪除連線, 都可以在這裡觀察變化。
另外, 可以用 nmcli dev
觀察所有網路裝置;
用 nmcli con
觀察所有連線設定。
根據我的觀察, 已成功或正在連線中的 「連線設定」 會出現在第一個列,
綠色表示已成功啟用, 黃/橘色表示 「啟用中」 (連線中); 但找不到文件詳細說明。
從 這個問題
提問者的結論, 我也學到: 改叫它多顯示一個 「狀態」 欄位比較簡單:
nmcli -f name,uuid,type,device,state con
等一下可以隨時用。
- 預設的有線連線叫做 'Wired connection 1', 它是透過 eth0 這個裝置連線。
那我先把它改名為 eth0-con, 等一下比較容易看:
nmcli con mod 'Wired connection 1' con-name eth0-con
- 建立一個名為 brext 的 bridge 類型裝置, 同時幫它建一個名為 brext-con 的連線:
nmcli con add con-name brext-con type bridge ifname brext stp no
- 建立一個名為 brext-eth0-con 的連線, 同時把 eth0 綁定成為 brext 的 slave:
- nmcli con add con-name brext-eth0-con type bridge-slave ifname eth0 master brext
從此以後, 如果想採用 brext-eth0-con
(虛擬機提升至跟 host 相同的網段) 就:
nmcli con down eth0-con ; nmcli con up brext-con
如果想忽略 brext、 改採用 eth0 直接連網, 就:
nmcli con down brext-con ; nmcli con up eth0-con
從 eth0-con 切換成 brext-con 的時候, 需要等幾秒鐘 brext-con 的狀態才會變正常。
切換實驗時, 可以從區網裡面的另一部機器下:
nmap -sP 192.168.xx.0/24
查看一下本區網內所有已連線機器的網卡 mac addresses,
驗證一下確實有切換成功。
沒有留言:
張貼留言
因為垃圾留言太多,現在改為審核後才發佈,請耐心等候一兩天。