我在Planet VRT-311S VPN路由器上设置了一个静态IP,端口22(UDP和TCP)被转发到LAN上的Ubuntu服务器。 我仍然无法连接到Ubuntu服务器。
我正在外部计算机上使用以下命令:
ssh -p 22 <router's ip address>
我仍然无法连接到Ubuntu服务器。 我怎样才能解决这个问题?
具有公共IP地址的路由设备需要将端口22的stream量转发到防火墙后面的Ubuntu服务器。 如果你告诉我们是什么样的防火墙/边缘设备,我们可以帮助你指出一个更具体的方向。
编辑:你需要检查stream量是否真的被发送到你的Ubuntu服务器。 运行tcpdump来查看SSHstream量是否正在服务器上。 如果不是,你仍然有一个边缘路由器的问题。 如果是的话,那么你可以开始专注于Ubuntu服务器。 一旦你弄清楚了,我们可以帮助你更多。
编辑2:如果您为端口22设置端口转发,则路由器将处理针对端口22的所有stream量的翻译指向公共IP地址,并立即将stream量发送到Ubuntu服务器。 然后,Ubuntu服务器就会看到来自路由器的stream量,并将对端口22stream量的任何响应发送到路由器,然后将其转发给您。 路由器处理所有的stream量转换,通过维护一个谁正在与哪个端口进行通信的表以及为每个通信者分配唯一的会话。 这样,即使是多人也可以通过ssh使用外部IP地址与Ubuntu服务器通信。
例如:如果您家中有一个外部IP地址为1.1.1.1,而您的办公室路由器的外部IP地址为2.2.2.2,并且Ubuntu服务器的本地IP为192.168.1.10(位于2.2.2.2路由器后面),则这样的交通stream量:
tdpdump可能是一个矫枉过正的地方。 只要从外部telnet <yourip> 22 ,在你的ubuntu服务器上telnet localhost 22 。 SSH服务器应该立即响应“SSH-2.0-OpenSSH_5.8p1-hpn13v10”。
如果从本地主机telnet不起作用,你有你的SSH服务器的问题。 如果从本地telnet工作,而不是从外部,这可能是路由器相关的问题。 如果两者都有效,这可能是你的SSH客户端问题。
还有一个猜测:检查服务器上的防火墙规则。 你可以通过运行/sbin/iptables -L打印出来。
请更新您的答案与远程login诊断的结果和您的防火墙规则列表,所以我们将能够给你更好的build议。