为什么通过 IPtables 对同一服务器上的第二个 DNS 解析器进行的端口重定向不起作用?

为什么通过 IPtables 对同一服务器上的第二个 DNS 解析器进行的端口重定向不起作用?

我有一台 Raspberry Pi,它运行 Bind9 作为本地区域的权威 DNS 服务器。所有其他 DNS 请求都会转发到公共 DNS 服务器。因此,Bind9 正在监听53地址 处的端口192.168.1.254

现在我想在这个 Raspberry Pi 上安装 Unbound 以提供“DNS over TLS”。因为您不能让两个不同的解析器监听同一个端口 ( 53),所以我认为我可以使用第二个 IP 地址和端口转发来解决这个问题。

因此,我将 unbound 配置为监听192.168.1.2:1053。对此端口和地址的 DNS 查询可以正确响应。通过 IPtables,我安装了以下规则:

iptables -t nat -A PREROUTING -p udp --dst 192.168.1.2 --dport 53 -j REDIRECT --to-ports 1053
iptables -t nat -A PREROUTING -p tcp --dst 192.168.1.2 --dport 53 -j REDIRECT --to-ports 1053

现在,由于客户端超时,对192.168.1.2和端口的 DNS 查询未得到答复。53

使用 IPtables,我可以确定规则已正确应用,但我没有得到答案。为什么?

答案1

我解决了这个问题:在我上面描述的情况下,简单的端口转发是不够的。下面的方法可以解决问题:

iptables -t nat -A PREROUTING -p udp --dport 53 --dst 192.168.1.2 -j DNAT --to-destination 192.168.1.2:1053
iptables -t nat -A PREROUTING -p tcp --dport 53 --dst 192.168.1.2 -j DNAT --to-destination 192.168.1.2:1053

也许还有其他解决方案,但是这个对我来说很有效。

相关内容