![为什么通过 IPtables 对同一服务器上的第二个 DNS 解析器进行的端口重定向不起作用?](https://linux22.com/image/1593832/%E4%B8%BA%E4%BB%80%E4%B9%88%E9%80%9A%E8%BF%87%20IPtables%20%E5%AF%B9%E5%90%8C%E4%B8%80%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84%E7%AC%AC%E4%BA%8C%E4%B8%AA%20DNS%20%E8%A7%A3%E6%9E%90%E5%99%A8%E8%BF%9B%E8%A1%8C%E7%9A%84%E7%AB%AF%E5%8F%A3%E9%87%8D%E5%AE%9A%E5%90%91%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%EF%BC%9F.png)
我有一台 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
也许还有其他解决方案,但是这个对我来说很有效。