我正在运行一个简单的服务器,python -m SimpleHTTPServer
并配置了端口转发。我也使用了 VPN。
当我尝试myexternalIP_ISP:myport
从同一台机器进行联系时,我可以看到启动服务器的文件夹,并SimpleHTTPServer
显示来自我的 vpn 服务提供商 IP 的连接(即,在一个遥远的国家/地区设置的外部 IP,与上面的 myexternalIP_ISP 不同)。
当我尝试通过手机连接到我的服务器时(myexternalIP_ISP:myport
没有 wifi,根据 whatsmyip,相同的 vpn 和相同的 vpn IP),出现错误connection has timed out
。
我的简单服务器也没有显示任何连接尝试。
有办法查明发生了什么吗?为什么我无法连接?
我的路由器是 TP-Link Archer D7,我的手机是运行 cyanogenmod 13 的 Android,我的服务器运行 Debian 8、python 2.7。
更新
我又做了两次试验:
- 启用路由器的远程管理 - 我能够通过手机的 4g 连接和 vpn 连接到路由器
- 运行 calibre 图书软件服务器 - 与 python 服务器相同:我可以使用本地计算机通过 vpn 使用外部 IP 进行连接,但即使使用相同的 vpn,也无法通过手机的 4g 连接进行连接
我觉得这真的很奇怪...
答案1
您遇到的困难是路由问题 - 这不是您的错 - 而且很难修复。当您尝试从 LAN 访问外部站点时,您的路由器无法正确拦截请求、重写数据包并将其发送到正确的接口(数据包的发件人地址将不正确)- 因此您无法从 LAN 通过其外部 IP 地址访问此站点。
如果您开始使用 DNS,解决方法(虽然并不容易)是使用拆分 DNS,这样您的 LAN 就会获得服务器的 LAN IP,而世界其他地方则会获得 WAN IP。有趣的是运行 2 个名称服务器。