如何覆盖nat网关中的dns服务器(iptables)

如何覆盖nat网关中的dns服务器(iptables)

我有一个运行 openvpn 的 Ubuntu 服务器,并且 iptables 用于通过 vpn 服务器推送所有传入流量。 IP 表配置非常基本,是通过以下一系列命令生成的:

sudo iptables --flush
sudo iptables --table nat --flush
sudo iptables --delete-chain
sudo iptables --table nat --delete-chain
sudo iptables --table nat --append POSTROUTING --out-interface tun0 -j MASQUERADE
sudo iptables --append FORWARD --in-interface eth0 -j ACCEPT

我一直在尝试通过添加以下两行来重写流量以强制使用特定的 dns 服务器:

sudo iptables --table nat --append PREROUTING -i eth0 -p tcp --sport 53 -j DNAT --to-destination 146.148.119.121:53
sudo iptables --table nat --append PREROUTING -i eth0 -p udp --sport 53 -j DNAT --to-destination 146.148.119.121:53

nslookup www.netflix.com但它没有像我希望的那样工作(和的输出nslookup www.netflix.com 8.8.8.8不同)。

对于如何实现这一目标有什么建议吗?

答案1

--sport 53使用--dport 53

答案2

他们都说他们是权威回应吗?

Netflix 将使用负载平衡,因此您将被定向到最近且不繁忙的任何服务器。但防火墙规则与使用什么 DNS 服务无关,仅阻止或允许它们进行通信的端口。

您用于查找名称的 dns 服务位于该/etc/resolve.conf文件中。无论您在哪个网络上请求地址,它都会绕过互联网到达该主机以查找名称。当您使用 dhcpc 时,该文件会更新,dns 服务器会与您的 IP 号码和网关地址一起发送。您需要编辑脚本以阻止它使用发送给您的脚本。如果您知道要使用的文件,请将其放入文件中并关闭写入位,这样如果您找不到更新它的脚本,则无法更改它。系统日志可能会显示哪些脚本在写入文件时失败。不要忘记刷新表以清除任何旧地址。

我总是只运行自己的命名服务,以便更轻松地与我的机器对话。我的 dhcpd 为​​他们提供 IP、我的 DNS 服务器和网关盒。

相关内容