基於端口的虛擬局域網測試
一、什麼是VLAN:
VLAN,是英文Virtual Local Area Network的縮寫,中文名爲"虛擬局域網", VLAN是 一種將局域網(LAN)設備從邏輯上劃分(注意,不是從物理上劃分)成一個個網段(或者 說是更小的局域網LAN),從而實現虛擬工作組(單元)的數據交換技術。
VLAN 主要用來解決如何將大型網絡劃分成多個小網絡,隔離原本在同一個物理LAN中的不同主機間的二層通信;
在LAN中,各主機之間的通信是物理通信(二層通信);
在VLAN中,各主機劃分於不同的VLAN,不同VLAN之間通信是三層通信;
二、問題發現:
今天在複習二層網絡設置VLAN的問題的時候,突然想到:如果在VLAN中多加上一個路由器還能否使用的了vlan;
這個是我做實驗用的圖:
第一步:按照圖中的要求,將所有主機以及路由器上面的IP地址都配置好:現在還沒有配置vlan,所有所有的主機都是能夠互相ping通的;
第二步:對LSW1和LSW2 的接口上配置相應的鏈路模式,在這裏LSW與主機之間相連的端口設置爲access,LSW1,2和路由器之間的端口設置爲trunk;設置完之後,發現在同一個二層網絡之間的相同vlan能夠相互的ping通;但是不同的二層網絡之間卻不能ping通(192.168.1.1->192.168.0.1ping不通);
第三步:因此我在LSW1的e0/0/3的鏈路上進行抓包;發現:
這時候的我認爲:應該是路由器沒有設置arp代理導致的:所以我選擇添加了靜態arp並且在每個端口上都開啓了arp代理;
第四步:繼續用pc1pingpc2,發現任然ping不通;所以我仔細看了下:原來是pc1找不到去往路由器端口的地址:(因爲我在LSW1的E0/0/3上設置的是trunk,當pc1的數據包生成發送通過e0/0/3端口到鏈路上的是帶有標籤的幀);路由器的g0/0/0端並不能識別這種帶有標籤的幀,所以直接丟棄,所以在PC1上纔會返回:目標不可達;
當我把LSW1和LSW2上和路由器相連接的接口的鏈路狀態模式設置爲了access,這下就能夠從PC1ping通PC2;(不過現在只能使VLAN10的主機相互ping通,但是vlan20的並不能;)
現在我關閉了路由器端口的arp代理。看是否還能夠相互ping通;好吧,他果然還是能夠ping通;(下圖是PC1上的arp緩存),其實現在根本沒有用到arp代理功能!
所以我吧PC1的默認網關去掉之後,依然能夠ping通,說明了此時纔是利用了arp代理功能;(arp代理就是告訴PC1要去別的網絡可以吧文件發給我);在這裏去的網關值爲(0.0.0.0)
現在需要解決的問題就是:如何讓VLAN 20也能夠相互ping通;因爲Access端口最主要的特性是僅允許一個VLAN的幀通過,所以Access只能加入一個VLAN,所以這個就是限制了LSW1和路由器只能傳VLAN10幀的主要問題所在;
三、問題解決思路
所以爲了能夠前面所提出來的問題
思路有2條:1)在路由器的接口處配置,使他能夠接受並轉發帶有幀的報文;
將鏈路種類換成hybrid;看是否能行得通;
採用單臂路由器的方式完成;
(一)先做第一條:(利用單筆路由器的思路)
設置子端口並且配置使子端口能夠接受vid爲X的標籤;
然後,去掉默認網關,因爲默認網到達。在這裏利用arp廣播;但是爲什麼我ping不通呢,(原因是因爲我設置了靜態arp,在此之前設置的靜態arp時候的ip和現在修改了IP的不一樣啦。因爲要保證不再同一網段;)
然後的然後發現單筆路由器設置不了啊。(先補充一波單筆路由器的資料)
先把LSW4上面的接口的鏈路種類設置爲access和trunk;
在這裏:兩臺主機的ip是不在同一個網段下的,(因爲如果兩臺主機在同一個網段下的話,他會認爲PC11和自己是在同一個網絡下,只會進行二層通信,所以他不會選擇發送至路由器;當它需要ping PC11的時候,會在同一個網絡下去用arp請求,但是因爲vlan的存在,所以arp根本不能廣播到PC11,所以會發送失敗;但是如果不在一個網段下的話,PC10會進行三層通信,PC10會選擇訪問默認路由,即能到達路由器上,就會查找IP表,然後查出目標PC11的ip然後發送出去;)
接着做,對路由器進行配置:(單臂模式)
[R4-GigabitEthernet0/0/0.1]ip address 10.0.0.10 24
[R4-GigabitEthernet0/0/0.1]dot1q termination vid 10
[R4-GigabitEthernet0/0/0.1]arp broadcast enable
[R4-GigabitEthernet0/0/0.1]ip address 10.0.1.10 24
[R4-GigabitEthernet0/0/0.1]dot1q termination vid 20
[R4-GigabitEthernet0/0/0.1]arp broadcast enable
然後就能ping通了。
其實我覺得單臂路由器對於vlan沒有什麼大的作用,畢竟有個路由器就已經能夠達到隔離廣播的作用了。
然後呢,爲了能讓PC1和不同網段的PC3通信,所以同樣要把LSW2和路由器相關的鏈路設置爲單筆路由器的模式。當然,主機PC3和pc4 的ip地址都要變換,(其實就挺像一個三層通信)。
最後測試:最後都弄通了。不過沒有達到想要的效果。因爲vlan都被路由器的轉發功能破換完了,,,與其花這麼多時間搞vlan,還不如直接使用匹配模式賽選路由;
這個用的是cs1
(二)然後做第二條思路:(利用hybrid的特性)
Hybrid端口:pvid:這個在hybrid端口中,是連接主機的端口需要設置的,她爲即將到來的數據報文添加一個pvid;(如果沒有對報文進行pvid的命名,它將不會受到後面設置了tagged和untagged端口設置的影響);
Untagged:這個接口主要是用在了主機和交換機之間的;爲了剝離pvid和untagged設置的vlan相同的幀,如果值不相同的話就直接丟棄;
Tagged:當收到了一個pvid和設置的tagged所設置的vlan相同時,會剝其報文轉發,當收到了一個pvid和設置的tagged所設置的vlan不相同時,不剝離直接轉發。
不過這個思路是完成不了的。
如果我在路由器和交換機之間的端口上設置hybrid端口,並且設置端口爲tagged爲10,20 ,這樣。。。。。
在這之前先考慮一個問題:如果當一個hybrid端口設置爲tagged時候,按照定義,如果他收到了一個pvid和設置的tagged相同的幀,就會剝離。那到底是怎麼樣子的剝離呢?如果這樣都可以的話那和untagged又有什麼區別呢?
現在先做個小實驗來驗證:
1、現在E0/0/1上配置好hybrid和untagged;
[Huawei-Ethernet0/0/1]port hybrid pvid vlan 10
[Huawei-Ethernet0/0/1]port hybrid untagged
在e0/0/3上配置好hybrid和tagged(vlan 10)並shutdown e0/0/2
[Huawei-Ethernet0/0/3]port hybrid tagged vlan 10
這個是e0/0/1上抓的包:
這個是e0/0/3上抓的包:
嘗試用pc15ping通pc17肯定是ping不通的,通過在e0/0/3這條鏈路上抓包。發現:每個arp包上面都有一個202.1Q的標籤:
[Huawei-Ethernet0/0/3]undo port hybrid tagged vlan 10
[Huawei-Ethernet0/0/3]port hybrid tagged vlan 20
然後我現在選擇吧tagged的vlan值修改爲20(不相同了),然後就直接拒收了好麼;這特麼和定義的不一樣啊
個人理解:
應該是如果tagged的vlan值和pvid相同的話—轉發。如果不相同的話,就會丟棄;
當tagged從交換機和交換機的鏈路上接受到了pvid不等於tagged接口的vlan。直接丟棄。當tagged從交換機內部準備向外發出時候:如果標籤的pvid不等於tagged接口的vlan時候,不予轉發。
Pvid用於:收到標籤的幀的時候會打上標籤;標籤的值爲設置的pvid的值;
Untagged 收到帶有標籤的。判斷和untagged設置的vlan的值是否相同。如果相同的話就去掉標籤變成一個普通的,可以被路由器主機識別的幀;如果不相同。直接扔了。
所以。
對於這張圖來說,我無論在LSW1 的0/0/4接口做如何的設置:
如果我設置了tagged並且允許帶有pvid的報文通過的話:如果路由器沒有做帶有可以識別802.1Q幀的設置的話,(單筆路由器);路由器上面的G0/0/0是絕對不能收到該幀的;
如果我現在這個接口上設置了untagged幀的話:雖然該接口是能夠接受該幀並且做出路由選擇,但是對於和路由器相連的LSW2 的E0/0/1接口來說:它必須有一個pvid但也只能存在一個pvid、所以也只能傳送一種pvid的幀、並不能達到希望的效果;
3/2 2017 by:my-tea