IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

设置 XEN 的多网卡(3网卡4网卡..)桥接

扶凯 2010-11-01 20:05:19 累计浏览 3,572 次
本机暂存

我有种机器,有 4 个网卡,想在上面整 4 个虚拟机。所以让不同的虚拟机,使用不同的网卡。这样来做桥接设备。方便使用。记录一下方法,如下。

1.安装 xen 虚拟化

最开始当然得使用软件源来安装虚拟化。用 163 的吧,速度不错。 

以下是引用片段:
perl -i -pe ’s/mirror.centos.org/mirrors.163.com/g;s/^#baseurl/baseurl/g;s/mirrorlist/#mirrorlist/g’ /etc/yum.repos.d/CentOS-Base.repo
yum -y groupinstall Virtualization
 
我们计划的设置如下
eth0 - xenbr0 - Dom0, DomN
eth1 - xenbr1 - DomX+1
eth2 - xenbr2 - DomX+2
eth3 - xenbr3 - DomX+3

4个网卡,分别桥接,然后让三个虚拟机分别接到三个机器上

2. 修改 xend 的配置文件,让它支持多个网卡,不使用默认的脚本

在 /etc/xen/xend-config.sxp 文件中的 (network-script network-bridge) 修改成 (network-script php-oa-network-multi-bridge).这样启用我们自己的脚本来生成桥接的设备

以下是引用片段:
perl -i -pe ’s/\(network-script network-bridge\)/#\(network-script network-bridge\)\n\(network-script php-oa-network-multi-bridge\)/g’ /etc/xen/xend-config.sxp

3. 写自己自定的脚本 ,来生成自己所需要的网卡数量和绑定的位置,如上面的计划中 
 

以下是引用片段:
perl -le ’for $num (0 .. 3){print "/etc/xen/scripts/network-bridge \"\$@\" vifnum=$num netdev=eth$num bridge=xenbr$num" }’ > /etc/xen/scripts/php-oa-network-multi-bridge
chmod u+x /etc/xen/scripts/php-oa-network-multi-bridge
这样会生成一个 /etc/xen/scripts/php-oa-network-multi-bridge 内包含如下的内容。$@ 是用来接收 shell 命令中的 start,stop,status 的命令的。记的要加执行的权限,可一定不能忘记.
以下是引用片段:
/etc/xen/scripts/network-bridge "$@" vifnum=0 netdev=eth0 bridge=xenbr0
/etc/xen/scripts/network-bridge "$@" vifnum=1 netdev=eth1 bridge=xenbr1
/etc/xen/scripts/network-bridge "$@" vifnum=2 netdev=eth2 bridge=xenbr2
/etc/xen/scripts/network-bridge "$@" vifnum=3 netdev=eth3 bridge=xenbr3

4.配置物理网卡,让开机就能启动

好了,在使用上面的脚本成前面,我们需要保证这几个网卡配置是能正常启动的。
所以我们要修改二个地方 ,ONBOOT=yes 和 BOOTPROTO=static 这二个,网卡才能正常的启动. 

以下是引用片段:
perl -i -pe "s/ONBOOT=no/ONBOOT=yes/g;s/BOOTPROTO=dhcp/BOOTPROTO=static/g" /etc/sysconfig/network-scripts/ifcfg-eth{1,2,3}

5. 测试桥接 

下面的命令就不用解释了,还可以用 ifconfig 检查 

以下是引用片段:
/etc/xen/scripts/ChinaCache-network-multi-bridge start
/etc/xen/scripts/ChinaCache-network-multi-bridge status
/etc/xen/scripts/ChinaCache-network-multi-bridge stop

6. 安装第一个虚拟机

下面的命令是用来安装第一个虚拟机的,其它的虚拟机直接 copy 出来就行。然后只要修改其它机器的配置文件就行了。

以下是引用片段:
/usr/sbin/virt-install -p --paravirt --name=node1 -s 5 --ram=8192 --vcpus=2 --file=/xen/node1 --location=nfs:123.125.162.7:/mnt --extra-args="ip=123.125.162.45 netmask=255.255.255.192 gateway=123.125.162.1 dns=202.106.0.20" --network bridge=xenbr0 noipv6
 
以上参数中
-extra-args 这个是传送给启动时的内核用的。
-network 是设置网络的连接方法,还有桥接到那个设备
-s 生成的文件大小 G 为单位
-ram 内存设置
-file 系统文件存放的位置

7. 设置自动启动

当主系统启动时,虚拟机启动,自己有几个 虚拟机设置几个

以下是引用片段:
virsh autostart node1

8. 其它虚拟机的安装

其它的虚拟机安装比较容易,直接 copy 上面的 /xen/node1 这个操作系统的文件叫别的名字,另外新建几个其它机器的配置文件

以下是引用片段:
cp /etc/xen/node1 /etc/xen/node{1,2,3}
并修改其中几个参数
以下是引用片段:
name = "node1"
disk = [ "tap:aio:/xen/node1,xvda,w" ]
vif = [ "mac=00:16:36:7b:c9:e3,bridge=xenbr0,script=vif-bridge" ]
如上几个参数 ,disk 指向其它的参数。vif 是指本机的 MAC 地址,xenbr0 - xenbr3 是可以桥接的设备
如果要新加硬盘,可以使用下面的语法,来加入物理硬盘
以下是引用片段:
disk = [ "tap:aio:/xen/node1,xvda,w",
"phy:/dev/sdb,ioemu:sdb,w",
"phy:/dev/sdc,ioemu:sdc,w",
]

以下经验参考: http://www.cnblogs.com/yangyh/archive/2010/07/16/1778516.html

xenbr0 是会连接vif0.0,vifN.0 (N 表示 xm list 中的 id 号,表示第几个 id 的虚拟主机)
peth0 可以将peth0看作etho的别名
vif0.0表示dom0接口,vif1.0表示dom ID=1的接口(重启或新建几个domain,ID更改后你会发现vif1.0变成vif2.0..3.0了)

如果在xenbr0中删除vif0.0,则在domain中无法ping通本机,但能ping通通过eth0连接的机器,比如本机连接的路由器
如果在xenbr0中删除vif1.0,则在domain中就没有网卡了(相应的vif1.1表示ID为1的DOMAIN的第二块网卡)
如果在xenbr0中删除peth0,则能ping能本机,而无法ping通路由器或局域网其它机器

同分类推荐文章

  1. 从零重建 macOS 开发机:可复现的环境初始化流程 (2026-06-14 20:36:00)
  2. 百度物理网络监控工具开源第二弹:毫秒级监控工具 baize,让你的网络问题无处遁形 (2026-06-11 08:10:28)
  3. How to Set Up Homebrew Tap for Private CLI Tools: A Complete Guide (2026-05-27 02:13:03)

查看更多 DevOps 文章 →

建议继续学习

  1. 记录一个软中断问题 (累计阅读 16,955)
  2. 如何成为OpenStack工程师 (累计阅读 15,959)
  3. Windows下使用VMware安装Android (累计阅读 5,631)
  4. 云计算的技术架构与实现分析 (累计阅读 4,241)
  5. Amazon AWS云计算服务简介 (累计阅读 3,812)
  6. 云计算概览 (累计阅读 3,456)
  7. xen虚拟化之hvm类型虚拟机安装使用 (累计阅读 3,136)
  8. xen虚拟机的迁移类型 (累计阅读 2,791)
  9. 分布式对象存储系统Sheepdog性能测试 (累计阅读 2,642)
  10. xm list 输出信息说明 (累计阅读 2,112)