转: Linux下单网卡多vlan多虚拟机

#启动xen服务:
xend start
#列出虚拟机
xm list
#start
xm create -c 虚拟机名
#进入虚拟机
xm console 虚拟机名
#退出虚拟机
ctrl]
#关闭
xm shutdown

linux bridge实现了ieee 802.1d协议,这个实现,不能支持VLAN的功能。也就是说,这个实现,只能承载一个广播域,而不能承载多个广播域。当然,可以创建多个bridge device,每个bridge都对应不同的vlan,在bridge内部,包通过fdb表来转发,但是这个fdb表里面并没有vlan的信息。如果要在多个bridge device之间通信,比必须在bridge device上创建vlan interface,然后配置路由,这样可以实现不同bridge之间的转发。
linux vlan实现了ieee 802.1q协议。802.1q本来应该是一个二层协议,但是linux的实现需要创建vlan interface,而且可以在vlan interface上配置ip地址。所以,这个interface可以放到路由表里面。一般来说,在这个interface上收到的包,会带这个interface配置的vlan id,而从这个interface发出去的包,会打上这个interface的vlan id。

一、新建两个bridge和网卡子接口

1、 两个网桥命名为Xenbr2,xenbr3。

2、 两个网卡接口eth1.10 跑vlan10,桥接到xenbr3;eth1.40 跑vlan 40桥接到xenbr2。

3、 可以使用命令brctl addbr bridgename 增加bridge ,brctl addif bridgename devicename 将网卡加入网桥;也可以新建配置文件。推荐使用配置文件。文件位置和内容如下:

[root@localhost network-scripts]# cat /etc/sysconfig/network-scripts/ifcfg-xenbr2

DEVICE=xenbr2

BOOTPROTO=static

ONBOOT=yes

TYPE=Bridge

[root@localhost network-scripts]# cat /etc/sysconfig/network-scripts/ifcfg-xenbr3

DEVICE=xenbr3

BOOTPROTO=static

ONBOOT=yes

TYPE=Bridge

[root@localhost network-scripts]# cat /etc/sysconfig/network-scripts/ifcfg-eth1.40

DEVICE=eth1.40

BOOTPROTO=none

ONBOOT=yes

TYPE=Ethernet

VLAN=yes

BRIDGE=xenbr2

[root@localhost network-scripts]# cat /etc/sysconfig/network-scripts/ifcfg-eth1.10

DEVICE=eth1.10

BOOTPROTO=none

ONBOOT=yes

TYPE=Ethernet

VLAN=yes

BRIDGE=xenbr3

PS:将网卡子接口加入网桥后就变成了网桥的一个端口,网桥是一个二层设备,所以网卡子接口配置了IP也无效。可以在网桥接口上配置IP供管理使用。

二、启动网桥

Ifup xenbr2

Ifup xenbr2

Ifup eth1.10

Ifup eth1.40

PS:网桥和网卡子接口启动有先后顺序之先,要先启动网桥,再启动网卡子接口。因为网卡了加入到网桥中去呀~

三、为虚拟机新增网卡

[root@xen-centos ~]# virsh

virsh # attach-interface centos bridge xenbr2

这个命令就能为centos这个虚拟机添加了一块网卡桥接到xenbr2上。

删除网卡的命令,不加MAC默认删除第一块网卡。

virsh # detach-interface centos bridge --mac 00:16:3E:24:B5:3B

Ps:重启不会丢失网卡,关机重新加载配置文件后会丢失网卡,下面提供修改配置文件的操作方法。

修改Xen虚拟机的配置文件

配置文件在/etc/xen 下,配置文件中对应的项是vif

1、 虚拟机只使用一块网卡

[root@localhost xen]# cat /etc/xen/centos

name = "centos"

uuid = "eb2f58c6-cd95-8109-f29e-5df80df8c476"

maxmem = 256

memory = 256

vcpus = 1

bootloader = "/usr/bin/pygrub"

on_poweroff = "destroy"

on_reboot = "restart"

on_crash = "restart"

disk = [ "tap:aio:/virtual/centos/centos5.5.img,xvda,w" ]

vif = [ "mac=00:16:36:2b:3f:a1,bridge=xenbr3,script=vif-bridge"]

2、 虚拟机使用两块网卡

[root@localhost xen]# cat /etc/xen/centos

name = "centos"

uuid = "eb2f58c6-cd95-8109-f29e-5df80df8c476"

maxmem = 256

memory = 256

vcpus = 1

bootloader = "/usr/bin/pygrub"

on_poweroff = "destroy"

on_reboot = "restart"

on_crash = "restart"

disk = [ "tap:aio:/virtual/centos/centos5.5.img,xvda,w" ]

vif = [ "mac=00:16:36:2b:3f:a1,bridge=xenbr3,script=vif-bridge","mac=00:16:36:2b:3f:a2,bridge=xenbr2,script=vif-bridge"]

四、最后一步

将交换机的端口模式改成trnuk

小结:以此类推的话,添加多个VLAN就新建网卡子接口跑不用的VLAN。要是有多块网卡的,也可以分别桥接到不同的网桥。组网很灵活。也可以将物理网卡使用bonding技术后再桥接,这个技术不错,哈哈~

网桥有如下特点:
(1) 在混杂模式下工作。
(2) 有一个将全局唯一地址映射到网桥端口的地址表。
(3) 根据所接收帧的目的地址作出转发决定。
(4) 根据所接收帧的源地址建立和更新地址表。
(5) 当遇到未知的目的地址时,向每个端口(除接收此帧的端口外)转发该帧

 

使得我们机房的网络正式支持多vlan,目前是8个vlan.

   IP地址分布在9个网段:192.168.0.*-192.168.8.*

   第一机房: vlan8
   第二机房:vlan2
   第三机房:vlan3,vlan4,vlan5,vlan6,vlan7.


   主要是使用了vconfig工具。

   ip addres add 0.0.0.0 dev eth2

  
使 eth2 支持 3个机房的7个vlan: vlan2-vlan8
   vconfig add eth2   2
   vconfig
add eth2   3
   vconfig add eth3   4
   vconfig add eth2   5
  
vconfig add eth2   6
   vconfig add eth2   7
   vconfig add eth2   8


   eth0 走路由器,通外网
  
   eth1 连默认的vlan1,连内网的其它服务器以及网管工作站。


   物理网卡eth2被掰成了7个虚拟网卡: eth2.2,eth2.3,eth2.4,eth2.5,eth2.6,eth2.7,eth2.8.


分别给这7个虚拟网卡设置ip地址。

ifconfig eth0.100 100.100.100.100 netmask 255.255.255.0 up

ifconfig eth0.100 100.101.100.101 netmask 255.255.255.0 up

最后,再给7个vlan设置静态路由:

ip
route add 192.168.2.0/24 dev   eth2.2
ip route add 192.168.3.0/24 dev  
eth2.3
ip route add 192.168.4.0/24 dev   eth2.4
ip route add
192.168.5.0/24 dev   eth2.5
ip route add 192.168.6.0/24 dev   eth2.6
ip
route add 192.168.7.0/24 dev   eth2.7
ip route add 192.168.8.0/24 dev  
eth2.8

Linux 关于VLAN与Cisco交换机中继连接:http://www.net527.com/caozuoxitong/Linux/1119.htmlhttp://www.net527.com/caozuoxitong/Linux/1119.html
linux 单网卡与8大vlan通信 http://hi.baidu.com/zouhaoo/blog/item/3a85402acb061021d42af18d.html
Linux 设置 多ip,多vlan  http://kb.cnblogs.com/a/2205770/

转载于:https://www.cnblogs.com/itfriend/archive/2012/05/30/2526660.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/494978.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谈谈 Android 有多成功!欧盟这么罚它

选自 | Stratechery 作者 | Ben Thompson 编译 | 网易智能 参与 | 乐邦西方知名科技博主本汤普森(Ben Thompson)近日发布题为“欧盟VS Android”的文章,称谷歌固然有其违法的地方,但欧盟剥夺谷歌从其冒着高风险斥资数十亿美元开发…

VSS 错误链接

VSS服务器没有开(或者链接不上、共享断开等情况),vs工程打开会提示你找不到VSS数据库,不小心点错了位置,结果VS链接不上VSS了,老是提示如下错误:VSS出项错误"Could not find the Visual So…

算法的五大特性

输入(Input) 算法可以有0个或多个输入,用来说明对象的初始值,其中的0的输入的意思是指算法自己已经定出了初始条件 输出(Output) 算法中必须有1或多个输出,因为输出是用来说明数据处理后的结果…

《纽约时报》评中国技术热潮:追捧“上菜机器人”等无意义的新奇产品

来源:纽约时报编译:全球技术地图上海的机器人魔力餐厅里的非人类服务员只能做到这一步。在食客们拍完照片和视频后,常规的服务员会上前进行服务。上海——能读人想法的耳机什么都没读出来。检测火灾的机器人已被宣布为安全隐患。机器人服务员…

运算符的优先级(Operator Precedence)总结(表)

概念 在一个表达式中可能包含多个有不同运算符连接起来的、具有不同数据类型的数据对象;由于表达式有多种运算,不同的结合顺序可能得出不同结果甚至出现错误运算错误,因为当表达式中含多种运算时,必须按一定顺序进行结合&#xff…

队列 VS 堆栈

队列,又称为伫列(英文queue),是先进先出(FIFO, First-In-First-Out)的线性表。在具体应用中通常用链表或者数组来实现。队列只允许在后端(称为rear)进行插入操作,在前端&…

10家最具创新性的机器学习公司

来源:资本实验室摘要:机器学习是实现人工智能的一种方法,通过使用算法来解析数据、从中学习,然后对现实世界中的事件做出预测和判断。机器学习已经在各个行业得到广泛应用。近日《Analytics Insight》杂志评选出10家最具创新性的机…

静态数据成员与非静态数据成员

静态数据成员 用static来声明静态成员,它是类的一部分,有该类中的所有对象共同使用和维护,实现类中数据的共享(静态区),要受private控制符影响。 非静态数据成员 类的每个实例都有一份拷贝(动态区)。 从内…

【译】微型ORM:PetaPoco

PetaPoco是一款适用于.Net 和Mono的微小、快速、单文件的微型ORM。 PetaPoco有以下特色: 微小,没有依赖项……单个的C#文件可以方便的添加到任何项目中。工作于严格的没有装饰的Poco类,和几乎全部加了特性的Poco类Insert/Delete/Update/Save …

李飞飞公布谷歌云TPU、AutoML、行业方案等多项进展,AI云计算成谷歌全新增长点...

来源:全球人工智能摘要:7 月 24 日-26 日,Google Cloud NEXT 18 大会在美国旧金山举行。7 月 24 日-26 日,Google Cloud NEXT 18 大会在美国旧金山举行,Google Cloud作为谷歌人工智能未来业务发展的基础性平台&#xf…

new/delete和malloc/free的区别

malloc/free和new/delete的区别 共同点 都是从堆上申请空间,并且需要用户手动释放。 不同点 1、malloc/free是函数,new/delete是操作符。 2、malloc需要用户区手动计算空间的大小,new直接再后面跟上空间的类型就好。 3、malloc返回的是…

this的用法添加样式给tr或者div

onmouseover与onmouseout事件处理器,分别对应为鼠标移上去和鼠标移开时触发。οnmοuseοver"this.classNamemenu_title2;" 是鼠标移到该单元格上去时应用的css样式为“.menu_title2”的样式 οnmοuseοut"this.classNamemenu_title;"是鼠标离…

C语言中生成可执行程序的过程

预处理:展开头文件/进行宏替换/去掉注释/条件编译 编译:检查语法是否有错误,生成汇编代码 汇编:将汇编代码转换可供机器识别的机器码 链接:将多个文件链接到一起生成可执行程序

Gartner:2018年十大科技趋势与其对IT和执行的影响

来源:云技术实践摘要:Gartner每年发布的十大战略科技趋势一直备受关注,但企业往往会将50%以上的预算花在基础设施和执行上。因此,了解十大科技趋势与其对IT和执行的影响十分必要。在本周的Gartner CIO峰会期间,Gartner…

C++读取INI文件

Windows操作系统专门为此提供了6个API函数来对配置设置文件进行读、写:GetPrivateProfileInt() 从私有初始化文件获取整型数值GetPrivateProfileString() 从私有初始化文件获取字符串型值GetProfileInt 从win.ini 获取整数值GetProfileString 从win.ini 获取字符串值…

专栏 | 李航教授展望自然语言对话领域:现状与未来

来源:机器之心摘要:原华为诺亚方舟实验室主任、现已加入字节跳动 AI Lab的李航教授近日发表博客,对自然语言对话领域的现状和最新进展进行总结,并展望了未来的走向。1. 引言语音助手、智能客服、智能音箱、聊天机器人,…

浅析智能指针

为什么要有智能指针? 1.什么是智能指针? 智能指针是一个类,这个类的构造函数中传入一个普通指针,析构函数中释放传入的指针。智能指针的类都是栈上的对象,所以当函数(或程序)结束时会自动被释放…

论强化学习的根本缺陷

来源:AI 科技评论摘要:本文来自斯坦福大学博士生 Andrey Kurenkov 在 The Gradient 上发表的文章。在本文中,我们将讨论人工智能的一个核心领域——强化学习——的局限性。在这个过程中,起初我们将通过一个有趣的例子提出我们要讨…

c语言常用输出格式

在C语言中常用的是靠printf(" 输出的格式",输出的内容); 来进行输出,所以要掌握一些关于输出的格式,下面将用代码的形式来简单说明: char c;char s[20]; int i1234;float f1.234567894567879; double d0.123…

辗转相除法--最大公约数/最大公倍数

什么是辗转相除法? 辗转相除法, 又名欧几里德算法(Euclidean algorithm),是求最大公约数的一种方法。最早出现在公元前300年古希腊著名数学家欧几里得的《几何原本》》(第VII卷,命题i和ii)中。而在中国则可以追溯至东汉…