王文龍
(喀什大學 計算機科學與技術學院,新疆 喀什 844008)
隨著網絡的不斷延伸和擴展,根據用途、工作組、應用等來邏輯劃分,與站點所在的物理位置無關,可以從邏輯上隔離或劃分廣播域的、具有很強的靈活性的虛擬局域網(virtual local area network,VLAN),在實際的網絡工程中得到了非常廣泛的應用。在很多的文獻中對VLAN的作用、劃分、通信、配置等已有較為詳細的分析[1-16],然而對于VLAN與物理網段的關系、VLAN間的通信等問題的分析尚不夠深入、全面。為更深入、全面的理解VLAN,掌握VLAN的配置和使用,本文在仿真環境下,進行網絡拓撲設計和抓包分析,對VLAN與物理網段的關系、VLAN間通信進行深入、全面的分析研究,以期加深對VLAN技術的理解和掌握,并在網絡工程實踐中更好的配置使用VLAN。
在學習和使用VLAN時,常會混淆通過IP地址劃分的物理網段和邏輯上劃分的VLAN之間的關系,認為VLAN與物理網段沒有什么關系,是另外一種劃分網段的方法,甚至認為劃分到同一個VLAN的站點就屬于同一個網段,就可以直接通信,與站點是不是屬于同一個物理網段無關,理由是邏輯上屬于同一個網段,而同一個網段是可以通信的。
下面通過兩個例子對物理網段和VLAN的關系進行詳細分析,以便對VLAN的本質有更清晰的認識。
在Cisco Packet Tracer下,按圖1進行配置,由于PC1和PC2在物理上屬于同一個網段,則PC1可以ping通PC2。此時對S1的端口進行VLAN配置,f0/1配置為VLAN10,f0/2配置為VLAN20,以f0/1端口為例,配置如下:
S1(config)#vlan 10
S1(config)#vlan 20
S1(config)#interface f0/1
S1(config-if)#switchport mode access
S1(config-if)#switchport access vlan 10

圖1 同一物理網段劃分不同VLAN拓撲圖
此時再由PC1 ping PC2已無法ping通,抓包發現PC1無法組裝封裝ICMP包的幀,而僅僅是發送了ARP廣播幀到S1后就結束了。這是由于PC1和PC2在物理上屬于同一個網段,則PC1可以向本網段發送ARP廣播幀,詢問PC2的MAC地址,該幀可以發送到S1的f0/1端口,但由于S1的f0/1和f0/2端口配置為不同的VLAN,則S1無法將該ARP廣播幀通過f0/2端口轉發到PC2,則PC1無法獲得PC2的MAC地址,也就無法組裝幀。此時通過劃分VLAN達到了將同一物理網段從邏輯上隔離的目的,也即對物理網段從邏輯上進行了子網劃分。
考慮圖2的情況,由于PC1和PC2在物理上不屬于同一個網段,則PC1無法ping通PC2。此時對S1的端口進行VLAN配置,為更好的進行分析,將f0/1和f0/2均配置為VLAN10。此時由PC1 ping PC2,盡管PC1和PC2屬于同一個VLAN,仍然無法ping通。抓包發現PC1既無法生成封裝ICMP包的幀,也未生成ARP廣播幀。這是因為PC1和PC2在物理上不屬于同一個網段,則PC1需要知道網關的IP地址和MAC地址,而本例中無三層設備,也即沒有網關,則PC1無法獲得網關的地址,則無法生成幀。

圖2 不同物理網段劃分同一VLAN拓撲圖
通過上面的分析不難看出,對同一個物理網段進行VLAN的劃分,其本質是將物理網段從邏輯上劃分虛擬子網,通過虛擬子網達到邏輯上的子網隔離。而所謂的VLAN的隔離作用,必須是在同一個物理網段中劃分不同VLAN才有的,而在不同物理網段中劃分不同VLAN而達到的所謂隔離作用,其實是不同物理網段本身的隔離作用,與劃不劃分VLAN無關。而如圖2,將不同物理網段中的站點劃分到同一個VLAN,站點間是無法通信的,這種劃分也沒有任何意義,這說明,劃分到同一個VLAN中的站點必須在物理上是屬于同一個網段的。
在實際使用VLAN的隔離作用時,也常需要VLAN間能夠互相通信,而通過上面對VLAN本質的分析可以知道,有意義的VLAN劃分有兩種情況,一種是在同一物理網段上劃分不同VLAN;一種是在不同物理網段上劃分不同VLAN。
為更好的理解VLAN間的通信,需了解交換機在配置VLAN時的端口工作模式。端口的模式有3種:access(不打VLAN標簽),trunk(必須打VLAN標簽),dynamic(可以在access和trunk模式間選擇)。有關端口工作模式和VLAN標簽的詳細內容請參考相關文獻。
下面通過設計網絡拓撲,對如何完成不同VLAN間的通信進行詳細分析。
要完成在同一物理網段劃分的VLAN間的通信,可以考慮使用二層交換機或者三層設備(三層交換機和路由器)。
若考慮使用三層設備,存在兩個問題,一是三層設備需要配置VLAN的IP地址,也即網關,由于VLAN是在同一物理網段上劃分的,則在同一物理網段下劃分的不同VLAN的網關是相同的,無法把同一個IP地址分配給不同的VLAN作為網關;二是路由器通常要求不同端口或子端口連接的是不同的物理網段,而同一個物理網段是無法連接到路由器不同端口或子端口的。這兩個問題是使用三層交換機和路由器無法解決的,因此要完成在同一物理網段劃分的VLAN間的通信,則必須使用二層交換機。
在Cisco Packet Tracer下,按圖3進行配置,PC1和PC2在物理上屬于同一個網段,S1的f0/1配置為VLAN10,f0/2配置為VLAN10,S2的f0/1配置為VLAN20,f0/2配置為VLAN20,端口工作模式均配置為access。以S1為例,配置如下:
S1(config)#vlan 10
S1(config)#interface f0/1
S1(config-if)#switchport mode access
S1(config-if)#switchport access vlan 10
S1(config)#interface f0/2
S1(config-if)#switchport mode access
S1(config-if)#switchport access vlan 10
此時由PC1 ping PC2,可以ping通,從而實現了VLAN10與VLAN20間的通信。抓包發現PC1、S1、 S2、PC2在組裝封裝ICMP包的幀時,均未在幀中打

圖3 同一物理網段不同VLAN間通信拓撲圖
VLAN標簽。這是因為access模式的端口無需打VLAN標簽,但從另一方面看,所有的幀均不打VLAN標簽,就好像沒有劃分VLAN,而PC1和PC2在物理上是屬于同一個網段,因此PC1是可以ping通PC2的。
若將S1的f0/2端口和S2的f0/2端口均配置為dynamic模式,以S1為例,配置如下:
S1(config)#interface f0/2
S1(config-if)#switchport mode dynamic auto
此時由PC1 ping PC2,可以ping通,也實現了VLAN10與VLAN20間的通信。查看S1的f0/2端口和S2的f0/2端口的工作模式,發現均為access,也即兩個端口在配置為dynamic模式時,實際上都選擇了access模式。
若將S1的f0/2端口和S2的f0/2端口均配置為trunk模式,以S1為例,配置如下:
S1(config)#interface f0/2
S1(config-if)#switchport mode trunk
此時由PC1 ping PC2,無法ping通,VLAN10與VLAN20間無法進行通信。抓包發現PC1封裝ICMP包的幀發送到S1,由于S1的f0/1端口工作模式為access,故該幀未打VLAN10的標簽(見圖4)。隨后S1將幀發送到S2,由于S1的f0/2端口工作模式為trunk,故該幀打上了VLAN10的標簽(見圖5,VLAN標簽:TPID:0X810,表示使用IEEE802.1Q協議;TCI:0Xa,表示VLAN號10)。而S2接收到幀后停止了發送,這是因為S1發來的幀打上了VLAN10的標簽,而S2的f0/1端口已配置為VLAN20,S2不能把VLAN10的幀發送到VLAN20的端口f0/1。

圖4未打VLAN標簽的Eehernet II幀

圖5打VLAN標簽的Ethernet 802.1q幀
從上看出,S1和S2連接的端口若配置為access或dynamic(選擇access)工作模式,則由于在幀中不打VLAN標簽,實際上就如同沒有劃分VLAN,只要PC1和PC2在同一個物理網段,就可以實現二者間的通信。若端口配置為trunk工作,則由于在幀中必須打VLAN標簽,就算PC1和PC2在同一個物理網段,而由于屬于不同的VLAN,則二者之間無法進行通信。
在不同的物理網段劃分不同的VLAN,若要完成VLAN間的通信,必須使用三層設備才可以完成。根據使用三層設備的單個端口還是多個端口完成VLAN間的通信,可以分為兩類,一類是單臂路由,另一類是多端口路由。
2.2.1單臂路由
使用開啟路由功能的三層交換機和路由器的單端口均可以完成不同物理網段下不同VLAN間的通信。下面通過設計網絡拓撲,對這兩種情況完成VLAN間的通信進行詳細分析。
(1) 使用三層交換機。在Cisco Packet Tracer下,按圖6進行配置,S1的f0/1配置為VLAN10,f0/2配置為VLAN10,工作模式為access,f0/24工作模式為trunk,S2的f0/1工作模式為trunk,封裝802.1q協議,并開啟路由,VLAN10的IP為192.168.1.254,VLAN20的IP為192.168.2.254,PC1的網關為192.168.1.254,PC2的網關為192.168.2.254。

圖6 三層交換機單臂路由拓撲圖
具體配置如下:
S2(config)#vlan 10
S2(config)#vlan 20
S2(config)#interface vlan 10
S2(config-if)#ip address 192.168.1.254 255.255.255.0
S2(config)#interface vlan 20
S2(config-if)#ip address 192.168.2.254 255.255.255.0
S2(config)#interface f0/1
S2(config-if)#switchport mode trunk
S2(config-if)#switchport trunk encapsulation dot1q
S2(config)#ip routing
S1(config)#vlan 10
S1(config)#vlan 20
S1(config)#interface f0/1
S1(config-if)#switchport mode access
S1(config-if)#switchport access vlan 10
S1(config)#interface f0/2
S1(config-if)#switchport mode access
S1(config-if)#switchport access vlan 20
此時由PC1 ping PC2,可以ping通,從而完成了VLAN10和VLAN20間的通信。抓包發現PC1發出的ICMP包依次到達S1、S2、S1、PC2,其中PC1發到S1和S1發到PC2的幀未打VLAN標簽,S1發到S2的幀打了VLAN10的標簽,S2發到S1的幀打了VLAN20的標簽;而PC2的響應ICMP包依次到達S1、S2、S1、PC1,其中PC2發到S1和S1發到PC1的幀未打VLAN標簽,S1發到S2的幀打了VLAN20的標簽,S2發到S1的幀打了VLAN10的標簽。
(2) 使用路由器。在Cisco Packet Tracer下,按圖7進行配置,S1的f0/1配置為VLAN10,f0/2配置為VLAN10,工作模式為access,f0/24工作模式為trunk,R1的f0/0端口劃分f0/0.1和f0/0.2兩個子端口,f0/0.1子端口封裝802.1q協議,并允許VLAN10通過,f0/0.2子端口封裝802.1q協議,并允許VLAN20通過,VLAN10的IP為192.168.1.254,VLAN20的IP為192.168.2.254,PC1的網關為192.168.1.254,PC2的網關為192.168.2.254。

圖7 路由器單臂路由拓撲圖
具體配置如下:
S1(config)#vlan 10
S1(config)#vlan 20
S1(config)#interface f0/1
S1(config-if)#switchport mode access
S1(config-if)#switchport access vlan 10
S1(config)#interface f0/2
S1(config-if)#switchport mode access
S1(config-if)#switchport access vlan 20
S1(config)#interface f0/24
S1(config-if)#switchport mode trunk
R1(config)#interface f0/0.1
R1(config-subif)#encapsulation dot1Q 10
R1(config-subif)#ip address 192.168.1.254 255.255.255.0
R1(config)#interface f0/0.2
R1(config-subif)#encapsulation dot1q 20
R1(config-subif)#ip address 192.168.2.254 255.255.255.0
查看R1的路由表:
R1#show ip route
C 192.168.1.0/24 is directly connected, FastEthernet0/0.1
C 192.168.2.0/24 is directly connected, FastEthernet0/0.2
此時R1的子端口直連路由已建立,再由PC1 ping PC2,可以ping通,從而完成了VLAN10和VLAN20間的通信。抓包情況與三層交換機單臂路由類似。
2.2.2多端口路由
使用開啟路由功能的三層交換機和路由器的多端口亦可以完成不同物理網段下不同VLAN間的通信。下面通過設計網絡拓撲,對這兩種情況完成VLAN間的通信進行詳細分析。
(1) 使用三層交換機。在Cisco Packet Tracer下,按圖8進行配置,S1的f0/1配置為VLAN10,S2的f0/1配置為VLAN20,工作模式均為access,S1和S2的f0/24工作模式均為trunk,S3的f0/1、f0/2工作模式為trunk,封裝802.1q協議,并開啟路由,VLAN10的IP為192.168.1.254,VLAN20的IP為192.168.2.254,PC1的網關為192.168.1.254,PC2的網關為192.168.2.254。

圖8 交換機多端口路由拓撲圖
具體配置如下:
S1(config)#vlan 10
S1(config)#interface f0/1
S1(config-if)#switchport mode access
S1(config-if)#switchport access vlan 10
S1(config)#interface f0/24
S1(config-if)#switchport mode trunk
S2(config)#vlan 20
S2(config)#interface f0/1
S2(config-if)#switchport mode access
S2(config-if)#switchport access vlan 20
S2(config)#interface f0/24
S2(config-if)#switchport mode trunk
S3(config)#vlan 10
S3(config)#vlan 20
S3(config)#interface vlan 10
S3(config-if)#ip address 192.168.1.254 255.255.255.0
S3(config)#interface vlan 20
S3(config-if)#ip address 192.168.2.254 255.255.255.0
S3(config)#interface f0/1
S3(config-if)#switchport mode trunk
S3(config-if)#switchport trunk encapsulation dot1q
S3(config)#interface f0/2
S3(config-if)#switchport mode trunk
S3(config-if)#switchport trunk encapsulation dot1q
S3(config)#ip routing
此時由PC1 ping PC2,可以ping通,從而完成了VLAN10和VLAN20間的通信。抓包情況與單臂路由類似。
(2) 使用路由器。在Cisco Packet Tracer下,按圖9進行配置,S1的f0/1配置為VLAN10,S2的f0/1配置為VLAN20,工作模式均為access,S1和S2的f0/24工作模式為trunk,R1的f0/0.1子端口封裝802.1q協議,并允許VLAN10通過,R1的f0/1.1子端口封裝802.1q協議,并允許VLAN20通過,VLAN10的IP為192.168.1.254,VLAN20的IP為192.168.2.254,PC1的網關為192.168.1.254,PC2的網關為192.168.2.254。

圖9 路由器多端口路由拓撲圖
具體配置如下:
S1(config)#vlan 10
S1(config)#interface f0/1
S1(config-if)#switchport mode access
S1(config-if)#switchport access vlan 10
S1(config)#interface f0/24
S1(config-if)#switchport mode trunk
S2(config)#vlan 20
S2(config)#interface f0/1
S2(config-if)#switchport mode access
S2(config-if)#switchport access vlan 20
S2(config)#interface f0/24
S2(config-if)#switchport mode trunk
R1(config)#interface f0/0.1
R1(config-subif)#encapsulation dot1q 10
R1(config-subif)#ip address 192.168.1.254 255.255.255.0
R1(config)#interface f0/1.1
R1(config-subif)#encapsulation dot1q 20
R1(config-subif)#ip address 192.168.2.254 255.255.255.0
查看R1的路由表:
R1#show ip route
C 192.168.1.0/24 is directly connected, FastEthernet0/0.1
C 192.168.2.0/24 is directly connected, FastEthernet0/1.1
此時R1的子端口直連路由已建立,再由PC1 ping PC2,可以ping通,從而完成了VLAN10和VLAN20間的通信。抓包情況與單臂路由類似。
本文在Cisco Packet Tracer仿真環境下,通過設計簡單的網絡拓撲,并進行抓包分析,對VLAN與物理網段的關系、VLAN間通信進行深入、全面的分析研究,形成了明確的分析結論。這些分析結論既可以作為學習VLAN的參考,加深對VLAN技術的理解和掌握,也可以運用到網絡工程實踐中去,更好地配置和使用VLAN。
參考文獻(References):
[1]李丙春,王文龍,劉靜,等.路由與交換技術[M].北京:電子工業出版社,2016.
[2]陳潮,靳慧云,黃安安. VLAN間路由實驗在仿真器中的設計與實現[J]. 實驗技術與管理,2016(8):129-132.
[3]劉群,李堅. 組建局域網綜合實驗的設計[J]. 實驗室研究與探索,2016(7):96-101.
[4]廉佐政,王海珍. 大型局域網中VLAN間可靠通信實驗設計與實現[J]. 實驗室研究與探索,2015(12):119-124,147.
[5]廉佐政,王海珍. 大型局域網中VLAN間可靠通信的仿真設計[J]. 計算機仿真,2015(7):296-302.
[6]曹騰飛,孟永偉,黃建強,等. 西部高校計算機網絡實驗[J]. 實驗室研究與探索,2015(4):129-131,140.
[7]尹憶民,郝宇紅,孫浩志,等. 建設扁平化新型校園網絡[J]. 華東師范大學學報(自然科學版),2015(S1):146-151.
[8]林初建,張四海,王海英,等. 基于非對稱VLAN的端口隔離技術研究與應用[J]. 華東師范大學學報(自然科學版),2015(S1):232-239.
[9]李永,甘新玲,王海燕. 不同VLAN之間通信實驗設計與實現[J]. 實驗技術與管理,2014(4):106-108,130.
[10]楊姝. VLAN技術實驗的設計與仿真實現研究[J]. 實驗技術與管理,2014(3):114-117.
[11]張梁斌,高昆,梁世斌. 基于Packet Tracer的小型企業網絡應用架構的仿真實驗[J]. 實驗室研究與探索,2012(10):372-376.
[12]張力,程友清,殷磊. 一種改進的VLAN動態學習方案研究與實現[J]. 光通信研究,2012(1):29-31,45.
[13]馬素剛. VLAN技術的研究與仿真[J]. 制造業自動化,2011(22):78-80,99.
[14]陳建銳. 軟件仿真下的VLAN配置實驗探討[J]. 實驗室研究與探索,2011(2):78-81.
[15]唐燈平. 利用Packet Tracer模擬組建大型單核心網絡的研究[J]. 實驗室研究與探索,2011(1):186-189,198.
[16]薛琴. 基于Packet Tracer的計算機網絡仿真實驗教學[J]. 實驗室研究與探索,2010(2):57-59.