我在 DigitalOcean 论坛上问过这个问题,但还没有收到任何回复。我有一个运行 Debian 8.1 x64 的 droplet,我正在尝试建立一个基本的 netcat 连接(我在本地和远程机器上都使用 nc.openbsd)。我通过 ssh 进入我的服务器并输入
nc -l -v 5555
然后回来
Listening on [0.0.0.0] (family 0, port 5555)
然后我进入本地机器并输入
nc -v [domain.com] 5555
并且从未听到任何回复。输入文本不会导致它在另一端出现。我已经在通过 LAN 连接的本地机器上尝试了这些确切的命令,并且它工作正常。此外,即使在监听端口时,nmap 扫描也会将端口返回为filtered
。
有人知道是什么原因造成的吗?在过去的 24 小时内,我一直在查看每个教程并搜索尽可能多的网站,但都没有找到。我猜这是一个简单的修复方法,我没有输入正确的搜索词。
答案1
原因是防火墙。防火墙位于您的 droplet 上或您本地机器周围(您可以在 LAN 内使用此端口并不意味着允许外部连接使用它)。您可以使用以下命令消除 Debian droplet 的防火墙:
iptables -I INPUT -p tcp --dport 5555 -j ACCEPT
iptables -I OUTPUT -p tcp --sport 5555 -j ACCEPT
这会为这个端口打开一个漏洞,使其忽略大多数其他 iptables 规则 - 具体来说,任何位于 INPUT 和 OUTPUT 过滤器链中非常可能存在的位置的规则。
或者如果 Debian 8.1 使用防火墙,请执行防火墙
如果端口不是 5555,例如常见的 IRC 或 torrent 端口等,则可能实际上在数据中心被阻止。不过,我不能说 DigitalOcean 是否这样做。