环境:内网众多机器会发出ping,希望在网关上进行修改,使得所有ping 包在网关被截获,并返回ping reply。
最简单的解决方法就是iptables 转发的网关内部地址,由其负责回应ping。但这样就会使得ping 值非常小,作假也看着不像了。当时想写个程序控制回应ping 包,但这样回应就会有两个,一个网卡自身回应的ping 包,和程序回应的ping 包,为了拦截网卡本省发出的ping 包,可以采用内核模块编程,hook 住ICMP 包,这样有点超过我的范围了,调了一天多,放弃了。最后使用了一个折中的办法,iptables 将内网ping 包转发到外网ip 地址,运行ping 回应程序,最后iptables 拦截所有外网地址的ICMP 包,这样网关程序既可以收到ping 包回应,而外网卡的ping 被REJECT ,而内网卡的ping 不被REJECT。有个小小的问题就是client 收到ping 的回应都带有(DUP!),可能是因为报文的内容的原因,有知道原因的请告诉我哦~~~