编辑:根据下面的答案,问题是错误的。问题不是由于端口转发,而是首先尝试通过我们的公共 IP 访问本地网络上的服务器。看来您只能使用支持NAT 环回(或“发夹”)的路由器来执行此操作,这是一个非常模糊的功能,通常很难确定您是否拥有它。
这篇 MikroTik wiki 文章帮助我理解了这个问题(尽管我无法证明它的准确性......)
我有一个个人网站,它托管在我放在鞋柜里的服务器上。我已将我的域名配置为指向我的家庭网络的公共 IP 地址,并在路由器上设置了端口转发,以便将请求转发到服务器。
一切都按预期工作,除非我在家里的 Wi-Fi 上。也就是说,当我在朋友家或连接到我的移动热点时,我可以在浏览器中访问 https://<my-domain>.com,它工作正常。我可以ssh <my-domain>.com
,而且效果也很好。我什ssh <my-public-ip-address>
至可以,这也有效。
但是当我在家里的 Wi-Fi 上时,它根本不起作用。网页只是继续尝试加载,直到超时(没有 DNS 错误)。与 ssh 相同。我想最大的谜团是它ssh <my-public-ip-address>
不起作用(虽然很自然,但ssh <my-server's-LAN-ip-address>
工作正常),这让我相信路由器没有对来自本地网络的请求进行端口转发。
关于如何更好地诊断问题的任何提示?我已经和我的 ISP (Spectrum) 打了十几次电话,但他们没有给我一个明确的答案。当我尝试 ssh 到我的公共 IP 地址时,有什么方法可以确定将我的超时请求发送到哪个设备?或者有什么直接的解决方案?