我可以使用我的 IPv4 地址访问我的网站,但不能使用我的 IPv6 地址。为什么?

0 networking ipv6 webserver ipv4

我通过打开端口 80 以供防火墙传入并进行适当的端口转发,从而将我的个人 Web 服务器暴露给外部世界。然后我去 whatismyipaddress.com 获取我的外部 IP 地址以在 Internet Explorer 中进行测试。在 IE 地址文本框中使用 whatismyipaddress.com 给我的 IP 地址(似乎是 IPv6)导致 IE 使用该地址进行 Bing 搜索。我在关闭地址栏搜索的情况下尝试了 Firefox 中的地址,Firefox 给我“地址无效”。我花了很多时间来确保我的防火墙和端口转发设置是正确的,确实如此。无论我尝试什么,我都无法使用该地址访问我的 Web 服务器。然后我去了 canyouseeme.org,它报告了我的 IP 地址为 IPv4 地址。我很惊讶。我认为 IPv4 不再在 Internet 上使用。

为什么 whatismyipaddress.com 报告的 IPv6 地址在两个浏览器中都不起作用,而 IPv4 在这两个浏览器中都起作用?我认为 IPv4 是互联网上的历史。

td5*_*512 6

您的外部 IPv6 IP(看起来像 的 IP XXXX:XXXX:XXXX::)不起作用的原因是 IPv6 的工作方式。

以这个地址为例:2607:5600:52c:1::。这个地址是全局可路由的,实际上那个地址是我的。


现在我们有一个 IPv6 地址,我们想要连接,比如说…… port 1000

我们习惯看到的 URI 是这些:<protocol>://<host>[:<port>]/[<path>][#<hash>]这意味着对于 IPv6 站点,我们希望使用http://2607:5600:52c:1::/foo#bar. 这就是它变得有趣的地方。

我们总是可以这样做,2607:5600:52c:1::1000但实际上这会被透明地转化为2607:5600:052c:0000:0000:0000:1000问题,因为这意味着没有端口。这就是RFC3986发挥作用的地方。您需要第 3.2.2 节:主机

由 Internet 协议文本地址(版本 6 [RFC3513] 或更高版本)标识的主机通过将 IP 文本括在方括号(“[”和“]”)中来区分。这是 URI 语法中唯一允许使用方括号字符的地方。预计未来尚未定义的 IP 文字地址格式,实现可以使用可选版本标志来明确指示这种格式,而不是依赖于启发式确定。


好的。你已经告诉我原因了,那么我该如何解决呢?

简单的。根据 RFC3986,你需要使用这个符号:[IPv6-ADDRESS]这意味着在我们的例子中,你需要使用这个:http://[2607:5600:52c:1::]这将起作用。这也意味着我们可以通过使用连接到端口 1000[2607:5600:52c:1::]:1000