RHEL6.3之KVM网络配置

在RHEL6(6.3 x86_64)系统平台下搭建KVM的虚拟机后,虚拟机默认的网络是主机和虚拟机的虚拟网络,这个只能保证主机和虚拟机之间的通信,外部网络是无法访问到虚拟机的。如果要把KVM虚拟化出来的机器放到外网供用户访问就要使用桥接咯。不多说了,开始啦。

一、网络桥接模式

桥接模式的功能就是通过外网可以访问到该虚拟机,当然虚拟机在该网络模式下肯定也是可以访问外部网络的。

1.开启主机的桥接模式

  
  
  
  
  1. cd /etc/sysconfig/network-script  
  2. cp ifcfg-eth0 ifcfg-br0  
  3. vim ifcfg-br0  
  4. DEVICE="br0" 
  5. TYPE="Bridge" 
  6. ONBOOT="yes" 
  7. NM_CONTROLLED="no" 
  8. BOOTPROTO="static" 
  9. IPADDR="192.168.1.8" 
  10. NETMASK="255.255.255.0" 
  11. NETWORK="192.168.1.0" 
  12. GATEWAY="192.168.1.1" 

2.添加主机网卡为桥接成员

  
  
  
  
  1. vim ifcfg-eth0  
  2. DEVICE="eth0" 
  3. TYPE="Ethernet" 
  4. HWADDR="D4:AE:52:8B:8C:28" 
  5. NM_CONTROLLED="no" 
  6. ONBOOT="yes" 
  7. BRIDGE="br0" 

把IP,网关,掩码等信息去掉,留下以上关键信息。

3.修改KVM虚拟机的网络连接模式为桥接模式

修改KVM虚拟机的网络连接 【By 陆小K网络工作室】 

也可以在CLI模式下修改

  
  
  
  
  1. vim /etc/libvirt/qemu/Domain
  2. <interface type='bridge'>
  3. <mac address='52:54:00:c9:0f:28'/>
  4. <source bridge='br0'/>
  5. <model type='virtio'/>
  6. <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
  7. </interface>

4.开启内核路由转发功能

  
  
  
  
  1. sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/' /etc/sysctl.conf  
  2. sysctl -p 

5.重启网络服务,OK。

需要注意的是开启桥接功能需要安装软件包“bridge-utils”,如果发现配置好后没生效记得安装上去,或者最开始的时候检查一下,一般系统可能都默认安装了。

绑定多个IP:

如果需要绑定多个IP,可以这样:

  
  
  
  
  1. DEVICE=br0:0 
  2. BOOTPROTO=static 
  3. NM_CONTROLLED=yes 
  4. ONBOOT=yes 
  5. TYPE=Bridge 
  6. UUID="46a39598-1df0-4149-99de-f93c940fc48e" 
  7. IPADDR=192.168.1.66 
  8. PREFIX=24 
  9. GATEWAY=192.168.1.1 
  10. DNS1=8.8.8.8 
  11. DEFROUTE=yes 
  12. IPV4_FAILURE_FATAL=yes 
  13. IPV6INIT=no 
  14. NAME="System br0:0" 
  15. NETMASK=255.255.255.0 
  16. USERCTL=no 
  17. HWADDR=00:0C:29:1B:1B:C8 
  18. LAST_CONNECT=1343786506 

增加一个br0:0的桥接口就可以了。配置选项可以不用这么多,只留下关键的就可以。需要注意的是,如果重新绑定一个eth0:0是不行的,因为eth0本身也作为了桥的成员了。

还有一点需要注意的是,做桥接是必须关闭NetworkManager服务。这个服务平时也基本不用。

二、关于virbr0的设置

在安装好了KVM架构后,系统默认是会安装一个virbr0的网络接口,用ifconfig就可以查到该网络接口的状态。这是允许虚拟机访问外网,而外部网络的主机是访问不到虚拟机的,这种网络情况的虚拟机当然就只能作为后端服务器咯。

1.virbr0的IP更改

virbr0的默认IP是192.168.122.0/24网段的IP,如果你的虚拟机需要使用自己的IP规划,就得修改咯。看看怎么改:

  
  
  
  
  1. vim /etc/libvirt/qemu/networks/default.xml 
  2. <network> 
  3.   <name>default</name> 
  4.   <uuid>8d004490-ee73-4e36-b9ef-821d7e73f9f6</uuid> 
  5.   <forward dev='br0' mode='nat'> 
  6.     <interface dev='br0'/> 
  7.   </forward> 
  8.   <bridge name='virbr0' stp='on' delay='0' /> 
  9.   <mac address='88:58:00:51:98:C8'/> 
  10.   <ip address='192.168.10.1' netmask='255.255.255.0'> 
  11.     <dhcp> 
  12.       <range start='192.168.10.11' end='192.168.10.50' /> 
  13.     </dhcp> 
  14.   </ip> 
  15. </network> 

配置文件如上咯,还有一个位置是/var/lib/libvirt/network/default.xml,这两个是一样的内容,不过这个应该是执行virsh net命令后根据/etc下的文件生成的。另外,注意上面配置文件中的forward字段里的内容,是br0,因为作了桥接了,否则使用virbr0的虚拟机能获取到IP,但是就是上不了网,原因就很可能出现在这咯,注意。

重新生成配置文件(var目录下的)

  
  
  
  
  1. virsh # net-define /etc/libvirt/qemu/network/default.xml 
  2. virsh # net-destroy default 
  3. virsh # net-start  default 

然后重启下服务:

  
  
  
  
  1. service libvirtd restart 

再ifconfig查看就OK 了。

如果需要多个网段的(模拟VLAN或者称之为虚拟机隔离),复制一个defatlu.xml重新命名,再执行virsh net-define命令。

2.删除virbr0

有时候用不到这个设备可以关掉它:

  
  
  
  
  1. # virsh net-list 
  2. Name                 State      Autostart 
  3. ----------------------------------------- 
  4. default              active     yes 
  5.  
  6. # virsh net-destroy default 
  7. Network default destroyed 
  8.  
  9. # virsh net-undefine default 
  10. Network default has been undefined 
  11.  
  12. # service libvirtd restart 
  13. Stopping libvirtd daemon:                                  [  OK  ] 
  14. Starting libvirtd daemon:                                  [  OK  ] 

这都是在字符界面的操作,适合Linux高手们。我们完全可以在GUI窗口下操作:

启动Virtual Machine Manager,选择“Edit”,然后下拉菜单选择“Connection Details”

KVM网络设置 by 陆小K网络工作室

网络设置界面:

KVM网络设置界面 【By 陆小K网络工作室】

NAT模式的虚拟机配置代码:

  
  
  
  
  1. <interface type='network'> 
  2.       <mac address='52:54:00:24:4a:09'/> 
  3.       <source network='default'/> 
  4.       <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> 
  5. </interface> 

注意比对与桥接的不同之处。virbr0是定义的default。要开启防火墙,把所有规则清除,做一个SNAT,虚拟机的网关填写virbr0的地址。其实默认KVM已经配好了防火墙。

本地网络:

KVM网络设置---本地网络 【By 陆小K网络工作室】

这个界面和VMware Workstation的Virtual Network Editor非常类似,同样也非常的方便。

关于KVM或者是Xen里的网络配置呢,多数是跟我们桌面虚拟软件VMware Workstation或者Oracle VM VirtualBox的网络配置是类似的原理。只是KVM和Xen用于Linux(生产线)。

你可能感兴趣的:(网络,kvm,RHEL,桥接)