先讓我們來看一個例子,例如筆者的計算機的IP地址是192.168.0.2,而子網掩碼是255.255.255.0。一般情況下,網絡管理員會把網關設置為本網絡內第一個可用的IP。那麼在這個網絡內,網關就應該是192.168.0.1。但是筆者把網關設置為了10.0.0.1,計算機仍然能夠上網,一切正常。
經過筆者不斷的實驗,最後發現原來是單位的Cisco路由器幫我們解決了這個問題。當計算機需要訪問不同網段的計算機的時候,首先會發送一個廣播包,獲取網關的MAC地址。網關一旦發現這個廣播包是發給自己的,它會把自己的MAC地址返回給發送請求的計算機。
由於筆者設定的網關是10.0.0.1,這個網絡的網關卻是192.168.0.1,那麼網關應該不會把自己的MAC地址返回給發送請求的計算機。在TCP/IP協議簇裡,有一種稱為代理ARP的子協議,它的功能就是充當MAC地址的代理。在上面的實例裡,正是我們的Cisco路由器把自己的MAC地址返回給了發送請求的計算機。這台計算機就認為10.0.0.1這個網關的MAC地址存在,就可以通過網關上網了。
在Cisco路由器上,代理ARP的功能是默認開啟的。大家也可以在路由器的端口配置模式下,用命令no ip proxy-arp來關閉這個功能,這樣設錯網關後就真的上不了網了。