歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 單端口 實現Xen 虛擬機多VLAN

單端口 實現Xen 虛擬機多VLAN

日期:2017/2/28 15:52:49   编辑:Linux教程

實驗環境: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) 當遇到未知的目的地址時,向每個端口(除接收此幀的端口外)轉發該幀。

Copyright © Linux教程網 All Rights Reserved