Domain-Name-System

iptables:無法丟棄包含特定 IP 地址的傳入 DNS 響應

  • October 25, 2022

我想刪除包含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作為響應。

首先,DNS 使用 UDPTCP。

其次,A 記錄的有線表示在 RFC 1035 中定義如下:

3.4.1. A RDATA format

   +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
   |                    ADDRESS                    |
   +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

where:

ADDRESS         A 32 bit Internet address.

因此,當您嘗試匹配時,IPv4 地址不會編碼為字元串,而是編碼為 32 位整數,因此值為 10、10、34、35

引用自:https://serverfault.com/questions/1113928