双网卡机器的Xen配置

廖雪峰 / 编程 / ... / Reads: 2182

为Xen创建虚拟LAN一文里,配置了一个真实网卡和一个虚拟网卡作为内网的网关,通常服务器都有双网卡,如果有双线机房+双线IP,则需要充分利用双线IP。每个domU依然只分配内网IP,但是,dom0拥有3个接口:

  • eth0:第一个物理网卡;
  • eth1:第二个物理网卡;
  • dummy0:虚拟网卡。

首先在/etc/network/interfaces配置文件里为lo以及eth0和eth1配置好公网IP。

当xend接管物理网卡后,将为每个网卡创建虚拟的网桥,对应的名称分别为:

  • eth0 -> peth0 -> xenbr0;
  • eth1 -> peth1 -> xenbr1;
  • dummy0 -> pdummy0 -> xenbr2。

顺序由/etc/network/interfaces里的配置顺序确定,一般是eth0,eth1,dummy0。

因此,把自定义脚本/etc/xen/scripts/my_network_script稍作修改:

#!/bin/sh
dir=$(dirname "$0")
"$dir/network-bridge" "$@" vifnum=0 netdev=eth0 bridge=xenbr0
"$dir/network-bridge" "$@" vifnum=1 netdev=eth1 bridge=xenbr1
"$dir/network-bridge" "$@" vifnum=2 netdev=dummy0 bridge=xenbr2

domU的配置,例如/etc/xen/my-domU-1.cfg,需要将网关指向xenbr2,因为xenbr2是指向dom0的pdummy0:

vif = [ 'ip=172.16.16.60,bridge=xenbr2,mac=00:16:3E:F4:E7:0B' ]

需要添加NAT规则到iptables:

iptables -t nat -A POSTROUTING -j MASQUERADE

将某些domU的服务映射到外网需要两条命令:

iptables -t nat -A PREROUTING -i xenbr0 -p tcp --dport 80 -j DNAT --to 172.16.16.70:8080
iptables -t nat -A PREROUTING -i xenbr1 -p tcp --dport 80 -j DNAT --to 172.16.16.70:8080

当domU主动访问外网时,用的是哪一个公网IP呢?通过route命令查看可知,默认网关为eth1的网关,也就是走第二块网卡。这是因为Linux在配置eth0和eth1时,默认网关总是使用最后一个配置的网卡,如果双IP速度差异较大,把速度快的配置到eth1,这样domU访问外网的速度就快。

Comments

Make a comment

Author: 廖雪峰

Publish at: ...

关于作者

关注公众号不定期领红包:

关注微博获取实时动态: