如何阻止来自多个 dns 拒绝回复的目标 ip iptables

Soa*_*bTI 0 domain-name-system iptables

如何通过iptables阻止从bind发送到相同IP地址的拒绝数据包序列?

我想过使用字符串扩展来寻找“拒绝”。这会保护 dns 免受 DoS 攻击吗?

我的尝试:

iptables -A INPUT -p udp -m udp --sport 53 -m string --string "Refused" --algo bm -m recent --set --name block-dns --rsource
iptables -A INPUT -p udp -m udp --sport 53 -m string --string "Refused" --algo bm -m recent --rcheck --seconds 10 --hitcount 1 --name block-dns --rsource -j DROP
Run Code Online (Sandbox Code Playgroud)

HBr*_*ijn 6

我不太明白您要实现的目标,但它失败的原因很简单,因为 DNS 响应实际上并不包含 string REFUSED

RFC 1035定义了一个响应标头,其中在该标头中将 4 位字段设置为RCODE; 响应代码,其中的值5代表“拒绝”

4.1.1. Header section format

The header contains the following fields:

                                1  1  1  1  1  1
  0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                      ID                       |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|QR|   Opcode  |AA|TC|RD|RA|   Z    |   RCODE   |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                    QDCOUNT                    |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                    ANCOUNT                    |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                    NSCOUNT                    |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                    ARCOUNT                    |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
Run Code Online (Sandbox Code Playgroud)

RCODE 5- 出于策略原因,名称服务器拒绝执行指定的操作。例如,名称服务器可能不希望向特定请求者提供信息,或者名称服务器可能不希望对特定数据执行特定操作(例如,区域传输)。