- AAAA记录的过滤
1.1 需要过滤的场景:
IPV6出国的速度太慢,需要降级成IPV4出国,速度有保障。
利用dnsmasq进行域名分dns解析的时候,为了降低规则的复杂度,需要拒绝特定域名的AAAA记录。
1.2 指令
禁止所有AAAA查询
iptables -A OUTPUT -p udp -d 8.8.8.8 --dport 53 -m string --algo bm --from 40 --hex-string '|001c|' -j DROP
禁止特定域名的AAAA查询
iptables -A INPUT -i eth0 -p udp --dport 53 -m string --hex-string "|09|proxypipe|03|net" --algo bm -j DROP
iptables -A INPUT -i eth0 -p udp --dport 53 -m string --hex-string "|06|kitten|02|ru" --algo bm -j DROP
iptables -A INPUT -i eth0 -p udp --dport 53 -m string --hex-string "|03|www|07|puppies|04|woof" --algo bm -j DROP
- 过滤DNS返回的特定IP
2.1 先把要屏蔽的IP转化成netmask
8.7.198.45 转化成 08 07 C6 2D
4.36.66.178 转化成 04 24 42 B2
2.2 利用iptables进行匹配,丢包
iptables -t mangle -I PREROUTING -p udp --sport 53 -m string --algo bm --hex-string "|042442b2|" --from 60 --to 180 -j DROP
iptables -t mangle -I PREROUTING -p udp --sport 53 -m string --algo bm --hex-string "|0807c62d|" --from 60 --to 180 -j DROP
上面这个是用string进行匹配,也可以使用u32进行匹配,效率更高
iptables -t mangle -I PREROUTING -p udp --sport 53 -m u32 --u32 "0&0x0F000000=0x05000000 && 22&0xFFFF@16=0x042442b2,0x0807c62d" -j DROP
2.3 更多详情参考https://gist.github.com/wen-long/9580811
Comments