我正在尝试使用 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