![iptables:无法删除包含特定 IP 地址的传入 DNS 响应](https://linux22.com/image/781385/iptables%EF%BC%9A%E6%97%A0%E6%B3%95%E5%88%A0%E9%99%A4%E5%8C%85%E5%90%AB%E7%89%B9%E5%AE%9A%20IP%20%E5%9C%B0%E5%9D%80%E7%9A%84%E4%BC%A0%E5%85%A5%20DNS%20%E5%93%8D%E5%BA%94.png)
我想删除包含 的传入 DNS 响应10.10.34.35
。我该怎么做?
我尝试过这样的方法:
iptables -I INPUT -m udp -p udp --sport 53 -m string --algo kmp --hex-string '|31 30 02 31 30 02 33 34 02 33 35|' -j DROP
但它不会丢弃它们,我仍然会收到它们。然而,简单地这样做会iptables -I INPUT -m udp -p udp --sport 53 -j DROP
阻止所有来自端口 53 的消息,但我想选择其中一部分包含10.10.34.35
响应的消息。
答案1
首先,DNS使用UDP和TCP。
其次,A记录的线路表示在RFC 1035中定义如下:
3.4.1. A RDATA format
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ADDRESS |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
where:
ADDRESS A 32 bit Internet address.
因此,IPv4 地址不会像您尝试匹配时那样被编码为字符串,而是被编码为 32 位整数,因此值为 10、10、34、35