VLAN虛擬局域網知識筆記之(二)
VLAN端口類型和基礎配置
VLAN(Virtual Local Area Network)即虛擬局域網,是將一個物理的局域網在邏輯上划分成多個廣播域的技術。通過在交換機上配置VLAN,可以實現在同一個VLAN內的用戶可以進行二層互訪,而不同VLAN間的用戶被二層隔離。這樣既能夠隔離廣播域,又能夠提升網絡的安全性。
書接上一回,本節筆記主要介紹VLAN的端口類型以及配置方法,然后通過抓包查看現象。
PVID
PVID表示端口在缺省情況下所屬的VLAN(缺省情況下,華為系列的交換機每個端口的PVID都為1)。
PVID即Port VLAN ID,代表端口的缺省VLAN。
交換機從對端設備收到的幀有可能是Untagged的數據幀,但所有以太網幀在交換機中都是以Tagged的形式來被處理和轉發的,因此交換機必須給端口收到的Untagged數據幀添加上Tag。為了實現此目的,必須為交換機配置端口的缺省VLAN。當該端口收到Untagged數據幀時,交換機將給它加上該缺省VLAN的VLAN Tag。
以上圖中的主機A為例。主機A向外發送數據:
①一般情況下,主機A向外發送的數據幀是不帶有Tag的。
②交換機SWA接收到該數據幀時,發現其不帶有Tag。然后會根據接收到該數據幀的端口上配置的PVID,為該數據幀打上一個Tag,使其能夠在交換機之間傳輸數據。
Tips:缺省情況下,交換機每個端口的PVID都為1。若沒有配置VLAN,交換機會為沒有打上Tag(即Untagged)的數據幀打上這個缺省的VLAN Tag。
端口類型 -- Access
Access端口在收到數據后會添加VLAN Tag,VLAN ID和端口的PVID相同。
Access端口在轉發數據前會移除VLAN Tag。
如上圖所示,交換機的G0/0/1,G0/0/2,G0/0/3端口分別連接三台主機,都配置為Access端口。其中G0/0/1和G0/0/2的端口PVID為10(即VLAN 10),G0/0/3的端口PVID為20(即VLAN 20)。
(一)Access端口基本原理
Access端口是交換機上用來連接用戶主機的端口,它只能連接接入鏈路,並且只能允許唯一的VLAN ID通過本端口。
Access端口收發數據幀的規則如下:
①如果該端口接收對端設備發送的幀是untagged(不帶VLAN標簽),交換機將強制加上該端口的PVID。
②如果該端口接收對端設備發送的幀是tagged(帶VLAN標簽),交換機會檢查該標簽內的VLAN ID。當VLAN ID與該端口的PVID相同時,接收該報文。當VLAN ID與該端口的PVID不同時,丟棄該報文。
③Access端口發送數據幀時,總是先剝離幀的Tag,然后再發送。Access端口發往對端設備的以太網幀永遠是不帶標簽的幀。
(二)示例解釋
在本示例中,交換機的G0/0/1,G0/0/2,G0/0/3端口分別連接三台主機,都配置為Access端口。
主機A把數據幀(不帶VLAN標簽)發送到交換機的G0/0/1端口,再由交換機發往其他目的地。收到數據幀之后,交換機根據端口的PVID給數據幀打上VLAN標簽 10。
由於G0/0/2端口的PVID也是10,與VLAN標簽中的VLAN ID相同,於是決定從G0/0/2端口轉發數據幀。交換機移除VLAN標簽 10,把數據幀發送到主機B。
連接主機C的端口的PVID是20,與VLAN 10不屬於同一個VLAN,因此此端口不會接收到VLAN 10的數據幀。
(三)Access端口配置方法
Step 1:創建VLAN
在交換機上划分VLAN時,需要首先創建VLAN。
命令:vlan <vlan-id>
如本例所示,執行vlan 10命令后,就創建了VLAN 10,並進入了VLAN 10視圖。
VLAN ID的取值范圍是1到4094。
Tips:當需要創建多個VLAN時
可以在交換機上執行命令:vlan batch { vlan-id1 [ to vlan-id2 ] },以創建多個連續的VLAN。
如本例所示,執行命令后,創建了VLAN 10到VLAN 20連續10個VLAN。
也可以執行vlan batch { vlan-id1 vlan-id2 }命令,創建多個不連續的VLAN,VLAN號之間需要有空格。
如本例所示,執行命令后,創建了VLAN 10,20,30,40一共4個VLAN。
Step 2:對創建的VLAN進行配置驗證
創建VLAN后,可以執行display vlan命令驗證配置結果。如果不指定任何參數,則該命令將顯示所有VLAN的簡要信息。
缺省情況下,交換機所有端口都屬於VLAN 1中。
查看剛創建的VLAN
Tips:更多的查看VLAN命令
執行display vlan [ vlan-id [ verbose ] ]命令,可以查看指定VLAN的詳細信息,包括VLAN ID、類型、描述、VLAN的狀態、VLAN中的端口、以及VLAN中端口的模式等。
執行display vlan vlan-id statistics命令,可以查看指定VLAN中的流量統計信息。
執行display vlan summary命令,可以查看系統中所有VLAN的匯總信息。
Step 3:配置Access端口
使用命令:port link-type <type>
配置端口類型。其中type可以配置為Access,Trunk或Hybrid。
以下示例為將交換機SWA的G0/0/1,G0/0/2和G0/0/3的端口設置為
需要注意的是,如果查看端口配置時沒有發現端口類型信息,說明端口使用了默認的hybrid端口鏈路類型。當修改端口類型時,必須先恢復端口的默認VLAN配置,使端口屬於缺省的VLAN 1。
Tips:華為系列交換機默認的端口類型是hybrid。
端口類型Trunk和Hybrid將會在下面筆記中進行詳細的介紹。
Step 4:將端口添加到VLAN中
可以使用兩種方法把端口加入到VLAN。
第一種方法是進入到VLAN視圖,執行port <interface>命令,把端口加入VLAN。
以下示例為將交換機SWA的G0/0/1和G0/0/2端口加入到VLAN 10中。
第二種方法是進入到接口視圖,執行port default <vlan-id>命令,把端口加入VLAN。vlan-id是指端口要加入的VLAN。
以下示例為將交換機SWA的G0/0/3端口加入到VLAN 20中。
Step 5:對剛才的配置進行驗證
執行display vlan命令,可以確認端口是否已經加入到VLAN中。
在本示例中,端口G0/0/1和G0/0/2加入了VLAN 10,G0/0/3加入了VLAN 20。
其中UT表明該端口發送數據幀時,會剝離VLAN標簽,即此端口是一個Access端口或不帶標簽的Hybrid端口。U或D分別表示鏈路當前是Up狀態或Down狀態。
通過主機A分別訪問主機B和主機C,查看結果。(IP配置已省略)
主機A正常訪問主機B
主機A無法訪問主機C,因為他們處於不同的VLAN中,當交換機SWA知道兩台主機對應的端口PVID不一致時,SWA將不會把主機A發送的報文轉發給主機C。
端口類型 -- Trunk
當Trunk端口收到幀時,如果該幀不包含Tag,將打上端口的PVID;如果該幀包含Tag,則不改變。
當Trunk端口發送幀時,且該幀的VLAN ID在Trunk的允許發送列表中時:若與端口的PVID相同時,則剝離Tag發送;若與端口的PVID不同時,則直接發送。
如上圖所示,是從Access端口例子的基礎上增加了一台交換機B以及兩台主機(D和E),主機D屬於VLAN 10,主機E屬於VLAN 20。現需求VLAN 10的主機A和B可以訪問VLAN 10的主機D,同時VLAN 20的主機C可以訪問VLAN 20的主機E,那么我們要怎么配置交換機A和交換機B之間的鏈路和端口G0/0/4的端口類型呢?
可以配置為Access端口類型嗎?我們可以從上面的筆記知道,Access端口類型只能允許唯一的VLAN ID通過本端口。若交換機A和交換機B的G0/0/4端口均配置為PVID為10的Access端口,那么交換機A和B之間只能傳輸屬於VLAN 10的數據幀,而不能傳輸VLAN 20的數據幀。若反之配置了PVID為20的Access端口,那么也不能傳輸VLAN 10的數據幀。
所以這個時候,就可以用到Trunk端口了。
(一)Trunk端口基本原理
Trunk端口是交換機上用來和其他交換機連接的端口,它只能連接干道鏈路。Trunk端口允許多個VLAN的幀(帶Tag標記)通過。
Trunk端口收發數據幀的規則如下:
①當接收到對端設備發送的不帶Tag的數據幀時,會添加該端口的PVID,如果PVID在允許通過的VLAN ID列表中,則接收該報文,否則丟棄該報文。
②當接收到對端設備發送的帶Tag的數據幀時,檢查VLAN ID是否在允許通過的VLAN ID列表中。如果VLAN ID在接口允許通過的VLAN ID列表中,則接收該報文。否則丟棄該報文。
③端口發送數據幀時,當VLAN ID與端口的PVID相同,且是該端口允許通過的VLAN ID時,去掉Tag,發送該報文。當VLAN ID與端口的PVID不同,且是該端口允許通過的VLAN ID時,保持原有Tag,發送該報文。
(二)示例解釋
在本示例中,SWA和SWB連接主機的端口均為Access端口,並將SWA和SWB互連的端口配置為Trunk端口。在缺省情況下,端口的默認PVID都為1。配置Trunk鏈路允許VLAN 10和20的流量通過。
Step 1:當SWA從PVID為10的G0/0/1接收到VLAN 10的主機A的報文時,會為該報文打上VLAN ID為10的標簽。
Step 2:接着SWA在端口G0/0/4轉發該報文時,由於該報文的VLAN ID(為10)與此端口的PVID(缺省為1)不相同,且檢查VLAN ID在允許通過的VLAN ID列表中后,則會在轉發報文時不剝離VLAN標簽,然后直接轉發到Trunk鏈路上。
Ex:若端口G0/0/4的PVID為10,與VLAN ID(為10)相同,則會剝離VLAN標簽,然后發送到Trunk鏈路上。
Step 3:對端的SWB接收到帶有VLAN ID(為10)的報文,由於VLAN ID(為10)與此端口的PVID(缺省為1)不相同,且檢查VLAN ID在允許通過的VLAN ID列表中后,會保持原有的VLAN ID標簽,並轉發該報文。
Step 4:SWB向端口PVID為10的G0/0/1轉發報文,先剝離VLAN標簽,再轉發給主機D。由於SWB的G0/0/2的端口PVID為20,所以不會向這個端口轉發報文。
同理,VLAN 20的報文轉發過程大致相同,這里不再贅述。
(三)Trunk端口配置
SWB上的創建VLAN和Access端口配置省略,創建VLAN 10和VLAN 20,G0/0/1為VLAN 10的Access端口,G0/0/2為VLAN 20的Access端口。
Step 1:配置SWA和SWB的G0/0/4(干道鏈路的端口)為Trunk端口
配置Trunk時,應先使用
命令:port link-type trunk
修改端口的類型為Trunk。
配置Trunk端口允許哪些VLAN的數據幀通過。
命令:port trunk allow-pass vlan { { vlan-id1 [ to vlan-id2 ] } | all }
配置端口允許通過的VLAN,all表示允許所有VLAN的數據幀通過。
SWB的G0/0/4端口配置相同,故省略。
在本示例中,將SWA和SWB的G0/0/4端口配置為Trunk端口,該端口PVID默認為1。配置port trunk allow-pass vlan 10 20命令之后,該Trunk端口允許VLAN 10和VLAN 20的數據流量通過(不剝離VLAN Tag)。
此外,還可以通過命令修改Trunk端口的PVID
命令:port trunk pvid vlan vlan-id
修改Trunk端口的PVID。
Tips:修改Trunk端口的PVID之后,缺省VLAN不一定是端口允許通過的VLAN。
只有使用命令port trunk allow-pass vlan { { vlan-id1 [ to vlan-id2 ] } | all }允許缺省VLAN數據通過,才能轉發缺省VLAN的數據幀。交換機的所有端口默認允許VLAN1的數據通過。
Step 2:配置驗證
執行display vlan命令可以查看修改后的配置。TG表明該端口在轉發對應VLAN的數據幀時,不會剝離標簽,直接進行轉發。該端口可以是Trunk端口或帶標簽的Hybrid端口。
分別用主機A訪問主機D,主機C訪問主機E,訪問成功。
對SWA的G0/0/4端口進行抓包分析。
當使用VLAN 10的主機A訪問同為VLAN 10的主機D時,G0/0/4抓取到報文:
可以看到打上VLAN標簽(Tag)為10的報文。
同理,使用VLAN 20的主機C訪問VLAN 20的主機E時,G0/0/4也可以抓取到報文:
本示例中可以證明,SWA和SWB在G0/0/4轉發VLAN 10和VLAN 20的報文時,由於與PVID不相同,所以不剝離標簽,直接轉發。
Tips:附加的小問題
若使用VLAN 10的主機A訪問VLAN 20的主機E,抓取SWA的G0/0/4的數據包會發生什么呢?
由於主機A並不知道主機E的MAC地址,所以會發送一個ARP Request報文廣播出去詢問主機E。這個ARP Request會在SWA的G0/0/1端口打上VLAN 10的標簽,到達G0/0/4端口時,在不剝離標簽的情況下轉發。到達SWB時保留VLAN 10標簽,由於Access端口規定,只發送VLAN標簽與自己的PVID一致的報文。
我們可以知道,SWB連接主機E的G0/0/2的PVID應為20,與發送來的ARP Request的報文的VLAN標簽(為10)不一致,因為會丟棄該ARP報文。那么主機A就無法訪問到處於不同VLAN的主機E了。
就是因為這個原理,VLAN可以隔離廣播域,從而減少廣播流量而消耗的帶寬,也保證了網絡中一定程度上的信息安全。
端口類型 -- Hybrid
Hybrid端口既可以連接主機,又可以連接交換機。
Hybrid端口可以以Tagged 或Untagged方式加入VLAN 。
Access端口發往其他設備的報文,都是Untagged數據幀,而Trunk端口僅在一種特定情況下才能發出untagged數據幀,其它情況發出的都是Tagged數據幀。
Hybrid端口是交換機上既可以連接用戶主機,又可以連接其他交換機的端口。Hybrid端口既可以連接接入鏈路又可以連接干道鏈路。Hybrid端口允許多個VLAN的幀通過,並可以在出端口方向將某些VLAN幀的Tag剝掉。華為設備默認的端口類型是Hybrid。
在本示例中,要求主機A和主機B都能訪問服務器,但是它們之間不能互相訪問。此時交換機連接主機和服務器的端口,以及交換機互連的端口都配置為Hybrid類型。交換機連接主機A的端口的PVID是10,連接主機B的端口的PVID是20,連接服務器的端口的PVID是100。
(一)Hybrid端口基本原理
Hybrid端口收發數據幀的規則如下:
①當接收到對端設備發送的不帶Tag的數據幀時,會添加該端口的PVID,如果PVID在允許通過的VLAN ID列表中,則接收該報文,否則丟棄該報文。
②當接收到對端設備發送的帶Tag的數據幀時,檢查VLAN ID是否在允許通過的VLAN ID列表中。如果VLAN ID在接口允許通過的VLAN ID列表中,則接收該報文,否則丟棄該報文。
③Hybrid端口發送數據幀時,將檢查該接口是否允許該VLAN數據幀通過。如果允許通過,則可以通過命令配置發送時是否攜帶Tag。
配置port hybrid tagged vlan vlan-id命令后,接口發送該vlan-id的數據幀時,不剝離幀中的VLAN Tag,直接發送。該命令一般配置在連接交換機的端口上。
配置port hybrid untagged vlan vlan-id命令后,接口在發送vlan-id的數據幀時,會將幀中的VLAN Tag剝離掉再發送出去。該命令一般配置在連接主機的端口上。
(二)示例解釋和配置方法
本例介紹了主機A和主機B發送數據給服務器的情況。為了更清楚解釋數據傳輸途中VLAN Tag的添加與剝離情況,將解釋和配置方法放在一起介紹。
Step 1:將兩台交換機的所有端口的端口類型聲明為Hybrid類型。(注:主機的基本配置,交換機的創建VLAN均已省略)
命令:port link-type hybrid
將端口的類型配置為Hybrid。
其他端口配置方法相同,故省略。
默認情況下,華為系列交換機的端口類型是Hybrid。因此,只有在把Access口或Trunk口配置成Hybrid時,才需要執行此命令。
Step 2:為交換機SWA和SWB各端口配置PVID。
按照拓撲圖,應為交換機SWA的G0/0/1配置PVID為10,G0/0/2配置為20;SWB的G0/0/1配置為100。
Step 3:在交換機連接主機的端口配置以Untagged的方式允許指定VLAN通過。
命令:port hybrid untagged vlan{ { vlan-id1 [ to vlan-id2 ] } | all }
用來配置允許哪些VLAN的數據幀以Untagged方式通過該端口。
(1)主機A可以訪問服務器,不能訪問主機B。
在SWA連接主機A的端口G0/0/1上配置允許VLAN 10和VLAN 100的數據幀報文以Untagged的形式通過。VLAN 10和VLAN 100的數據幀在通過該端口時都不攜帶標簽。
(2)主機B可以訪問服務器,不能訪問主機A。
在SWA連接主機B的端口G0/0/2上配置允許VLAN 20和VLAN 100的數據幀報文以Untagged的形式通過。VLAN 20和VLAN 100的數據幀在通過該端口時都不攜帶標簽。
(3)服務器可以同時被主機A和主機B訪問。
在SWB連接服務器的端口G0/0/1上配置允許VLAN 10,VLAN 20和VLAN 100的數據幀報文以Untagged的形式通過。VLAN 10,VLAN 20和VLAN100的數據幀在通過該端口時都不攜帶標簽。
Step 4:在交換機連接交換機的端口配置以Tagged的方式指定VLAN通過。
命令:port hybrid tagged vlan{ { vlan-id1 [ to vlan-id2 ] } | all }
用來配置允許哪些VLAN的數據幀以Tagged方式通過該端口。
在交換機SWA和SWB連接的端口G0/0/3上配置允許VLAN 10,20和100的數據幀報文以Tagged的形式通過。VLAN 10,20和100的數據幀在通過該端口時都攜帶標簽。
到此,所有配置完成。
Step 5:示例解析
配置方法介紹完成之后,我們開始解析數據幀報文在局域網中的轉發過程(對應配置方法的步驟):
當主機A(VLAN 10)訪問服務器(VLAN 100)時:
(1)數據幀從主機A -》交換機SWA
主機A發送出來的數據幀不帶VLAN Tag。所以交換機SWA接收到該數據幀時,會按照(Step2)配置為該數據幀打上端口的PVID 10。然后查看(Step 3)配置的允許VLAN 10通過,則接收此數據幀並轉發。
(2)數據幀從交換機SWA -》 交換機SWB
交換機SWA通過端口G0/0/3向交換機SWB發送帶VLAN 10標簽的數據幀。查看(Step 4)配置的允許VLAN 10以攜帶標簽的形式通過端口,則不剝離標簽轉發數據幀。
交換機SWB接收到該數據幀后,查看(Step 4)配置的允許VLAN 10以攜帶標簽的形式通過端口,則也不剝離標簽轉發數據幀。
下圖驗證數據幀是以攜帶VLAN 10標簽的情況下從SWA轉發到SWB的。
(3)數據幀從交換機SWB -》 服務器
交換機SWB將帶有VLAN 10標簽的數據幀通過端口G0/0/1發送給服務器,查看(Step 3)配置的允許VLAN 10以不攜帶標簽的形式通過端口,則剝離標簽轉發數據幀給服務器。
同理,屬於VLAN 20的主機B訪問服務器也相同,故省略。
Tips:解答一些額外的問題。
①VLAN 10的主機A會將數據幀發送到VLAN 20的主機B嗎?
其實這個問題在上面介紹Trunk端口時也提到過,由於主機A發送的ARP Request報文也會打上VLAN 10的標簽,所以不會發送給PVID為20的端口。
②訪問是雙向的,主機A訪問服務器,勢必說明服務器會回復一個數據幀給主機A,那么這個數據幀又是如何打VLAN標簽的呢?
根據配置可以知道,服務器向主機A回復的數據幀,會根據SWB的端口G0/0/1的PVID打上100的標簽,該標簽會在SWA的G0/0/1端口剝離並轉發給主機A。
Step 6:配置驗證
主機A可以訪問服務器,不能訪問主機B:
同樣的,主機B能訪問服務器,不能訪問主機A:
說明實驗成功。
下一節筆記會介紹VLAN的划分方法和Voice VLAN。敬請期待。