僅使用兩層交換機,屬於不同VLAN的PC之間為何不能Ping通?
軟體工程專業的計算機網路課實驗。這個實驗是在我們學習完網路模型概況和物理層後做的,理論還沒學。
…因為二層轉發不看IP只看MAC,VLAN隔絕了廣播域,屬於不同VLAN的主機,由於ARP無法到達(ARP是廣播的),也就無法獲知對方的MAC地址
而不能知道目的MAC,就無法完成二層通信
—————————————————————————
上面答的不嚴謹,是我懶得打字。
VLAN實際上是一個本地概念,不同埠在不同的VLAN,交換機用PVID來區分。只有當你設置Trunk鏈路的時候,Trunk會根據數據的PVID去打標籤,帶了VLAN標籤的數據到達另一台交換機後,VLAN這個東西才完成了兩台交換機之間的傳遞,換言之,這個時候,兩台互聯的交換機對同一個數據包的VLAN判斷是一致的。
再詳細點說,源交換機根據數據的PVID判斷,收到該數據的交換機根據數據的標籤來判斷。
那麼兩個交換機不同VLAN是怎麼通的?答案很簡單,互聯的鏈路不要用Trunk,不要打標籤,數據進入第一台交換機的時候假如交換機根據埠PVID判斷屬於VLAN10,然後從一個屬於VLAN10且連著另一台交換機的埠發出——請注意這裡——PVID這個東西是交換機本地認識的,是不修改數據包的!!!
那麼假如另一台交換機收到數據包的埠PVID是20呢?這台交換機就認為,它是來自VLAN20的,反之同理。
場景一:可以互相ping通
主機A:IP = 10.1.1.1/24 VLAN = 10
主機B:IP = 10.1.1.2/24 VLAN = 20
再用一根網線一端連接交換機vlan 10 埠,另一端連接交換機vlan 20 埠,不同VLAN的主機A和B可以互相學習到彼此的MAC地址,可以互相ping通。
場景二:無法ping通
主機A:IP = 10.1.1.1/24
主機B:IP = 20.1.1.1/24
沒有三層交換機、路由器、多網卡主機(IP_Forwariding enabled)的路由,有沒有VLAN都無法ping通,物理直連都無法ping通。
因為不同網段的主機必須要三層設備的路由才可以通信,這個如果理解不了,重溫CCNA。
根據車小胖的回答,我對場景一進行了實驗,大家請看:
交換機上開啟兩個vlan,分別是vlan10和vlan20
vlan10下面劃分兩個埠,分別是E0/0/1和E0/0/15
vlan20下面劃分兩個埠,分別是E0/0/2和E0/0/16
現在我用導線將E0/0/15和E0/0/16連起來後,PC1能夠ping通PC2
請同學們思考這是為什麼?
二層交換機通過MAC定址,隔離衝突域,但不能隔離廣播域。
就是說二層內所有相互連接的終端都處於同一個廣播域內,都能收到其他終端的廣播幀。終端越多,廣播流量越多,網路越堵塞。
那麼這種情況下需要將廣播流量隔離,對二層網路進行邏輯分段,每個分段一個廣播域,這就是VLAN。在不使用路由器或三層交換機的情況下,不同VLAN下的終端不能通信。
為啥不能通信呢?其實挺簡單的。
交換機的每個埠可以設置一個VID,擁有相同VID的所有埠在邏輯上組成一個VLAN。
從VID為1的埠進入的流量只會廣播給VID為1的其他埠。VID為2的埠上連接的終端就不會接收到這些流量。當跨越多個交換機創建VLAN時,一般會用到標籤VLAN,通過中繼埠進行轉發,在二層數據幀內部會添加4位元組IEEE 802.1Q(https://zh.wikipedia.org/wiki/IEEE_802.1Q)定義的首部來標示VID等信息。
其實,有兩個交換機,都是二層交換機,不同vlan也可以通信 題主不妨猜猜如何配置,才能通信
原諒我的手繪,sw1的1口和2口屬於vlan100,
sw2的1口和2口屬於vlan200,這就是我說的拓撲,這是native vlan? @龍吟
題主這種問題真不想回答,看看書或者百度一下都沒功夫?
NightAn :如果交換機2個埠在不同vlan,但我設置成同樣的網段,在同一廣播域,能不能通呢?
寒潭:題主基本問題都不清楚,native vlan這種高冷的知識就更不清楚了
PCa和PCb連接到交換機的兩個介面1和2,介面1位於VLAN1,介面2位於VLAN2
1,PCa和PCb的IP地址不在一個IP子網內。
PCa ping PCb,目標IP地址與本地IP地址不位於同一子網,查找是否有可用路由,沒有可用路由,或者有可用路由,但是路由的下一跳地址無法解析出MAC地址而不可用,無法轉發。
2,PCa和PCb的IP地址在一個IP子網內。
PCa ping PCb,目標IP與本地IP位於同一子網,使用ARP解析對方地址,ARP以廣播的方式發出,從1口進入交換機,然後交換機將廣播從位於VLAN1中且排除1口以後所有介面發出,交換機轉發廣播的兩個要素,同一VLAN和水平分割,2口位於VLAN2,不能接收到ARP,PCa無法解析到PCb的MAC地址,無法轉發
老朽來作答!
首先,要明確一點,vlan內的ip段都是跨段的,跨段ip之間互聯互通肯定是要有網關(gateway)。
ok,上面的東西明確了,再來說二層交換機的問題。二層交換機僅僅是工作在數據鏈路層的交換機,這就意味著二層交換機只有mac表,沒有路由表,固然只能支持區域網內部的通訊(lan),是沒發進行網關轉發,而二層交換機的不同vlan也屬於不同的lan,所以互相之間不能通訊。
這個如果是在華為上得話,可以用使用一個叫做MUX VLAN的東西
MUX VLAN 又分為:
Principal VLAN (主VLAN)和 Subordinate VLAN(從VLAN)
從VLAN又分為:
Group VLAN(互通從VLAN) 和 Separate VLAN(隔離型從VLAN)
主VLAN埠可以和所有VLAN通信(實現的條件)
互通型從VLAN可以和自己vlan間成員通信和主vlan通信
隔離型從VLAN只能和主VLAN通信,自己VLAN的成員也不可通信
兩台主機地址在同一個子網下
配置:
vlan batch 10 20
vlan 10
mux-vlan
subordinate group 20 (Vlan20配置為互通性從Vlan,也可以配置隔離型,這裡不影響和主Vlan通信)
interface Ethernet0/0/1
port link-type access
port default vlan 10
port mux-vlan enable
interface Ethernet0/0/2
port link-type access
port default vlan 20
port mux-vlan enable
誰說的,老規矩不問能不能就下定論。一個場景,pc1在vlan10,地址192.168.1.1,上聯二層交換埠都是vlan10;pc2vlan20,地址192.168.1.2,上聯二層交換都是vlan20,pc1開cmd(假定windows)ping 192.168.1.2,就問你一句,通不通。
你這麼問,我知道你不了解vlan間路由。細點是不知道三層交換是怎麼工作的,封包的過程,arp你都不知道,不然不會這麼問。
多看書,少上知乎,你就懂了
直觀而不嚴謹地舉個例子,希望能幫助題主理解。
二層的VLAN可以理解為一間間互相隔音的大屋子。
在一開始的時候,大家都不認識,通信的時候只知道對方的名字(IP地址),不知道對方的臉(物理地址,如MAC地址)。
當要找一個人的時候,首先就要在屋子裡大喊一聲這個人的名字(ARP查詢),如果對方也在這個屋子裡,那麼當對方聽到你喊他之後,就會回應你,「我在這兒呢」(ARP回應)。之後你倆就可以愉快地交流了。
要是這個人根本在這個世界上(當前網路內)不存在,或者不在當前屋子裡(當前VLAN內),那麼就算你喊的再大聲,也不會有人回應你的。
此處還可以引申出很多好玩的概念,比如無故ARP(大喊一聲自己的名字,看看有沒有人回應自己,如果有那就說明重名(IP地址衝突)了)等。
如果想和其他屋子裡的人通信,那麼就需要一個在不同屋子之間轉發報文的人(三層設備),常見的方法是配置單臂路由或配置三層交換機的SVI。我咋記得能通 ,好像弄個三層路由
不同的vlan屬於不同的廣播域,二層是不通的,不同的vlan可以使用vlan虛介面進行三通互通
簡單的講就是兩台交換機互聯鏈路本徵vlan都用本地,在出交換機時候剝掉tag,進去打本機本徵vlan
1、PC1連接的port1是屬於vlan10的,這個埠是access所以PVID也是10,就會打上一個10的tag
2、如果PC2連接的port2也是access,vlan10的,交換機看到PC1的這個包就會脫去tag10。(如果不脫tag電腦是識別不出這些1100101010是幹啥的)
3、如果PC3連接的port3是access屬於vlan20的,收到PC1發的這個包,一看有tag10和自己的pvid不一樣,就把這個包丟了。。
因為控制器沒有下發流表或者埠模式沒有設置好
把二層交換機劃分vlan這件事理解成把一個24口的交換機拆成了好多個五口的,你把倆電腦接到不同的交換機上,能通訊嗎?
不同VLAN是不同網端,需要三層路由。
一句話…屬於不同網段的vlan之間通信需要網路設備有ip routing的功能…
ping是三層,vlan2層。不同vlan,二層已經阻斷何談三層。
單臂路由啊,如果交換機是三層的話可以用SVI
一台交換機上的埠划了兩個VLAN,你就當它是兩台交換機就可以了。
至於透傳多個VLAN的trunk口,你就當它是一捆線插上各跑各的VLAN就是了。
三層交換機涉及的那部分你要理解的話還得學習一個。
一般不同交換機可以用不同vlan隔離二層網路,具體不細表了。
不過。。。可以用特殊方法實現不同vlan的二層通信。
A的埠trunk模式,pvid 10,vlan 10 (此時帶vlan10的數據包出該埠會被剝離vlan)
B的埠trunk模式,pvid 20,vlan 20(不帶vlan的數據包進入該埠會打上pvid的vlan 20)
反向亦同理。
更簡單的,其實是兩個互聯的口子都做成access模式
推薦閱讀: