iptables:尝试阻止端口 53,但没有成功

iptables:尝试阻止端口 53,但没有成功

我正在摆弄 IP 表并试图执行以下操作:

我在同一个网络上有几台主机:192.168.1.0/24。DNS 服务器是 192.168.1.1。

我试图阻止所有主机发出任何 DNS 请求,无论是向 192.168.1.1 还是向互联网(即 8.8.8.8 Google DNS)发出。我尝试了以下操作:

iptables -A OUTPUT -d 192.168.1.1 -p udp --dport 53 -j DROP
iptables -A INPUT -d 192.168.1.1 -p udp --dport 53 -j DROP
iptables -A FORWARD -d 192.168.1.1 -p udp --dport 53 -j DROP
iptables -A OUTPUT -d 192.168.1.0/24 -p udp --dport 53 -j DROP
iptables -A INPUT -d 192.168.1.0/24 -p udp --dport 53 -j DROP
iptables -A FORWARD -d 192.168.1.0/24 -p udp --dport 53 -j DROP
iptables -A OUTPUT -d 192.168.1.1 -p tcp --dport 53 -j DROP
iptables -A INPUT -d 192.168.1.1 -p tcp --dport 53 -j DROP
iptables -A FORWARD -d 192.168.1.1 -p tcp --dport 53 -j DROP
iptables -A OUTPUT -d 192.168.1.0/24 -p tcp --dport 53 -j DROP
iptables -A INPUT -d 192.168.1.0/24 -p tcp --dport 53 -j DROP
iptables -A FORWARD -d 192.168.1.0/24 -p tcp --dport 53 -j DROP

但似乎都不起作用。有什么想法吗?

答案1

您只需要向OUTPUT表添加一条规则(如下所示)。

iptables -A OUTPUT -d 8.8.8.8 -p udp --dport 53 -j DROP

下面是一个示例,其中我尝试使用和不使用规则来解析我的域名以进行说明。

arul@cheetah:~$ dig +short selvans.net @8.8.8.8
76.185.134.208
arul@cheetah:~$ sudo iptables -F
arul@cheetah:~$ sudo iptables -A OUTPUT -d 8.8.8.8 -p udp --dport 53 -j DROP
arul@cheetah:~$ dig +short selvans.net @8.8.8.8
;; connection timed out; no servers could be reached
arul@cheetah:~$ sudo iptables -F
arul@cheetah:~$ dig +short selvans.net @8.8.8.8
76.185.134.208

答案2

如果 DNS 服务器和主机位于同一子网 (192.168.1.0/24),则数据包极不可能穿过您设置 IPtables 规则的机器。同一子网上的设备通常直接发送数据包,而无需使用路由器。

您需要在所有设备上设置 IPtables 输出规则,或者需要通过将客户端或 DNS 服务器放置在单独的子网上并将 iptables 机器置于其间来重构网络。

一旦数据包通过 iptables 机器,此规则就会起作用:

iptables -A FORWARD -d 192.168.1.1 -p udp --dport 53 -j DROP

或者您可以在每台客户端计算机上设置此规则:

iptables -A OUTPUT -d 192.168.1.1 -p udp --dport 53 -j DROP

相关内容