歡迎您光臨本站 註冊首頁

單埠 實現Xen 虛擬機多VLAN

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0

繼上一篇《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 將網卡加入網橋;也可以新建配置文件.推薦使用配置文件.文件位置和內容如下:

[[email protected] network-scripts]# cat /etc/sysconfig/network-scripts/ifcfg-xenbr2

DEVICE=xenbr2

BOOTPROTO=static

ONBOOT=yes

TYPE=Bridge

[[email protected] network-scripts]# cat /etc/sysconfig/network-scripts/ifcfg-xenbr3

DEVICE=xenbr3

BOOTPROTO=static

ONBOOT=yes

TYPE=Bridge

[[email protected] network-scripts]# cat /etc/sysconfig/network-scripts/ifcfg-eth1.40

DEVICE=eth1.40

BOOTPROTO=none

ONBOOT=yes

TYPE=Ethernet

VLAN=yes

BRIDGE=xenbr2

[[email protected] 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:網橋和網卡子介面啟動有先後順序之先,要先啟動網橋,再啟動網卡子介面.網卡了加入到網橋中去呀~

三、為虛擬機新增網卡

[[email protected] ~]# 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、 虛擬機只使用一塊網卡

[[email protected] 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、 虛擬機使用兩塊網卡

[[email protected] 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已經有675次圍觀

http://coctec.com/docs/linux/show-post-49371.html