阻止除 1 台设备之外的 DNS 流量

阻止除 1 台设备之外的 DNS 流量

大家晚上好。我想阻止除 pihole (192.168.2.196) 之外的所有设备的出站 DNS 流量。

我认为以下 iptables 规则应该可以起作用,但是我对 iptables 不熟悉,所以我希望有人可以在我尝试之前帮助我,否则我会因为互联网无法再工作而让我的妻子生气。

iptables -A OUTBOUND -p UDP -s 192.168.2.196 --dport 53 -j ACCEPT
iptables -A OUTBOUND -p TCP -s 192.168.2.196 --dport 53 -j ACCEPT
iptables -A OUTBOUND -s 192.168.2.1/24 --dport 53 -j DROP

此外,某些设备(例如 Google home)被硬编码为使用 8.8.8.8 作为其 DNS,因此我在考虑这样的方法将它们重定向到 pihole?

iptables -A OUTBOUND -d 8.8.8.8/32 -p tcp -m tcp --dport 53 -j DNAT --to-destination 192.168.2.196
iptables -A OUTBOUND -d 8.8.8.8/32 -p udp -m udp --dport 53 -j DNAT --to-destination 192.168.2.196
iptables -A OUTBOUND -d 8.8.4.4/32 -p udp -m udp --dport 53 -j DNAT --to-destination 192.168.2.196
iptables -A OUTBOUND -d 8.8.4.4/32 -p tcp -m tcp --dport 53 -j DNAT --to-destination 192.168.2.196

有谁见过这些问题吗?

答案1

因此,我最终使用以下两个 iptables 输入将所有 DNS 流量重定向到我的 DNS 服务器,而不是直接阻止它。这允许使用硬编码 DNS 地址的设备仍能正常工作(尽管速度会慢一些)

iptables -t nat -A PREROUTING -i br0 -p udp ! --source 192.168.2.196 ! --destination 192.168.2.196 --dport 53 -j DNAT --to 192.168.2.196

iptables -t nat -A PREROUTING -i br0 -p tcp ! --source 192.168.2.196 ! --destination 192.168.2.196 --dport 53 -j DNAT --to 192.168.2.196

其中 192.168.2.196 是我的 DNS 服务器的 IP 地址。

相关内容