我有一个 FreeBSD DigitalOcean droplet,我在其中遵循本指南 确切地用于设置监狱。问题是我无法在监狱内获得可靠的网络连接。curl https://www.google.com/
当我尝试连接到服务器时,我遇到了大约 1 分钟的延迟:
在第二个星号之后,连接非常非常快地建立起来。ping
我得到了 100% 的数据包丢失,有时我无法解析主机名。它在执行一个命令时不起作用,但在我尝试下一个命令之前,它会在短暂的延迟后起作用。
我尝试查看 SSH 是否可靠地工作并且我似乎总是能够获得连接(当主机名查找工作时)。ssh -T [email protected]
我只在监狱中遇到这些问题,在主机上没有遇到。
答案1
嗯,除非你明确允许,否则你不能ping
从 jail 中退出。默认情况下是这样,因为它会引发安全问题。你可以允许 jail 退出ping
,但只有在你真的没有其他解决方案时才应该这样做。更多信息那里。
ping
现在,您可以用它host
来检查网络连接是否正常,而不是使用:
# host google.com
至于curl
问题:在 pf.conf 中,您应该为端口 http 启用 tcp 和 udp 输入和输出(如果需要,也可以启用 https),但也要为端口 dns 启用 udp。例如:
pass in on $ext_if proto { tcp, udp } from any to $ext_if port $webports
pass out on $ext_if proto { tcp, udp } from $ext_if to any port $webports
pass out on $ext_if proto udp from $ext_if to any port $dns_port
您应该在其中定义 webports 和 dns_port 以满足您的需要。
此外,当您按照指南操作时,您复制了主机的 /etc/resolv.conf。也许检查一下其中的内容,这取决于主机的配置,在某些情况下,它可能无法在 jail 中工作。
PS:至于 gethostbyname 失败,它写在你的标题中,但你的帖子中没有提到。这可能与 /etc/hosts 配置有关,但我不能再多说了。
答案2
问题出在 DigitalOcean 的网络中。Twitter 上的其他人也报告了同样的问题,并使用完全相同安装工作 100% 正常。