当我在 ubuntu 服务器 20.04 中使用命令 [sudo iptables -t nat -A POSTROUTING -j MASQUERADE] 时,我失去了解析网站的能力

当我在 ubuntu 服务器 20.04 中使用命令 [sudo iptables -t nat -A POSTROUTING -j MASQUERADE] 时,我失去了解析网站的能力

我正在尝试使用 ubuntu 服务器制作路由器,用于课堂作业。我查看了许多指南,其中大多数都提到使用标题中的命令。没有该命令,我无法与路由器后面的任何东西(如 rdp 或 ssh)交互。但是,当输入命令时,当我尝试 [ping google.com] 时,它会停顿一会儿,然后告诉我“ping:google.com:名称解析暂时失败”。

我想知道如何做才能让流量像原始 iptable 命令那样通过它而不会丢失名称解析。

答案1

您肯定systemd-resolved在系统中使用了 DNS 缓存。可以通过验证是否/etc/resolv.conf包含以下条目来检查:

nameserver 127.0.0.53

当人们在界面上使用 MASQUERADE 时lo,这会产生混淆连接跟踪DNS 缓存的回复将无法正确返回。不要在lo接口上使用 MASQUERADE。

代替:

iptables -t nat -A POSTROUTING -j MASQUERADE

和:

iptables -t nat -A POSTROUTING ! -o lo -j MASQUERADE

相关内容