我正在运行一台连接到互联网的路由器的笔记本电脑。路由器的公共 IP 不是用于私有网络的 IP 之一(https://en.m.wikipedia.org/wiki/Private_network),并且我可以编辑路由器的虚拟服务器/NAT转发设置。
我已将路由器外部端口 1200 上收到的流量转发到我的笔记本电脑的私有 IP 地址(同一端口)。我有一个 cheroot (cherrypy) 服务器在端口 1200 上监听。
lsof 命令确认 cheroot 正在监听 1200,并使用正确的 python 文件进行初始化。
当我扫描路由器的私有 IP 地址(192.168.0.1)以查找开放端口时,1200 不是开放端口之一(根据 Bodos 的评论,这是可以预料到的,现在我明白了)。
我的路由器启用了 ipv4 和 ipv6 SPI 防火墙。
我已经向我的域名提供商添加了一条指向我的路由器公共 IP 的 A 记录,以及一条指向我的路由器外部端口 (1200) 的 SRV 记录。
但是我尝试访问的网站无法访问(服务器响应时间过长,无法访问网站)。我尝试使用https://canyouseeme.org当我访问路由器的公共 IP 时,查看端口 1200 是否打开,我收到连接超时响应。
附加细节,不确定是否相关:
- 然后我使用了一个 Python 端口扫描脚本,将我的笔记本电脑连接到热点,运行该脚本并检查路由器公共 IP 上的所有开放端口。没有开放任何端口。
- cheroot 服务器在本地私有网络上很好地运行我的应用程序。
- 我刚刚安装了 Nmap,迫不及待地想使用它。:-)
- 连接到路由器时,到路由器私有 IP 的跟踪路由按预期工作。但是,当我使用手机的 4g 热点时,从我的笔记本电脑到路由器公共 IP 的跟踪路由失败。
- 我尝试在关闭防火墙的情况下访问该网站,但没有帮助。
有人能帮助我理解我在这里遗漏了什么吗?
有没有办法在路由器上运行 netstat?感觉端口转发并没有真正生效,或者传入连接被阻止了。我该如何评估这些可能性?
更新:我的路由器位于另一个 ISP 路由器后面。路由器管理面板中的 IP 与我的公共 IP 不匹配。
我想就是这样了。现在必须要求 ISP 启用到我的路由器的端口转发?双重 NAT?除了 ngrok 之类的东西,没有其他解决方案了,对吧?
答案1
当我扫描路由器的私有 IP 地址(192.168.0.1)以查找开放端口时,1200 不是开放端口之一。
这完全正常。端口转发(又称目标 NAT)起作用了来自公共 WAN IP 地址。您需要使用路由器的公共 IP 地址从 LAN 外部尝试。另外,请确保您已配置笔记本电脑的本地防火墙以允许该连接。
如果一切都失败,那么要么是路由器的端口转发坏了,要么是路由器上的防火墙功能也需要您配置,要么是您的 ISP 阻止了传入连接。