如何在 Ubuntu 18.04 服务器上使用 iptables 允许 DNS 查找

如何在 Ubuntu 18.04 服务器上使用 iptables 允许 DNS 查找

我正在使用 Ubuntu 18.04 Server 并尝试制作路由器。当我执行以下 iptables 脚本(在 Ubuntu 16.04 上完美运行)时,命令行中的 DNS 查找停止工作。我 ping 了 IP 地址,但没有 DNS 名称。显然有些东西与 16.04 相比有所变化,但不知道是什么。

编辑:我开始逐行执行并确定罪魁祸首是这样的:

iptables -t nat -A POSTROUTING -j MASQUERADE

但还是不知道为什么(它适用于以前的 Ubuntu 版本 - 16.04、14.04、12.04)

ping 输出为:

# ping google.com
ping: google.com: Temporary failure in name resolution

如果我重新启动而不使用这个脚本,它就会起作用:

# ping google.com
PING google.com (172.217.169.142) 56(84) bytes of data.
64 bytes from sof02s32-in-f14.1e100.net (172.217.169.142): icmp_seq=1 ttl=57 time=2.92 ms

答案1

好的,我来回答我自己的问题。解决方法是在 iptables 行中添加一个外部接口,因此现在看起来像这样:

ExtIF=eno1 ##Change this to the name of your external (Internet) interface    
iptables -t nat -A POSTROUTING -o $ExtIF -j MASQUERADE

也许一些 iptables 专家能够在评论中回答为什么 DNS 查找仅在 Ubuntu 18.04 中从本地主机失败。

相关内容