热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

XEN虚拟机设置多个网卡桥接

我有种机器,有4个网卡,想在上面整4个虚拟机。所以让不同的虚拟机,使用不同的网卡。这样来做桥接设备。方便使用。记录一下方法,如下。1.安装xen虚拟化最开始当然得使用软件源来安装虚拟化。用163的吧,速度不错。perl-i-pes/mirror.centos.org

我有种机器,有 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. 设置自动启动

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

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通路由器或局域网其它机器

来源地址: http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5/html/Virtual...

Process to setup multiple Red Hat Virtualization bridges:

Configure another network interface using either the system-config-network application. Alternatively, create a new configuration file named ifcfg-ethX in the /etc/sysconfig/network-scripts/ directory where X is any number not already in use. Below is an example configuration file for a second network interface called eth1

      $ cat /etc/sysconfig/network-scripts/ifcfg-eth1
      DEVICE=eth1
      BOOTPROTO=static
      OnBOOT=yes
      USERCTL=no
      IPV6INIT=no
      PEERDNS=yes
      TYPE=Ethernet
      NETMASK=255.255.255.0
      IPADDR=10.1.1.1
      GATEWAY=10.1.1.254
      ARP=yes

Copy the file, /etc/xen/scripts/network-bridge, to /etc/xen/scripts/network-bridge.xen.

Comment out any existing network scripts in /etc/xen/xend-config.sxp and add the line network-xen-multi-bridge.

Create a custom script to create multiple Red Hat Virtualization network bridges. A sample scripts is below, this example script will create two Red Hat Virtualization bridges (xenbr0 and xenbr1) one will be attached to eth1 and the other one to eth0. If you want to create additional bridges just follow the example in the script and copy/paste the lines accordingly:

      #!/bin/sh
      # network-xen-multi-bridge
      # Exit if anything goes wrong.
      set -e
      # First arg is the operation.
      OP=$1
      shift
script=/etc/xen/scripts/network-bridge.xen
      case ${OP} in
      start)
      $script start vifnum=1 bridge=xenbr1 netdev=eth1
      $script start vifnum=0 bridge=xenbr0 netdev=eth0
      ;;
      stop)
      $script stop vifnum=1 bridge=xenbr1 netdev=eth1
      $script stop vifnum=0 bridge=xenbr0 netdev=eth0
      ;;
      status)
      $script status vifnum=1 bridge=xenbr1 netdev=eth1
      $script status vifnum=0 bridge=xenbr0 netdev=eth0
      ;;
      *)
      echo 'Unknown command: ' ${OP}
      echo 'Valid commands are: start, stop, status'
      exit 1
      esac

我理解其中第3步就是将xend-config.sxp配置文件中的(network-script network-bridge)替换为(network-script network-xen-multi-bridge),假定将第4步创建的脚本命名为network-xen-multi-bridge。
我在修改配置时,没有写前面的network-script,在重新启动后一个虚拟网桥都没有找到,因为服务器正在使用中,不能频繁重新启动,所以尝试手工执行/etc/xen/scripts/network-xen-multi-bridge start,然后二个虚拟网桥都可以正常工作了。

根据网上的资料总是存在这样或者那样的问题,自己摸索后,贴出自己的经验和大家分享。

        安装好kvm后,连不上网,折腾了好久,客户机能上网了,主机又上不了。重新配置后,主机在没有启动kvm前能上网,在启动kvm后,客户机能上网,主机又上不了网。郁闷啊。不过现在,主宿机器都能同时联网。但是还存在一点问题。

环境:系统ubuntu10.10  虚拟机kvm + qemu 。主机ip为192.168.1.46,虚拟机中系统(我这用xp)的ip为192.168.1.66

具体步骤不说了,网上太多。贴下我 文件配置,还有一些心得。

首先机器能上网,即已经配置过/etc/network/interfaces文件,ip为192.168.1.46 netmask 255.255.255.0 gateway 192.168.1.254

为了使kvm桥接 网络,将该文件改为

auto lo
iface lo inet loopback
#auto eth0
#iface eth0 inet manual

auto br0
iface br0 inet static
bridge_ports eth0 tap0
address 192.168.1.46
netmask 255.255.255.0
gateway 192.168.1.254
bridge_stp off
bridge_maxwait 0
bridge_fd 0

auto tap0
iface tap0 inet manual
up ifconfig $IFACE 0.0.0.0 up
down ifconfig $IFACE down

启动kvm:

lxz@lxz-pc:~$ sudo qemu-system-x86_64 ./kvm/winxp.img -m 512 -net nic,macaddr=00:11:22:33:44:55 -net tap,ifname=tap0,script=no

启动后,将启动的虚拟机中的xp配置下ip,子网掩码,网关(xp里的ip要和192.168.1.46在一个网段,我配置的为192.168.1.66),这样,主宿机都能上网了。

利用ifconfig命令可以看到:

多了一个br0,和tap0 。而且eth0的ip没有了。在没有启动kvm之前eth0是有ip 的,ip为192.168.1.46。但是现在br0的ip成为了192.168.1.46

至此,主宿机器都能上网,看来kvm桥接的问题貌似得到解决。这个问题解决,新的问题又出现了。

如果在你关掉虚拟机和主机后,重启主机再上网的时候,发现主机已经不能上网,用ipconfig命令查看,eth0和br0的ip都为192.168.1.46。 

查看路由表:

目标                   网关              子网掩码        标志    跃点     引用   使用 接口
192.168.1.0      *                255.255.255.0      U       0     0        0 br0
192.168.1.0      *                255.255.255.0      U       1      0        0 eth0
link-local           *                255.255.0.0         U       1000        0        0 br0
default         192.168.1.254   0.0.0.0             UG      0             0        0 eth0

default         192.168.1.254   0.0.0.0            UG      100         0        0 br0

发现对于同一个目标网络,有两个下一跳,显然不行,于是用如下命令清除eth0的ip,问题得到解决,主宿机又能同时上网了。

lxz@lxz-pc:~$ sudo ifconfig eth0 0.0.0.0    

清除eth0的ip信息后,路由表变为:

目标            网关            子网掩码        标志  跃点    引用   使用 接口

192.168.1.0     *               255.255.255.0   U        0         0        0 br0
link-local          *               255.255.0.0       U     1000      0        0 br0

default     192.168.1.254      0.0.0.0         UG    100       0        0 br0

再用ifconfig命令查看,eth0的ip没有了,而br0的ip还为192.168.1.46。

看来,要想主宿机同时上网,eth0是不能有ip的。

到这里,问题得到解决,不过还没找到在没有启动kvm虚拟机的时候不启动br0的方法,有待进一步研究。知道的朋友可以留言谢谢


推荐阅读
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • 本文介绍了在Ubuntu下制作deb安装包及离线安装包的方法,通过备份/var/cache/apt/archives文件夹中的安装包,并建立包列表及依赖信息文件,添加本地源,更新源列表,可以在没有网络的情况下更新系统。同时提供了命令示例和资源下载链接。 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • 本文介绍了在Web应用系统中,数据库性能是导致系统性能瓶颈最主要的原因之一,尤其是在大规模系统中,数据库集群已经成为必备的配置之一。文章详细介绍了主从数据库架构的好处和实验环境的搭建方法,包括主数据库的配置文件修改和设置需要同步的数据库等内容。MySQL的主从复制功能在国内外大型网站架构体系中被广泛采用,本文总结了作者在实际的Web项目中的实践经验。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • IT方面的论坛太多了,有综合,有专业,有行业,在各个论坛里混了几年,体会颇深,以前是论坛哪里人多 ... [详细]
  • REVERT权限切换的操作步骤和注意事项
    本文介绍了在SQL Server中进行REVERT权限切换的操作步骤和注意事项。首先登录到SQL Server,其中包括一个具有很小权限的普通用户和一个系统管理员角色中的成员。然后通过添加Windows登录到SQL Server,并将其添加到AdventureWorks数据库中的用户列表中。最后通过REVERT命令切换权限。在操作过程中需要注意的是,确保登录名和数据库名的正确性,并遵循安全措施,以防止权限泄露和数据损坏。 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • 本文详细介绍了在Centos7上部署安装zabbix5.0的步骤和注意事项,包括准备工作、获取所需的yum源、关闭防火墙和SELINUX等。提供了一步一步的操作指南,帮助读者顺利完成安装过程。 ... [详细]
author-avatar
流浪汉中的小男人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有