先让我们来看一个例子,例如笔者的计算机的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来关闭这个功能,这样设错网关后就真的上不了网了。