使用iptables丢弃dns伪包

iptables的U32模块可以方便的查找数据包各个位置的信息,因此可以通过其过滤dns污染的伪包。

iptables -t mangle -I PREROUTING -p udp -m udp –sport 53 -m u32 –u32 “0&0x0F000000=0×05000000 && 22&0xFFFF@16=0x3b1803ad” -j DROP
iptables -t mangle -I PREROUTING -p udp -m udp –sport 53 -m u32 –u32 “0&0x0F000000=0×05000000 && 22&0xFFFF@16=0x5d2e0859,0xcb620741,0x0807c62d,0x4e10310f,0x2e52ae44,0xf3b9bb27,0xf3b9bb1e,0x9f6a794b,0x253d369e,0x9f1803ad” -j DROP

加入这两条到/etc/rc.local中,并把dns设置为未受污染的服务器即可得到正确的解析。