尽管 80 和 443 端口已打开,但无法从外部网络访问网站

尽管 80 和 443 端口已打开,但无法从外部网络访问网站

我在家里的电脑上托管一个 Express 服务器,主要用于开发,但也是为了与我的朋友一起玩。

几天前,我的 ISP 将我使用了约 3 年的静态 IPv4 地址更改为动态 IPv6 地址。

v6 并没有提议改变 IP 格式,但还不止于此。如果路由器的防火墙和本地计算机的防火墙允许,则连接到本地网络的每个设备都可以从外部访问。在 v6 中,端口转发和 NAT 不再存在。这就是我的理解。

考虑到这一点,我对路由器进行了配置,使其允许任何源 IP、任何目标 IP、任何源端口、TCP 上的目标端口 80 和 443。

我还在 Windows 防火墙中添加了一条规则,以允许端口 80 和 443 上的入站数据。

网络服务器运行良好仅有的来自本地网络,因为遗憾的是我无法从外部访问它。

我尝试了几件事:

  • 完全禁用 Windows 防火墙
  • 在我的 Raspberry Pi 上尝试一切;我已经为 v4 和 v6 配置了 UFW 规则,我甚至禁用了它以确保它不会阻止数据包。
  • 用过的看看 80 和 443 是否开放,它们是
  • 将 MTU 大小从 1500 更改为 1492

端口已打开但仍然收到地址无法访问的错误,这确实让我很烦恼。这是怎么回事?

当我使用 v4 时,我可以轻松完成此操作。我想我错过了一些有关 v6 工作原理的知识。

答案1

IPv6 地址非常“静态”,因为它们通常由第一部分的网络部分、中间部分(通常不会改变)和最后一部分(您的 mac 地址)组成。

第一步是检查你的路由器,它是否有防火墙(IPv6)并且是否过滤入站数据包

话虽如此,你不会说得太详细。你试过吗?netstat我在 Linux 上通常添加-ntl(-n 表示不解析 IP,-t 表示仅 tcp,-l 表示仅监听)我相信 Windows 上会有等效项。你的 Web 服务器是在监听 IPv6 还是仅监听 IPv4?通常0.0.0.0:80会指示它仅是 IPv4,其中:::80将是 IPv6 或双栈。

如果您浏览到http://[::1]:80(IPv6 环回),您表明它在本地网络上运行,但您并未声明您使用了 IPv6 ip 地址,会发生什么情况。

答案2

IPv6 和 IPv4 不兼容,而且由于我只有 IPv6,所以任何拥有 IPv4 的人都无法访问我的网站。

当一些在线服务告诉我我的网站正在运行(请求显示在日志中)而其他服务却说没有运行的时候,我明白了;因为有些支持 v6,有些则不支持。

此外,错误是 DNS_PROBE_FINISHED_NXDOMAIN。如果我更注意它,我会注意到它无法检索有效的 IP,因为唯一的 DNS 记录是 AAAA,而具有 IPv4 的客户端没有可检索的 A 记录。

最后,我将购买一个具有 IPv4 和 IPv6 的非常便宜的 VPS,并将其用作反向代理将 IPv4 数据包转换为 IPv6。

相关内容