服务器遇到一次奇怪的现象。当网关与俺码同时配错时外网可达,网关不可达。模拟研究发现vlan划分和子网划分不一致会带来一定的影响。
环境:vlan 10 ,ip 172.16.10.1/255.255.255.0,
vlan 20 ,ip 192.168.2.50/255.255.255.0,
主机vbox-fai, 172.16.10.2/255.255.255.0 gateway 172.16.10.1
正确配置时,172.16.10.1与192.168.2.50 可通,服务器记录网关的arp 172.16.10.1 对应自己的mac(以下称网关mac为mac-a),arp retquest 发出后,172.16.10.1 reply服务器发出的arp请求,
当配置成,172.16.10.2/255.255.0.0 gateway 172.16.1.1 时,也可与192.168.2.50通,服务器,arp 172.16.1.1 对应为mac-a,arp request广播发出后,询问谁是,172.16.1.1的mac,因为交换机上开启了proxy-arp,网关会把自己的mac-a告诉服务器,交换机认为这是为了保证联通性,但实质是欺骗了服务器的arp请求,这个reply导致服务器的arp记录错误,此时服务器与172.16.1.1不通,但是与192.168.2.50通,traceroot第一跳是 172.16.10.1 正常来讲出vlan第一跳应当是自己的网关。
以上两种配置,arp request的请求广播地址是不同的,正确时:172.16.10.255,错误时:172.16.255.255,网关的配置它应当是仅存在于172.16.10.255这个广播域中,但是实际上不是。vlan从二层划分了广播域,但是子网的广播域在三层并没有被vlan划分。
此例中可以进行两种设置。
ip broadcast-address 172.16.10.255 (1)
no ip proxy-arp (2)
(1)设置vlan 10的广播地址为172.16.10.255,可以视为vlan对子网也进行了划分,172.16.255.255的广播请求,不会被网关处理直接丢掉了,没有arp reply服务器就没有网关的mac,就不会形成网络联通的假象。这种配置会使,任何非此广播地址的包都不会得到网关的回应。如果两个子网在同一vlan如果设置这个会导致其中一子网学不到网关的arp.
(2) 设置vlan10 关闭arp代理,网关仍然接收并处理172.16.255.255的请求,但是不会进行arp代理的回应。就不会告诉172.16.10.2,我是172.16.1.1 服务器得不到reply也就不会有网关的mac,就不会形成网络联通的假象和外网就不会通。
arp proxy,路由认为是一种保持连通性的行为,可以说是一种善意的谎言,但它还是骗了。