Xen安装成功以后,需要对网络进行配置,这里介绍的是使用桥接方式进行网络配置。Ubuntu14配置网桥跟CentOS6稍微有些不同,如果想对CentOS配置网桥请看
这里。
Bridge(桥)是 Linux 上用来做 TCP/IP 二层协议交换的设备,与现实世界中的交换机功能相似。Bridge 设备实例可以和 Linux 上其他网络设备实例连接,既 attach 一个从设备,类似于在现实世界中的交换机和一个用户终端之间连接一根网线。当有数据到达时,Bridge 会根据报文中的 MAC 信息进行广播、转发、丢弃处理。
首先是要关闭NetworkManager服务(因为我安装的是Ubuntu的Server版没有默认安装NetworkManager):
$ sudo stop network-manager
$ echo "manual" | sudo tee /etc/init/network-manager.override
安装网桥的相关工具:
$ sudo apt-get install bridge-utils
寻找主网络设备:
ip route show | grep 'default' | awk '{print $5}'
我这里是 p1p1,但一般来说都是eth0。
在interfaces配置文件中添加网桥设备:
$ sudo vi /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto p1p1
iface p1p1 inet dhcp
# This is an autoconfigured IPv6 interface
iface p1p1 inet6 auto
auto xenbr0
iface xenbr0 inet dhcp
bridge_ports p1p1
bridge_stp off
bridge_fd 0
注意:因为我实验室的电脑使用的是DHCP自动分配方式来分配IP地址,如果是其他方式可能需要指定IP地址。
但在机房是固定IP模式,所以下面是固定IP的配置:
root@ccrfox141:/home/test# cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
auto em1
iface em1 inet manual
#address 172.16.0.141
#gateway 172.16.0.254
#netmask 255.255.0.0
auto xenbr0
iface xenbr0 inet static
address 172.16.0.141
gateway 172.16.0.254
netmask 255.255.0.0
bridge_ports em1
bridge_stp off
bridge_fd 0
bridge_maxwait 0
dns-nameservers 172.20.1.4
因为em1是xenbr0的逻辑网卡,所以不需要IP地址了。
机房的网络还需要配置路由:
root@ccrfox141:/home/test# cat /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.135 dev xenbr0
exit 0
重启网络:
$ sudo ifdown p1p1 && sudo ifup xenbr0 && sudo ifup p1p1
查看实际生效的配置:
root@ye:/home/ye# brctl show
bridge name bridge id STP enabled interfaces
xenbr0 8000.f80f41bdedc2 no p1p1
root@ye:/home/ye# ifconfig
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:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
p1p1 Link encap:Ethernet HWaddr f8:0f:41:bd:ed:c2
inet addr:172.20.110.188 Bcast:172.20.110.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1248355 errors:0 dropped:590 overruns:0 frame:0
TX packets:18452 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:157794084 (157.7 MB) TX bytes:2012746 (2.0 MB)
xenbr0 Link encap:Ethernet HWaddr f8:0f:41:bd:ed:c2
inet addr:172.20.110.143 Bcast:172.20.110.255 Mask:255.255.255.0
inet6 addr: 2001:250:3c02:74a:fa0f:41ff:febd:edc2/64 Scope:Global
inet6 addr: 2001:250:3c02:74a:adbe:811d:7d7e:6c30/64 Scope:Global
inet6 addr: fe80::fa0f:41ff:febd:edc2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:232873 errors:0 dropped:0 overruns:0 frame:0
TX packets:681 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:44652660 (44.6 MB) TX bytes:59121 (59.1 KB)
为了性能和安全方面的原因,推荐iptables不对bridge的数据进行处理:
$ sudo vi /etc/sysctl.conf
添加下面几行:
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
$ sudo sysctl -p /etc/sysctl.conf