如何通过 ssh 查找端口是否被路由器阻止

如何通过 ssh 查找端口是否被路由器阻止

我在消费级 NAT(家庭路由器)后面部署了多台服务器。我的客户端定期通过端口 3000 连接到这些服务器,我在防火墙上为端口 3000 和端口 22 打了一个洞,用于 ssh 调试。

有时客户端无法连接到一个或多个服务器。我该如何调试这种情况?我想知道失败是由于防火墙阻止我的客户端造成的,还是服务器/客户端代码中的错误造成的。

答案1

您应该使用 netcat,它是一个 Linux 命令行实用程序,允许在远程机器上动态创建服务器或客户端,并在您的机器上创建相应的服务器或客户端,然后您从一端发送消息,如果另一端收到消息,则端口是打开的。 https://www.digitalocean.com/community/tutorials/how-to-use-netcat-to-establish-and-test-tcp-and-udp-connections-on-a-vps

答案2

不确定是否真正了解你的情况。

但我心里想着三件事。

首先,如果您的所有计算机都位于同一网络上的路由器后面,则不会阻止任何内容(路由器阻止来自外部的端口,而不是来自内部的端口)。

其次,如果您可以使用 SSH,并且您的应用程序正在使用端口 3333,那么您的 SSH 服务器可能没有监听端口 3333。SSH 默认使用端口 22,如果您想使用端口 3333 进行 ssh,您需要将所有机器配置为使用该端口而不是 22。

最后,也许您的防火墙只是阻止了该端口,请查找 iptables 文档以打开该端口(这是许多发行版使用的防火墙)。

相关内容