# 遠端主機為 10.20.190.3 # 執行命令 "list --all" $ virsh --connect qemu+ssh://root@10.20.190.3/system list --all Id Name State ---------------------------------------------------- 3 centos7 running
# 新增 bridge device $ brctl addbr tester $ brctl show bridge name bridge id STP enabled interfaces ....... tester 8000.000000000000 no
# 檢查 TUN/TAP 模組是否已經載入到 kernel 中 $ lsmod | grep tun tun 27141 4 vhost_net
# 建立 TAP device(vm-vnic) $ ip tuntap add dev vm-vnic mode tap $ ip addr show vm-vnic 21: vm-vnic: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 500 link/ether 92:ee:17:b7:2b:c4 brd ff:ff:ff:ff:ff:ff
# 將 TAP device 與 bridge 相連 $ brctl addif tester vm-vnic $ brctl show bridge name bridge id STP enabled interfaces ....... tester 8000.92ee17b72bc4 no vm-vnic
# 檢視目前連接到 bridge 的 TAP devices $ brctl showmacs tester port no mac addr is local? ageing timer 1 92:ee:17:b7:2b:c4 yes 0.00 1 92:ee:17:b7:2b:c4 yes 0.00
若以上的 vm-vnic 連接到 VM 後,整個 network topology 會變成類似如下圖:
測試完畢後,我們可以用以下指令移除上面建立的 TAP device & bridge:
1 2 3 4 5 6 7 8 9
$ brctl delif tester vm-vnic
$ brctl show bridge name bridge id STP enabled interfaces ........ tester 8000.000000000000 no
$ ip tuntap del dev vm-vnic mode tap $ brctl delbr tester
Virtual Network Types
在 KVM 中,virtual network 分為以下幾種類型:
NATed:以 host 作為 NAT server 的方式提供網路
Routed:透過設定在 hypervisor 上的 routing rules,允許 VM 與實體網路卡相連進行資料傳輸
$ virsh -c qemu+ssh://root@10.20.190.3/system net-list --all Name State Autostart Persistent ---------------------------------------------------------- default active yesyes
$ virsh --connect qemu+ssh://root@10.20.190.3/system net-start isolated Network isolated started
# network isolated 已經啟動 $ virsh --connect qemu+ssh://root@10.20.190.3/system net-list --all Name State Autostart Persistent ---------------------------------------------------------- default active yesyes isolated active no yes
完成了 isolated virtual network 的配置後,以下是動態產生 & 刪除 NIC 並與 VM 相連的相關操作: