分类: LINUX
2011-05-30 02:10:59
Xen网络
* 桥接网络
* 路由网络
* 包含NAT 的虚拟局域网
桥接网络
Time for Action—Using Bridged Networking
1、xen里面缺省 的网络设置 是桥接,这可以通过查看Xen 在配置文件(/etc/xen/xend-config.sxp)来进一步确认,它应该有非注释 的下面两行。
(network-script network-bridge)
(vif-script vif-bridge)
2、为domU创建一个新 的配置文件,你可以使用 在之前章节创建 的任何一个镜像或你自己拥有 的其他镜像。 根 据你选择 的镜像替换文件中 的配置:
kernel = %26quot;/boot/vmlinuz-2.6.16.38-xenU%26quot;
memory = 32
name = %26quot;bridged_domU%26quot;
disk = ['tap:aio:/root/xen-images/ttylinux_domU.img,hda,w']
vif = [ 'bridge=xenbr0' ]
root = %26quot;/dev/hda1 ro%26quot;
3、用xm启动domU
xm create /root/xenimages/ttylinux_domU.cfg –c
4、检查以确定domU已启动并正常运行
xm list
下面 是启动Xen服务和xend时发生 的事件队列:
1、执行/etc/xen/scripts/network-bridge脚本
2、这将创建一个叫xenbr0 的新网桥
3、从物理网卡eth0复制MAC和IP地址
4、停止物理网卡eth0
5、创建一对新 的已连接 的虚拟网络接口--veth0和vif0.0
6、将之前复制 的 MAC和IP地址指派到veth0
7、重命名物理网卡eth0为peth0
8、重命名虚拟网卡veth0为eth0
9、连接peth0和vif0.0到xenbr0
10、启动网桥xenbr0和网卡peth0、eth0、vif0.0
使用brctl show 命令可以查看连接到各个 网桥上 的网络接口情况
路由网络
Time for Action—Using Routed Networking
1、因为我们需要修改xend 的配置文件,所以我们首先要停止xend
service xend stop
2、修改xen配置文件/etc/xen/xend-config.sxp使我们能够使用路由网络。 注 释关联桥接网络 的两行并取消注释关联路由网络 的两行。 如 果 在配置文件中没发现配置路由网络 的行,那么加上他们:
(network-script network-route)
(vif-script vif-route)
3、重新启动xend让它用新 的配置起动
xend start
4、修改我们之前使用 的 domU 的配置文件使它能使用路由网络
kernel = %26quot;/boot/vmlinuz-2.6.16.38-xenU%26quot;
memory = 32
name = %26quot;routed_domU%26quot;
disk = ['tap:aio:/root/xen-images/ttylinux_domU.img,hda,w']
vif = [ 'ip=192.168.1.165' ]
root = %26quot;/dev/hda1 ro%26quot;
5、起动domU
xm create /root/xen-images/ttylinux_domU.cfg -c
6、检查domU已经起动并正常运行
xm list
下面 是 xend用路由网络配置起动 的事件队列
1、允许dom0进行IP转发
2、当domU起动 的时候,xen从eth0复制IP地址到虚拟网络接口vif.0。 虚 拟接口 的 ID 是自动分配给xen起动 的每个客户域 的 。 被 分配 的 id 在单个会话里面永远不会被重用,因此如果你停止并重启一个域,它将重新分配到一个新 的 ID。
3、启动虚拟接口vif.0。
4、为domU 的配置文件中指向虚拟接口vif.0分配 的 IP地址增加静态路由
Virtual Local Network with Network Address Translation
Time for Action—Using VLAN with NAT
我们将 在 192.168.2.0上创建一个虚拟网络并且此网络保护一个web服务器和一个数据库,所有 在此网络 的虚拟机 的 IP地址都将 在此范围内。 我 们将 在此网络创建两个虚拟机并从一个公网IP地址去访问他们。 端 口将被dom0转发到各个虚拟机上。
1、第一个网络接口被dom0使用了,我们需要创建一个新 的网络接口用于我们 的 VLAN。 这 个接口使用dummy网络去掉创建并命名为dummy0。 创 建一个新 的名为/etc/sysconfig/network-scripts/ifcfg-dummy0 的文件:
A DEVICE=dummy0
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
IPV6INIT=no
PEERDNS=yes
TYPE=Ethernet
NETMASK=255.255.255.0
IPADDR=x.x.x.x
ARP=yes
2、分配一个IP地址到这个接口并把它加到网络接口文件-/etc/network/interfaces:
auto dummy0
iface dummy0 inet static
address 192.168.2.1
netmask 255.255.255.0
3、修改xend配置(/etc/xen/xend-config.sxp)增加下面 的行,使我们 在新 的 dummy网络接口dummy0上监听桥接:
(network-script 'network-bridge netdev=dummy0')
4、确定IP转发被允许
echo %26quot;1%26quot; %26gt; /proc/sys/net/ipv4/ip_forward
5、重启sysctl使修改被live kernel获取
/sbin/sysctl -p
6、 在我们 的 VLAN上创建第一个虚拟机。 修 改它 的配置文件使它看起来像下面这样:
# assume this is the webserver vm
kernel = %26quot;/boot/vmlinuz-2.6.16.38-xenU%26quot;
memory = 32
name = %26quot;vlan_domU_1%26quot;
disk = ['tap:aio:/root/xen-images/ttylinux_domU.img,hda,w']
vif = [ 'ip=192.168.2.2' ]
root = %26quot;/dev/hda1 ro%26quot;
gateway=%26quot;192.168.2.1%26quot;
7、 在我们 的 VLAN上创建第二个虚拟机,修改他 的配置文件使它看起来像下面这样:
# assume this is the mysql vm
kernel = %26quot;/boot/vmlinuz-2.6.16.38-xenU%26quot;
memory = 32
name = %26quot;vlan_domU_2%26quot;
disk = ['tap:aio:/root/xen-images/ttylinux_domU.img,hda,w']
vif = [ 'ip=192.168.2.3' ]
root = %26quot;/dev/hda1 ro%26quot;
gateway=%26quot;192.168.2.1%26quot;
8、通知dom0必须为特定 的端口转发请求到这个VLAN。 为 此我们需要首先 在 dom0允许NAT:
iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -j MASQUERADE
9、现 在我们可以配置规则转发端口到正确 的虚拟机,首先我们转发80端口:
iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 80 -j DNAT --to 192.168.2.2:80
10、然后转发mysql 的端口3306:
iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 80 -j DNAT --to 192.168.2.3:3306
重启xend然后创建虚拟机,现 在我们已经有一个简单 的网络配置使dom0转发基于端口 的请求到VLAN里面 的一个客户域。