繼上一篇《Xen安裝windows和linux虛擬機》 ,在實際工作還會遇到各種需求,本文檔將解決:一個物理埠下,Xen的虛擬機不同網卡屬於不同VLAN.
實驗環境:CentOs 5.5 兩個VLAN 10、40
先介紹兩個知識點:
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) 當遇到未知的目的地址時,向每個埠(除接收此幀的埠外)轉發該幀.
本文出自 「祝建躍-專註、專業」 博客,請務必保留此出處http://zhujy.blog.51cto.com/478869/490306
[火星人 ] 單埠 實現Xen 虛擬機多VLAN已經有775次圍觀