它的原理可见
简单点说,就是通过提前返回错误的dns响应包(污染包早于正常包到达客户端)达到污染的目的。
所以说,只要在这个大的局域网内,就会被污染。目前它的污染方式仅仅是对udp方式的dns查询污染。
知道的污染方式,就好对症下药:
1.使用tcp方式查询
a)windows客户可,让所有dns请求都走tcp协议
b)建立本地dns,使用tcp协议查询(例如unbound,pdnsd等等);编写dns proxy(
2.通过延迟方式过滤欺骗的udp
编写dnsproxy(),通过延迟处理,过滤早到的污染包。
3.通过ttl判断,过滤欺骗污染
获取你的dns服务器正常响应包的ttl
以正常的ttl=44举例如下
iptables -A INPUT -p udp -sport 53 -m ttl --ttl-lt 44 -j DROP
iptables -A INPUT -p udp -sport 53 -m ttl --ttl-gt 44 -j DROP
iptables -A INPUT -p udp -sport 53 -m ttl --ttl-eq 44 -j ACCEPT
以上几种方式都可以较好的解决目前墙内dns污染,其中优劣请自行体会。