linux作單臂路由實現trunk 使vlan之間通訊

若是要使vlan之間進行通訊,咱們一般會使用三層交換機或者路由器子接口模式來作。Linux上關於VLANCisco交換機中繼鏈接,也是能夠實現其互相之間的通訊的。

環境:RHEL 5.2 最小化安裝,物理網卡eth1,做爲VLAN交換機鏈接的Trunk口鏈接到2960GigabitEthernet0/1。而另一張物理網卡eth0做爲上行口,鏈接其餘網絡。
      Cisco 2960
,啓用VLANVLAN的網段規劃入下:
       VLAN 1
fa0/1 - fa0/6 192.168.1.0/24
       VLAN 2
fa0/7 - fa0/12 192.168.2.0/24
       VLAN 3
fa0/13 - fa0/18 192.168.3.0/24
       VLAN 4
fa0/19 - fa0/24 192.168.4.0/24
因爲2960支持的802.1q trunk協議對於本徵vlan 1 的數據流是不會增長vlan標記的,以及交換機的配置過程,具體能夠見本站點其餘關於交換機配置介紹
能夠用 Show interfaces trunk命令查看本徵vlan 規劃:對於本徵vlan咱們不增長子接口,直接在物理網卡eth1上綁定IP便可,其餘vlan都使用vconfig建立子接口便可。

.首先要確認Linux系統內核是否已經支持VLAN功能:
當前使用內核以及操做系統版本:
[root@happyboy ~]# # lsmod |grep 8021q        //
查看系統內核是否支持802.1q協議
8021q                 18633  0 
[root@happyboy ~]# lspci        //
確認網卡驅動是否已經正常加載

通常來講RH9之後的Linux發行版本,諸如RHEL4RHEL5CentOS4CentOS5都已經默認支持了VLAN的功能。
  
.物理網卡、子網卡、虛擬VLAN網卡的關係:
1.
物理網卡:物理網卡這裏指的是服務器上實際的網絡接口設備,這裏我服務器上雙網卡,在系統中看到的2個物理網卡分別對應是eth0eth1這兩個網絡接口。

2.
子網卡:子網卡在這裏並非實際上的網絡接口設備,可是能夠做爲網絡接口在系統中出現,如eth0:1eth1:2這種網絡接口。它們必需要依賴於物理網卡,雖然能夠與物理網卡的網絡接口同時在系統中存在並使用不一樣的IP地址,並且也擁有它們本身的網絡接口配置文件。可是當所依賴的物理網卡不啓用時(Down狀態)這些子網卡也將一同不能工做。

3.
虛擬VLAN網卡:這些虛擬VLAN網卡也不是實際上的網絡接口設備,也能夠做爲網絡接口在系統中出現,可是與子網卡不一樣的是,他們沒有本身的配置文件。他們只是經過將物理網加入不一樣的VLAN而生成的VLAN虛擬網卡。若是將一個物理網卡添加到多個VLAN當中去的話,就會有多個VLAN虛擬網卡出現,他們的信息以及相關的VLAN信息都是保存在/proc/net/vlan/config這個臨時文件中的,而沒有獨自的配置文件。它們的網絡接口名是eth0.1eth1.2這種名字。
注意:當須要啓用VLAN虛擬網卡工做的時候,關聯的物理網卡網絡接口上必須沒有IP地址的配置信息,而且,這些主物理網卡的子網卡也必須不能被啓用和必須不能有IP地址配置信息。這個在網上看到的結論根據個人實際測試結果來看是不許確的,物理網卡自己能夠綁定IP,而且給本徵vlan提供通訊網關的功能,但必須是在802.1q下。

.規劃網絡:
1.VLAN
的劃分:
Cisco
交換機2960上交換機配置不在贅述。
RHEL 5.2
默認內核支持VLAN,而且默認只支持802.1q的中繼封裝。咱們須要對鏈接Cisco交換機2960的中繼接口的eth1進行配置,在上面已經說明,對於vlan1本徵vlan直接用物理eth1便可。另外,因爲網絡當中要使用3VLAN,所以,中繼網卡eth1也必需要添加虛擬網卡以及IP地址。規劃以下:
       eth1
192.168.1.1/24
       eth1.2
192.168.2.1/24
       eth1.3
192.168.3.1/24
       eth1.4
192.168.4.1/24       

2.Linux
網關轉發部分:
VLAN
功能網卡eth1上除其自己外,將被劃分紅3VLAN虛擬網卡,經過中繼網卡eth1Cisco交換機2950VLAN中繼端口鏈接,另一個物理網卡eth0做爲上行網絡接口。而Linux服務器將在eth1eth0之間作流量轉發,這樣VLANVLAN之間也實現了數據流的轉發,若是不但願VLAN之間轉發的話,能夠經過iptables來進行設定,這裏就再也不展開iptables了。

.Linux配置VLAN Trunk
因爲在Linuxeth1要被設定爲TrunkCisco交換機2960中繼鏈接,所以,網絡中有幾個VLAN的話,那麼中繼網卡上也必需要加入多個VLAN才能支持到(本徵vlan不須要添加,屬於本徵vlan的端口設置IP同該物理網卡網段,並將網關指向eth1便可,關於eth0eth1的配置,能夠直接編輯配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0ifcfg-eth1,或用setup來配置等文本圖形工具配置)
1.
eth1添加到VLAN 2中:
[root@happyboy net]# vconfig add eth1 2
WARNING:  Could not open /proc/net/vlan/config.  Maybe youneed to load the 8021q module, or maybe you are not using PROCFS??
Added VLAN with VID == 2 to IF -:eth1:-
第一次添加VLAN虛擬網卡的時候就必定會出現上面的那句提示,緣由是由於默認下/proc/net/vlan/config這個專門用來保存VLAN信息的文件是沒有的。因爲第一次添加VLAN網卡,那麼這個文件也會被自動創建起來。另外,在/proc/目錄下面的文件都是系統的臨時文件,所以從新啓動後一定丟失休息,因此在配置並測試VLAN成功後,能夠將一些相關命令添加到rc.local這個啓動腳本當中去了。在執行該命令以前能夠先到/proc/net/目錄查看下,並不存在vlan文件夾,執行後會建立一個vlan文件夾,並生成config配置文件,以及對應的虛擬vlan網卡配置文件eth1.2
後面的一句
Added VLAN with VID == 2 to IF -:eth1:-
這裏表示已經將eth1網卡添加到了VLAN 2中,而且它在VLAN中的虛擬網卡是eth1.2
2.
一樣將eth1添加到VLAN 34中:
[root@happyboy ~]# vconfig add eth1 3
Added VLAN with VID == 3 to IF -:eth1:-
[root@happyboy ~]# vconfig add eth1 4
Added VLAN with VID == 4 to IF -:eth1:-

4.
檢查添加的VLAN虛擬網卡信息:
[root@happyboy ~]# cat /proc/net/vlan/config 
--------------------------------------------------
VLAN Dev name    | VLAN ID
Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
eth1.2         | 2  |     eth1
eth1.3         | 3  |     eth1
eth1.4         | 4  |     eth1
虛擬網卡       VLANID  歸屬的主網卡
--------------------------------------------------
能夠看到全部的VLAN虛擬網卡以及它們所歸屬的主物理網卡。

.VLAN虛擬網卡設定IP地址而且進行啓用:
[root@happyboy ~]# ifconfig eth1.2 192.168.2.1 up
[root@happyboy ~]# ifconfig eth1.3 192.168.3.1 up
[root@happyboy ~]# ifconfig eth1.4 192.168.4.1 up

.確認Linux系統下的全部網絡接口配置:
1.
從新啓動網絡服務
[root@happyboy ~]# service network restart
--------------------------------------------------
Shutting down interface eth0:                          [  OK  ]
Shutting down interface eth1:                          [  OK  ]
Shutting down loopback interface:                      [  OK  ]
Bringing up loopback interface:                        [  OK  ]
Bringing up interface eth0:                            [  OK  ]
Bringing up interface eth1:                            [  OK  ]
--------------------------------------------------

2.
檢查Linux系統下的全部網絡接口信息:
[root@happyboy ~]# ifconfig |more
到這裏已經基本上將VLAN的主要配置完成了。

.簡單測試:
測試從各個vlan 之間的連通性,能夠直接在屬於各個vlan的交換機端口上鍊接一臺PC,設置其屬於對應網段IP,並將網關指向到對應vlan虛擬網卡的IP,會發現與網關之間的通訊正常,可是vlan之間沒法通訊,那時由於linux默認不會轉發數據,具體介紹能夠參考
http://www.happyboy.net.cn/article.asp?id=19
,
直接修改ip_forward值爲1便可使vlan之間正常通訊

後續能夠:配置iptables進行NAT各個網絡接口間轉發;配置iptables來限制指定VLAN之間的轉發以實現安全性以及優化處理。
在上面說過,這些配置信息是寫到系統臨時文件的,系統重啓將會致使配置丟失,咱們能夠在/etc/rc.local中增長如下語句便可
vconfig add eth1 2
vconfig add eth1 3
vconfig add eth1 4
ifconfig eth1.2 192.168.2.1 up
ifconfig eth1.3 192.168.3.1 up
ifconfig eth1.4 192.168.4.1 up
echo '1' > /proc/sys/net/ipv4/ip_forward

Vconfig
命令的簡要說明:
vconfig - VLAN 802.1q
配置程序。
說明
       Vconfig
程序可以創建VLAN虛擬網卡而且與遠程的VLAN設備對接,可是前提是內核首先必須支持VLAN功能。VLAN虛擬網卡是以太網卡上虛擬出來的、爲了可以在一個物理網絡上支持VLAN虛擬網絡的虛擬網卡。
選項
add  
物理網卡  VLAN-ID
在指定的物理網卡上虛擬出指定VLAN號的VLAN虛擬網卡。VLAN虛擬網卡名將記錄在/proc/net/vlan/config文件中。
rem VLAN
虛擬網卡
刪除指定的VLAN虛擬網卡,若是不清楚VLAN虛擬網卡名的話能夠到/proc/net/vlan/config文件中查看VLAN虛擬網卡名。

相關文件
       /proc/net/vlan/config
       /proc/net/vlan/VLAN
虛擬網卡
http://www.kernelchina.org/?q=node/49#comment-446
http://www.kernelchina.org/?q=node/49


本文來自ChinaUnix博客,若是查看原文請點:http://blog.chinaunix.net/u3/94024/showart_2160641.htmlhtml

相關文章
相關標籤/搜索