如果說 kvm 是 linux 虛擬機的引擎, 那麼 virt-manager 就是完工的車子。
以前年輕喜歡耍帥直接開著
引擎裸露 的
(網路連線) 拼裝車 上街拉風; 現在懶惰了,
還是開著完工的成品車比較簡單。
gtwang 的文章 有 virt-manager 慢動作分解教學;
笑傲紅塵路 有更多關於虛擬化技術的詳盡解說。
這篇我只想簡單筆記一下我的使用方式, 特別是對外網路的部分。
KVM/virt-manager 預設把虛擬機保護在 NAT 後面, 所以虛擬機可以上網; 但外界看不見虛擬機的 IP。 我的課需要讓學生們互相登入/攻擊彼此的虛擬機, 所以需要把每一部學生機的虛擬機拉出來、 讓它在區網裡曝光。 當然, 這會增加虛擬機遭到網路攻擊的風險 -- 尤其是以 iso 檔開機、 預設簡單登入密碼的虛擬機 -- 請謹慎使用。 這時需要做兩件事。
第一, 在 host 裡面取消實體網卡 (例如 eth0) 的對外連線、 建一個 bridge (例如隨意命名為 brext)、 以它來對外連線 (例如採用 dhcp4)、 把實體網卡 「降級」 成為接上這個 bridge 的網卡之一。 以 mint 20 ulyana 來說, 我採用內建的 netplan, 所以要把 /etc/netplan/*.yaml 備份到別處去, 改以下面的內容作為 /etc/netplan/1-networkd-bridge.yaml 新的網路設定:
network: version: 2 renderer: networkd ethernets: eth0: dhcp4: no bridges: brext: dhcp4: yes interfaces: - eth0
這是從 netplan
官網的範例集錦頁面 抄來小改的。
果然 netplan 的設定檔比以前的網路設定簡單很多。
請用 ls -l /sys/class/net/ | grep -v virtual
查詢你的機器上所有實體網卡名稱, 據此修改上面的 eth0。
改過之後必須 netplan apply
才會生效。
不過.. 如果是隨身碟開機, 每到一部新的機器,
抓到的網卡名稱可能會不一樣, 因此建議修改隨身碟上的開機設定檔
extlinux.conf 或
grub.cfg, 在開機命令列加上 net.ifnames=0 biosdevname=0
強制使用傳統的固定名稱 eth0。 詳見 Benjr.tw 的說明 。
第二, 請設定虛擬機的網卡, 把 「網路來源」 改成上面 netplan 設定檔裡的 "brext" (或是你所任意取的名字), 如圖。 這樣一來, 虛擬機跟 host 都會位於同一網段, 如果區網有 dhcp, 那麼虛擬機也會得到自動派送的 ip。
以下是關於 virt-manager 的更多使用提示:
- 映像檔存在哪裡? 預設的路徑 是 /var/lib/libvirt/images ; 我習慣不用硬碟、 直接以 debian live CD 的 iso 檔啟動虛擬機, 或是拿隨身碟或 lvm 的某個分割來啟動虛擬機, 所以用不太到這邊。
- 如果有用到虛擬硬碟, 建議 啟用 virtio (para-virtualization 類型的技術) 效率較高。
- 萬一按下右上角的「全螢幕」鈕, 該如何離開呢? 把滑鼠移到螢幕上緣中央 (美人尖的位置), 左右移動一下, 會看到一個小選單降下來。 詳見 這個問答。
開成品車真的比引擎裸露拼裝車要簡單多了。
對,之前硬幹 libvirtd 有夠痛苦
回覆刪除自從我把系統弄成 PVE 後我好開心(^3^♪
感恩 PVE 讚嘆 PVE
刪除