使用 iptables 重定向 Unifi UDM-Pro 上的 DNS 服务器 IP

使用 iptables 重定向 Unifi UDM-Pro 上的 DNS 服务器 IP

我正在使用 Unifi UDM Pro 作为 2 个 VLAN 的网关:

  • 主 LAN(接口:br0,子网192.168.1.1/24:)
  • IoT 设备 VLAN(接口:br3,子网192.168.3.1/24:)

每个都有自己的本地 DNS(Adguard Home)服务器(192.168.1.52192.168.3.52)。对于每个子网,我想防止客户端绕过通过 DHCP 分配的本地 DNS 服务器。为了做到这一点,我通过 SSH 进入 UDM Pro 并执行以下命令:


iptables -t nat -A PREROUTING -i br0 ! -s 192.168.1.52 ! -d 192.168.1.52 -p tcp --dport 53 -j DNAT --to 192.168.1.52
iptables -t nat -A PREROUTING -i br0 ! -s 192.168.1.52 ! -d 192.168.1.52 -p udp --dport 53 -j DNAT --to 192.168.1.52

iptables -t nat -A PREROUTING -i br3 ! -s 192.168.3.52 ! -d 192.168.3.52 -p tcp --dport 53 -j DNAT --to 192.168.3.52
iptables -t nat -A PREROUTING -i br3 ! -s 192.168.3.52 ! -d 192.168.3.52 -p udp --dport 53 -j DNAT --to 192.168.3.52

iptables -t nat -A POSTROUTING -p tcp --dport 53 -j MASQUERADE
iptables -t nat -A POSTROUTING -p udp --dport 53 -j MASQUERADE

我使用两种主要方法测试这些:dig通过 WLAN 设备(例如 iPad):

使用该dig方法,我首先测试直接 DNS 查询,然后测试对 Google DNS 服务器的查询。我在 DNS 服务器的物理主机上运行这两个命令(它是通过 Debian 软件包成为每个 VLAN 的成员vlan):

  1. dig linux.org '@192.168.3.52' -b '192.168.3.52'
  2. dig linux.org '@8.8.8.8' -b '192.168.3.52'

上面的第一个命令运行正常。第二个命令让我超时。我希望第二个命令仍然有效,但需要通过路由192.168.3.52

如果我dig在主 LAN 上运行上述相同的命令,两者都可以正常工作,并且我可以在本地 DNS 服务器上看到这两个查询。

我不确定为什么 VLAN 3 在重定向情况下不起作用,但我的主 LAN 却起作用。有人能帮我理解为什么这不起作用并向我展示一个可行的解决方案吗?

相关内容