安装 Xen 或安装 KVM 后都会发现网络接口里多了一个叫做 virbr0 的虚拟网络接口:
[oracle@whs ~]$ifconfig
...
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:9e:6c:e6 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
...
这是由于安装和启用了 libvirt 服务后生成的,libvirt 在服务器(host)上生成一个 virtual network switch (virbr0),host 上所有的虚拟机(guests)通过这个 virbr0 连起来。默认情况下 virbr0 使用的是 NAT 模式(采用 IP Masquerade),所以这种情况下 guest 通过 host 才能访问外部。这个 virbr0 不是必须的
如何关掉这个 virbr0 呢?先 net-destroy 然后 net-undefine,最后重启 libvirtd 让设置生效:
[oracle@whs ~]$virsh net-list
Name State Autostart
default active yes
[oracle@whs ~]$ virsh net-destroy default
Network default destroyed
[oracle@whs ~]$ virsh net-undefine default
Network default has been undefined
[oracle@whs ~]$ service libvirtd restart
Stopping libvirtd daemon: [ OK ]
Starting libvirtd daemon: [ OK ]