我有一台 Ubuntu 18.04 服务器,它接受来自 LAN 上另一台 PC 的 SSH 和 HTTP 请求,但无法从我的 Comcast 网关的另一端访问。
我有一台 Windows 10 PC 通过以太网物理连接到与服务器相同的 Comcast 网关,并且在 Windows 10 PC 上我可以使用 Putty、Filezilla 和 Chrome(在 Web 浏览器中使用 IP 地址或 DNS 域名)来访问服务器和服务器上的网站。在这种情况下,通过 LAN,Windows 10 PC 上的浏览器甚至会重定向到 HTTPS!但这都是骗局!使用我的手机(使用 Verizon 网络且未连接到 LAN WiFi),我无法使用 JuiceSSH 或使用 Chrome 中的 IP 地址或域名访问服务器。 DHCP 或静态 IP 设置对 LAN 外部的访问没有影响。在服务器上使用 DHCP,我仍然只能从 LAN 中的另一台计算机访问 IP 地址。
我已经禁用了 UFW。我已禁用康卡斯特网关防火墙。
可能出什么问题了?我如何诊断问题?
答案1
听起来网络地址转换(或简称 NAT)可能正在生效。
服务器的 IP 地址是否在这些范围之一内?
- 10.0.0.0 .. 10.255.255.255
- 172.16.0.0 .. 172.31.255.255
- 192.168.0.0 .. 192.168.255.255
- 100.64.0.0 .. 100.127.255.255
如果是这样,那么您就处于 NAT 后面:这意味着您可以很好地建立传出连接,但是如果不执行一些额外的步骤,来自 Internet 的传入连接将无法找到到达您服务器的路径。
IP 地址的数量是有限的,并且不足以让所有互联网用户拥有自己的公共全球可路由 IP 地址。这就是服务提供商通常实施 NAT 的原因,以进一步扩展其分配的地址范围。 (IP 地址的稀缺只会变得更糟,这就是 IPv6 慢慢变得越来越普遍的原因。)
如果 IP 地址在我列出的前三个范围之一内,则 NAT 可能由您的 Comcast 网关实现,并且您可以将其关闭,以便网络中的每个系统都获得单独的公共 IP 地址。 (这也意味着您的所有系统都将受到互联网上漫游的蠕虫和其他恶意软件的随机探测和攻击,因此,如果您走这条路,请确保使所有系统保持最新!)
或者,您也许可以配置转发端口在 Comcast 网关中:基本上,您的网关拥有一个公共 IP 地址,该地址在连接到您的 Comcast 网关的所有系统之间共享。使用网关上的设置,您应该能够定义诸如“从任何地方到 TCP 端口 80(共享公共 IP)的传入连接应路由到端口 80”之类的规则。这本地网络中的 IP 地址”以允许传入 HTTP 连接工作,或类似地 TCP 端口 22 以使 SSH 工作。如果您在网关中启用了 UPnP 和/或 NAT-PMP,则某些软件(或设备)将能够自动请求临时端口转发,无需您手动配置。
我列出的第四个 IP 地址范围尤其不幸:它是在RFC 6598适用于运营商级 NAT。它最常用于移动数据订阅:在这种情况下,NAT 在服务提供商的系统内执行,并且单个订阅者无法对其进行配置,因此您根本无法使用此类订阅来处理任何传入连接。
答案2
除非您有公共 IP 范围(极不可能),否则您的互联网连接将使用 NAT。内部地址无法从外部访问(考虑到广泛使用的桌面操作系统的安全性非常薄弱,这基本上是一件好事)。如果您想向互联网公开服务,您需要在路由器中设置端口转发。