在rhel6下搭建KVM的虚拟机后,虚拟机默认的网络是主机和虚拟机的虚拟网络,这个只能保证主机和虚拟机之间的通信,外部网络无法访问,如图:
如果虚拟机想要和其他网络的主机通信,必须更改宿主机的网络为网桥的方式,做如下更改
1、cp ifcfg-eth0 ifcfg-br0
2、vim ifcfg-br0
DEVICE="br0"
TYPE="Bridge"
ONBOOT="yes"
NM_CONTROLLED="no"
BOOTPROTO="static"
IPADDR="10.20.3.171"
NETMASK="255.255.255.0"
NETWORK="10.20.3.0"
GATEWAY="10.20.3.254"
3、vim ifcfg-eth0
DEVICE="eth0"
TYPE="Ethernet"
HWADDR="D4:AE:52:7B:5C:24"
NM_CONTROLLED="no"
ONBOOT="yes"
BRIDGE="br0"
以上3步是将宿主机的网络改为网桥方式,并指定eth0为网桥的成员,使用命令ifconfig可以看到br0取代了eth0
[root@kvm network-scripts]# ifconfig
br0 Link encap:Ethernet HWaddr D4:AE:52:7B:5C:24
inet addr:10.20.3.171 Bcast:10.20.3.255 Mask:255.255.255.0
inet6 addr: fe80::d6ae:52ff:fe7b:5c24/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:357307 errors:0 dropped:0 overruns:0 frame:0
TX packets:10927 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:19251025 (18.3 MiB) TX bytes:27874742 (26.5 MiB)
eth0 Link encap:Ethernet HWaddr D4:AE:52:7B:5C:24
inet6 addr: fe80::d6ae:52ff:fe7b:5c24/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1690216 errors:0 dropped:0 overruns:0 frame:0
TX packets:713177 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1432574703 (1.3 GiB) TX bytes:112072037 (106.8 MiB)
Interrupt:36 Memory:d6000000-d6012800
4、开启宿主机转发功能,sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/' /etc/sysctl.conf,执行sysctl -p立即生效
5、新建虚拟机的时候选择网络为br0,如图:
6、如果想更改已存在的虚拟机的网络配置,修改/etc/libvirt/qemu/目录下的以主机名命名的xml文件
<interface type='bridge'>
<mac address='52:54:00:c9:0f:28'/>
<source bridge='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
把接口定义改成这样的即可