我正在尝试在运行 OpenWrt 的路由器上设置 pihole 作为域名解析器。
目前我正在运行这个 iptables 脚本来强制我的网络中的每个设备使用我的(pihole-)dns 服务器(至少尽可能):
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -t nat -A PREROUTING -i br0 ! -s 192.168.178.11 -p tcp --dport 53 -j DNAT --to 192.168.178.11:53
iptables -t nat -A PREROUTING -i br0 ! -s 192.168.178.11 -p udp --dport 53 -j DNAT --to 192.168.178.11:53
iptables -t nat -A PREROUTING -i br0 ! -s 192.168.178.11 -p tcp --dport 853 -j DNAT --to 192.168.178.11:853
iptables -t nat -A PREROUTING -i br0 ! -s 192.168.178.11 -p udp --dport 853 -j DNAT --to 192.168.178.11:853
iptables -t nat -A PREROUTING -i br0 ! -s 192.168.178.11 -p tcp --dport 5353 -j DNAT --to 192.168.178.11:5353
iptables -t nat -A PREROUTING -i br0 ! -s 192.168.178.11 -p udp --dport 5353 -j DNAT --to 192.168.178.11:5353
我最近遇到了一台机器故障192.168.178.11
,这让我重新考虑了我的设置,因为当机器故障时,我的整个网络都无法解析 DNS 请求。我想运行一组类似的 iptables 规则,将所有 DNS 请求转发到我的 pihole,但前提是目标不是169.239.202.202
,即 OpenNic DNS 服务器。
这个想法是作为第二个 DNS 服务器分发169.239.202.202
,并且如果该服务器是目的地,则不将端口 53/853/5353 请求重新路由到我的 pihole。基本上是“如果目标端口是 53 并且源不是 pihole,则将请求转发到 pihole,但仅有的如果目的地不是169.239.202.20
“
使用 iptables 可以实现吗?