我正在尝试在我的华硕路由器上设置端口转发,这样我就可以通过互联网通过 SSH 连接到 LAN 的一台设备。
由于我的互联网提供商不提供静态 IP,我使用 no-ip.com 设置了 DDNS - 我在路由器的 DDNS 设置中使用用户名和密码配置了提供的主机名。当我查看 no-ip.com 仪表板时,我可以看到目标正确显示为我的路由器的公共 IP(格式为 100.100.xxx.xx,与我在路由器配置页面中看到的 IP 相匹配)。
在路由器的端口转发配置中,我将其设置为在端口 500 上监听 UDP 和 TCP,并将连接转发到我想要在端口 22 上通过 SSH 连接到的本地设备的 IP。我在目标设备上设置了一个 SSH 服务器(监听端口 22),并在设备防火墙中为端口 22 添加了例外。
现在,当我尝试向设备发送 SHH(使用命令)时,如果我从连接到同一 LAN 的另一台设备尝试,则连接会成功。但是,如果我启用该设备上使用的 VPN 服务,或者尝试从连接到完全不同网络的设备执行命令,则连接会超时。同样,如果我尝试在 Windows 设备上从 PowerShell 运行命令,则 ping 会以与 SSH 连接相同的方式失败/成功。ssh [email protected] -p 500
Test-NetConnection noiphostname.ddns.net
有人能帮助我解决正在发生的事情吗?
答案1
当我查看 no-ip.com 仪表板时,我可以看到目标正确显示为我的路由器的公共 IP(格式为 100.100.xxx.xx,与我在路由器配置页面中看到的 IP 匹配)。
100.100.x.x
不幸的是不是公共 IP 地址。它属于为中央国家机关事务管理局使用 – 即在您的路由器之上,在 ISP 级别完成另一层 NAT。
换句话说,“没有静态 IP”并不一定意味着替代方案是动态 IP 地址;它也可能意味着您根本没有公共 IP 地址。
在路由器的设置页面查找你的 IP 是正确的做法,但你也应该比较的它与网站报告的 IP 相同。在你的情况下,它们会有所不同,表示 CGNAT。
在这种情况下,端口转发将不起作用,因为它还需要在 ISP 的 CGNAT 级别上进行配置。请改用 VPN 隧道进行入站连接。(有更适合此目的的 VPN 程序。)