Xen安装成功以后,需要对网络进行配置,这里介绍的是CentOS官网推荐的使用桥接方式进行网络配置。
Bridge(桥)是 Linux 上用来做 TCP/IP 二层协议交换的设备,与现实世界中的交换机功能相似。Bridge 设备实例可以和 Linux 上其他网络设备实例连接,既 attach 一个从设备,类似于在现实世界中的交换机和一个用户终端之间连接一根网线。当有数据到达时,Bridge 会根据报文中的 MAC 信息进行广播、转发、丢弃处理。
首先,需要关闭NetworkManager服务。在CentOS或者RHEL上,都默认会启用NerworkManager这个服务来对网卡进行管理,NetworkManager服务其实就是我们操作系统右上方那两个小电脑图标,我们在图形化界面可以点击那个来指定使用哪块网卡,但是我们如果需要使用网桥对网络进行配置,就必须要禁用掉这个服务(是不是必须禁止不太清楚,反正我没有禁止之前就一直不成功)。
[root@centos ~]# service NetworkManager stop
Stopping NetworkManager daemon: [ OK ] // 停掉我们的NetworkManager服务,此时我们可以发现右上角那个图标就不见了
[root@centos~]# chkconfig NetworkManager off // NetworkManager这个服务默认会开机启动,所以我们将其设置成开机不启动
[root@centos~]# chkconfig --list | grep NetworkManager
NetworkManager 0:off 1:off 2:off 3:off 4:off 5:off 6:off
在网桥中一般会有下面的参数,即要求iptables不对bridge的数据进行处理,编辑/etc/sysctl.conf 加入下面几行:
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
然后用root权限运行:
# sysctl -p /etc/sysctl.conf
寻找主网络设备:
ip route show | grep 'default' | awk '{print $5}'
一般来说这是 eth0。接下来创建一个名叫 xenbr0 的网桥,并将 xenbr0 设成eth0的从属设备。
进入到 /etc/sysconfig/network-scripts 目录,然后参考 ifcfg-eth0 创建一个名叫 ifcfg-xenbr0 的文件:
[root@centos ~]# brctl addbr xenbr0
[root@centos ~]# brctl show
bridge name bridge id STP enabled interfaces
xenbr0 8000.000000000000 no
[root@centos ~]# cd /etc/sysconfig/network-scripts
[root@centos network-scripts]# cp ifcfg-eth0 ifcfg-xenbr0
[root@centos network-scripts]# vi ifcfg-xenbr0
TYPE=Bridge
DEVICE=xenbr0
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME=xenbr0
DELAY=0
[root@centos network-scripts]# vi ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
UUID=f0d962e6-bc93-4b98-a68c-95be4788b3cc
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=dhcp
HWADDR=50:65:F3:26:33:45
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
BRIDGE=xenbr0
[root@centos network-scripts]# service network restart
注意:这里配置ifcfg-eth0和ifcfg-xenbr0的时候要根据不同的实际情况进行配置,比如说我们实验室是使用DHCP的自动分配方式来分配IP地址,我之前手动配置固定IP地址和动态获取IP地址都一直不成功,所以这里我的BOOTPROTO是使用dhcp方式,还有NM_CONTROLLED是关闭的(即不使用NetworkManager服务),至于其他条目的含义可以到网上去查。
[ye@localhost network-scripts]$ brctl show
bridge name bridge id STP enabled interfaces
xenbr0 8000.5065f3263345 no eth0
[ye@localhost network-scripts]$ ifconfig
eth0 Link encap:Ethernet HWaddr 50:65:F3:26:33:45
inet6 addr: fe80::5265:f3ff:fe26:3345/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:200981 errors:0 dropped:265 overruns:0 frame:0
TX packets:40238 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:100789203 (96.1 MiB) TX bytes:4686965 (4.4 MiB)
Interrupt:20 Memory:f7d00000-f7d20000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:1034 errors:0 dropped:0 overruns:0 frame:0
TX packets:1034 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:100664 (98.3 KiB) TX bytes:100664 (98.3 KiB)
xenbr0 Link encap:Ethernet HWaddr 50:65:F3:26:33:45
inet addr:172.20.110.28 Bcast:172.20.110.255 Mask:255.255.255.0
inet6 addr: 2001:250:3c02:74a:5265:f3ff:fe26:3345/64 Scope:Global
inet6 addr: fe80::5265:f3ff:fe26:3345/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:169867 errors:0 dropped:19 overruns:0 frame:0
TX packets:40095 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:94878168 (90.4 MiB) TX bytes:4470263 (4.2 MiB)
安装dom U后,输入brctl show可以看到dom U的虚拟机网卡(vif1.0)已经挂到xenbr0下面:
[root@bogon Raccoon]# brctl show
bridge name bridge id STP enabled interfaces
xenbr0 8000.f80f41bdedc2 no eth0
vif1.0
在启动的domU系统里自行更改eth0的配置,配置文件/etc/sysconfig/network-scripts/ifcfg-eth0,因为我们实验室是使用DHCP的自动分配方式来分配IP地址,如下是我的配置:
[root@bogon network-scripts]# cat ifcfg-eth0
DEVICE="eth0"
BOOTPROTO=dhcp
HWADDR="00:16:3E:32:D5:76"
#iBROADCAST=192.168.1.255
#IPADDR=192.168.1.110
#NETMASK=255.255.255.0
#GATEWAY=192.168.1.1
#DNS=8.8.8.8
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="983f2f11-93e1-488c-ad6b-b35ec330290e"
实验结果可以与dom 0相互ping通而且可以访问外网:
[root@bogon network-scripts]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:16:3E:32:D5:76
inet addr:172.20.110.129 Bcast:172.20.110.255 Mask:255.255.255.0
inet6 addr: 2001:250:3c02:74a:216:3eff:fe32:d576/64 Scope:Global
inet6 addr: fe80::216:3eff:fe32:d576/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:205472 errors:0 dropped:0 overruns:0 frame:0
TX packets:344 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:33705212 (32.1 MiB) TX bytes:19014 (18.5 KiB)
Interrupt:247
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:197 errors:0 dropped:0 overruns:0 frame:0
TX packets:197 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:21789 (21.2 KiB) TX bytes:21789 (21.2 KiB)
[1]. http://blog.csdn.net/jinguangliu/article/details/19993411
[2]. https://wiki.centos.org/zh/HowTos/Xen/Xen4QuickStart/Xen4Networking6