安裝Xen或安裝KVM後都會發現網絡接口裡多 了一個叫做virbr0的虛擬網絡接口:
# ifconfig
...
virbr0 Link encap:Ethernet HWaddr d2:91:97:b8:3d:fc
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
...
這是由於安裝和啟用了libvirt 服務後生成的,libvirt 在服務器(host)上生成一個virtual network switch (virbr0),host 上所有的虛擬機(guests)通過這個virbr0 連起來。默認情況下virbr0 使用的是NAT 模式(採用IP Masquerade),所以這種情況下guest 通過host 才能訪問外部。
大多數時候我們虛擬機使用的是bridge(網橋)直接連到局域網裡,所以這個virbr0 不是必須的(注:不要搞混淆了,bridge 和這裡的virbr0 bridge 是互不相干的)。如何關掉這個virbr0 呢?先net-destroy 然後net-undefine,最後別忘了重啟libvirtd 讓設置生效:
# virsh net-list
Name State Autostart
-----------------------------------------
default active yes
# virsh net-destroy default
Network default destroyed
# virsh net-undefine default
Network default has been undefined
# service libvirtd restart
Stopping libvirtd daemon: [ OK ]
Starting libvirtd daemon: [ OK ]
留言
張貼留言