无法使用WAN IP地址连接到SSH服务器

塔纳托斯

我在NAT路由器后面有一个SSH服务器。与SSH服务器在同一(NAT)网络上的计算机只能使用LAN IP而不是WAN IP连接到SSH服务器。为什么?

我的网络如下所示:

(the Internet, via Comcast)
      |
      | (cable line)
  comcast modem. ← External IP of a.b.c.d,
      |            internal IP of 10.1.10.1 on 10.1.10.0/24
      |
      |
   box running sshd  (10.1.10.201)

我在执行NAT的Comcast路由器后面运行SSH服务。使用上面获得的IP地址,我可以ssh me@«that IP»在Internet上的任何地方运行,并且可以获得SSH服务。如果在路由器内部的10.1.10.0/24网络中运行相同的命令,则连接将超时。

Comcast路由器设置为在标准端口上将端口转发到SSH机器。

  • comcast路由器在内部和外部IP上都响应ping。
  • 运行中的盒子可以sshdping通

该设备是 一块垃圾 SMC Networks SMCD3G。

sshd在尝试ssh 10.1.10.201提供正常外观的流量的同时,在计算机上执行连线操作尝试使用ssh a.b.c.d以下内容:

Source       Destination  Info
10.1.10.11   10.1.10.201  39946 > ssh [SYN] Seq=0 Win=14600 Len=0 MSS=1460
10.1.10.201  10.1.10.11   ssh > 39946 [SYN, ACK] Seq=0 Ack=1 Win=5792 Len=0
10.1.10.11   10.1.10.201  39946 > ssh [RST] Seq=1 Win=0 Len=0

10.1.10.11     10.1.10.201  39946 > ssh [SYN] Seq=0 Win=14600 Len=0 MSS=1460
10.1.10.201  10.1.10.11   [TCP Previous segment lost] ssh > 39946 [SYN, ACK] Seq=46941561
10.1.10.11   10.1.10.201  39946 > ssh [RST] Seq=1 Win=0 Len=0

(the last three lines repeat)

数据包似乎到达了那里,但是连接机器正在发送RST。为什么?

从客户端(运行SSH的计算机)来看,稍后的尝试如下所示:

Source       Destination  Info
10.1.10.11   a.b.c.d      40212 > ssh [SYN] Seq=0 Win=14600 Len=0 MSS=1460
10.1.10.201  10.1.10.11   ssh > 40212 [SYN, ACK] Seq=0 Ack=1 Win=5792 Len=0 MSS=1460
10.1.10.11   10.1.10.201  40212 > ssh [RST] Seq=1 Win=0 Len=0

10.1.10.11   a.b.c.d      [TCP Retransmission] 40212 > ssh [SYN] Seq=0 Win=14600 Len=0 MSS=1460
10.1.10.201  10.1.10.11   [TCP Previous segment not captured] ssh > 40212 [SYN, ACK] Seq=15635206
10.1.10.11   10.1.10.201  40212 > ssh [RST] Seq=1 Win=0 Len = 0

(the last three lines repeat)

唯一引人注意的是,我不断收到“未捕获上一个段”(不是吗?似乎就在那儿),并且来自客户端的序列号确实是确定性的。(他们不应该从一个随机点开始,然后从那里开始递增吗?)

里克

就像我在评论中说的那样。为了能够给你局域网内使用公共IP,您需要一种叫做NAT Loopback又称NAT hairpinningNAT reflection

你可以在这里阅读

据我在互联网上可以找到的... uuuh ...“ SMC Networks SMCD3G”不支持“ NAT Loopback”。

您有两种选择:

  1. 您可以10.1.10.201 fake_or_real_hostname在主机文件中添加一行
    您可以像一样进行连接ssh me@fake_or_real_hostname

  2. 您可以运行自己的本地DNS服务器。是一些解释。

通过运行递归到非本地域的OpenDNS的我自己的本地DNS服务器,并创建具有本地DNS A和PTR记录的区域来将我的外部主机名解析为该主机的LAN IP,我解决了您遇到的相同问题。


在这两种情况下,最好使用主机名代替ip。如果您的公共IP变化很大,则可以使用动态主机名服务来获取主机名(例如myname.dyndns.org)。也更容易记住。如果您选择选项1,则可以在主机文件中添加此名称。

其中一些是:
DynDNS
FreeDNS
ZoneEdit
No-Ip

我的调制解调器可以选择自动向这些服务注册IP更改。还有一些公用事业公司可以在您更改公共IP时更新它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用具有IP地址的其余客户端连接到Elasticsearch服务器

SignalR:无法使用完整的IP地址连接到http:// localhost:8080自托管服务器

使用SSH Tunel时无法通过套接字错误连接到本地MySQL服务器

docker中的wget(或任何连接)无法连接到服务器自己的IP地址

ssh无法连接到PHP中的git服务器

无法通过SSH连接到服务器

使用SSH.NET连接到SFTP服务器时出现“ SocketException:无法解析主机”

Ionic无法连接到服务器

paramiko无法连接到ssh服务器

使用SSH连接到服务器上的Git

无法使用公共IP连接到Node JS服务器

无法连接到PostgreSQL服务器

无法通过(IP或域名)连接到MySQL服务器

OperationalError:无法连接到服务器:端口5432上的权限拒绝tTCP / IP连接?

无法使用WAN IP地址连接到服务器。

如何仅使用其IP连接到服务器?

无法从MacOS连接到SSH服务器

无法在Ubuntu服务器上使用静态IP连接到wifi

对于移动应用程序,哪个更好,使用域名连接到服务器或IP地址?

连接到VPN,无法SSH到服务器

ssh无法连接到VPN中的服务器

SSH连接到XCP-ng服务器时,即使使用单独的IP,也连接到虚拟机管理程序而不是VM

几个特殊的IP使用ssh连接到服务器

如何使用其 IP 地址从 Web 浏览器连接到 python 套接字服务器?

无法连接到在 WSL 中运行的 ssh 服务器

使用公网 IP 地址通过 Internet 连接到服务器的稳定性?

无法连接到 ssh 服务器

无法在树莓派 4 上使用 SSH 连接到 Ubuntu 服务器 (20.04)

无法使用 SSH 连接到路由器后面的 Ubuntu 服务器