路由器直連埠不同網段互通的問題?
拓撲如下:
配置:
1、R1 F0/0 ip12.1.1.1/24 ;R2 F0/0 21.1.1.1/24
2、雙方配置默認路由,下一跳指出介面(如果指對端ip就不通了)
問題描述:
1、現在兩個路由器是可以ping通的。抓包如下ARP 請求的目標地址12.1.1.1,不是和21.1.1.1不在一個網段嗎?這樣都能發過去呢?
通信的過程不應該是 R2用目標地址12.1.1.1和自己的掩碼與運算,發現和自己ip同網段的話發送arp請求,不同網段的話交給網關發送的嗎?這裡沒有網關,那就是用路由錶轉發出去了吧,arp請求可以查路由表呢??
2、同樣的配置在華為設備是行不通的,並且在兩個介面抓包沒有任何報文發出。謝謝各位的解答!
先來看看為何預設路由設置下一跳不能互相ping通
R1 有兩條路由:
12.1.1.0/24 F0/0 Direct Connected
0.0.0.0 0.0.0.0 F0/0 next-hop 21.1.1.1
在R1上ping 21.1.1.1,匹配到0.0.0.0/0 這條預設路由,出介面F0/0,下一跳為 21.1.1.1,那如何到達21.1.1.1呢?依然要使用0.0.0.0/0 這條預設路由,這是一個無限循環,所以不會通。
為何不設置下一跳有可能會通?
R1 有兩條路由:
12.1.1.0/24 F0/0 Direct Connected
0.0.0.0 0.0.0.0 F0/0 static
在R1上ping 21.1.1.1,匹配到0.0.0.0/0 這條預設路由,出介面F0/0,因為沒有下一跳參數,R1不知道誰是真正的網關,R1寄希望於F0/0這個介面所在廣播域里可能存在網關可以到達21.1.1.1,於是通過ARP廣播請求21.1.1.1的MAC地址,有些網關發現自己另外的介面地址為21.1.1.0/24,並且支持Proxy ARP,也會使用自己的MAC地址進行ARP相應,R1擁有了網關的MAC,可以完成封裝,接下來就是小菜一碟了。
上面解釋了為何R1會發ARP廣播,在這個實驗中,R1發送了ARP廣播請求21.1.1.1的MAC地址,到達R2,R2發現是自己的IP地址,自然會相應,所以雙方的ping 會通。
@車小胖的回答已經很清楚了,不過我第一次看還是沒搞懂,以為對端發過來的arp響應是代理arp。題主的環境沒有用到代理arp,在R1的f0/0上關閉代理arp也可以成功通信。
這裡補充做一個代理arp的小實驗幫助大家理解。
R3的lo f0/0地址如圖 24位掩碼,R4介面f0/0;
R3上配靜態路由出口f0/0,R4同配靜態路由f0/0。R3f0/0關閉代理arp no ip proxy-arp
讓R4ping 3.3.3.3 結果不通
由於R3關閉了代理arp,到f0/0就不會響應這個arp請求,直接丟包。
之後開啟代理arp,R4 ping3.3.3.3通。
開啟代理arp後,R3發現3.3.3.3是自己的一個介面,就用接收到這個請求的介面的mac地址作為回答,所以arp回應里填上f0/0的地址。
題主的環境里,在arp請求包發出後f0/0直接回應,為什麼arp請求發出,見車小胖的回答。這裡的環境用到了arp代理。
推薦閱讀:
※關於CIDR聚合我有個問題想了很久都沒想明白?
※如何去劫持一個路由器的DNS?
※互聯網上怎麼會遇到區域網的ip地址?
※DNS 網關 路由 交換機 網橋 協議 伺服器 這些都是什麼關係?