配置靜態路由的時候,一般都是以出端口作為轉發地點,因為這比下一跳容易理解和記憶。但是某些情況下只能配置下一跳作為目的地址。
在串口鏈路上(路由器之間的鏈路)采用出端口作為轉發地點是沒問題的,但是如果是以太網鏈路上可就要以下一跳作為目的地址。
也許你會問以太網的鏈路需要配置靜態路由?? 路由器不是會自動對直連鏈路生成一條優先級高的路由條目嗎?還需要配置什么靜態路由?
情況是這樣的:如下拓撲圖
兩台路由器之間的鏈路屬於一個局域網,網絡號:192.168.99.0/24
但是這個局域網是存在多台網關的,因此為了能使 PC1 與 PC2通信
必須在兩台路由器上配置靜態路由,而本實驗探討的主題是:
為什么在局域網鏈路中不能采用出端口作為轉發地址,而只能采用下一跳作為轉發地址。
實驗的步驟:
1.先在兩台路由器之間以出端口的形式配置靜態路由
2.使用wireshark分別在兩台路由器的出端口抓包
3.查看通信結果分析過程
4.以下一跳作為轉發地址配置靜態路由條目驗證是否能通信
R1的路由條目為
ip route 192.168.2.0/24 e0/0/1
R2的路由條目
ip route 192.168.1.0/24 e0/0/0
在 PC1 上ping PC2的地址
通信失敗,在R1出端口上查看抓包結果
在R2出端口上查看抓包結果
分析:
PC1 在ping PC2時,判斷PC2與自己不在同一個網段,於是就會將包發給網關。
網關收到包之后,會將包的第三層PDU拆開查看目的IP地址是否在路由條目匹配
因為我們手動設置了一條路由條目,於是包會從出端口發出去,但是目的MAC地址
路由器並不知道,於是會向出端口的局域網發出ARP請求,請求的地址是192.168.2.1
但是局域網內並沒有這個IP地址,所以沒人回復ARP 導致本次通信失敗。
因此在華為設備中:如果是路由器所連的以太網鏈路那么配置靜態路由時需要明確下一跳
原因是因為:路由器轉發數據包時所封裝包產生的ARP請求只是請求下一跳的MAC地址
而不是目的IP的MAC地址,這樣就可以完成正常的通信
但是在思科的設備中:是沒有上述的,因為如果你對路由器指定出端口,收到包后發送ARP廣播包
請求目的IP的MAC地址,而以太網鏈路中存在一台路由器判斷出ARP所請求的IP與自己所連的直連鏈路
是這個目的IP的同一網段,那么這台路由器會回復自己的MAC地址。相當於做了ARP代理。也就是說思科
設備就算配置了出端口為路由條目,因為路由器的ARP代理功能,所以也是可以進行通信的。