我在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机器。
sshd
ping通该设备是 一块垃圾 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 hairpinning
或NAT reflection
。
你可以在这里阅读
据我在互联网上可以找到的... uuuh ...“ SMC Networks SMCD3G”不支持“ NAT Loopback”。
您有两种选择:
您可以10.1.10.201 fake_or_real_hostname
在主机文件中添加一行。
您可以像一样进行连接ssh me@fake_or_real_hostname
。
您可以运行自己的本地DNS服务器。这是一些解释。
通过运行递归到非本地域的OpenDNS的我自己的本地DNS服务器,并创建具有本地DNS A和PTR记录的区域来将我的外部主机名解析为该主机的LAN IP,我解决了您遇到的相同问题。
在这两种情况下,最好使用主机名代替ip。如果您的公共IP变化很大,则可以使用动态主机名服务来获取主机名(例如myname.dyndns.org)。也更容易记住。如果您选择选项1,则可以在主机文件中添加此名称。
其中一些是:
DynDNS
FreeDNS
ZoneEdit
No-Ip
我的调制解调器可以选择自动向这些服务注册IP更改。还有一些公用事业公司可以在您更改公共IP时更新它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句