IPv6 网站在 IIS 8 中无法运行

IPv6 网站在 IIS 8 中无法运行

我对 IPv6 还不熟悉,但我认为它的工作方式与 IPv4 相同(关于在 IIS 中配置)

我的域名提供商表示我需要设置 AAAA 记录,而不是 A 记录。因此我设置了,并将我的服务器指向

在此处输入图片描述

我在 IIS 中绑定我的网站并选择 IPv6 地址

我没有使用 HTTPS,因此绑定在端口 80 上。所有其他网站都运行良好,但这是我尝试使用 IPv6 的唯一网站(所有其他网站都是 IPv4)

我已经将 IPv6 添加到防火墙。奇怪的是,它甚至没有从 ping 返回。我通过添加新规则->自定义->所有程序->协议类型:ICMPv6 来做到这一点,然后单击自定义以确保选择了所有 ICMP 类型->范围(任何 IP 地址)->允许连接,然后我将其应用于域、私有和公共

如果我2001:4ba0:cafe:c54::1从 VPS ping,它会回复。但是,它对外界来说是不可见的!

图像

但我已经测试了我的网站http://ipv6-test.com/validate.php 在此处输入图片描述

有问题的网站是 www.bmup.co.uk。如果我从 IIS 中浏览该网站,该网站会按预期加载,因此问题与外部请求有关。

如果我执行,nslookup我会得到:

图像

我在 2 个不同地点(虽然都在英国)的 3 台机器上遇到了问题(无法通过浏览器访问)。服务器在德国。

我该怎么做才能在浏览器中查看我的网站。

答案1

我可以从我的办公室 ping 上面提到的 IP 地址。

PING 2001:4ba0:cafe:c54::1(2001:4ba0:cafe:c54::1) 56 个数据字节
64 字节来自 2001:4ba0:cafe:c54::1:icmp_seq=1 ttl=115 时间=41.2 毫秒
64 字节来自 2001:4ba0:cafe:c54::1:icmp_seq=2 ttl=115 时间=33.4 毫秒
64 字节来自 2001:4ba0:cafe:c54::1:icmp_seq=3 ttl=115 时间=34.8 毫秒

当我访问上述网站时,它显示

这是我的网站!好棒!

我在 chrome 中使用的 IPvFoo 插件显示页面上的所有资源都是使用 IPv6 从上面提到的 IP 地址传送的。

IPvvFoo 插件结果

我怀疑我是否在您的 VPS 上,因此我猜测我是外部世界的一部分,而且我似乎没有遇到问题。

也许您所在的外部世界正在阻止或没有 IPv6 连接?


我该怎么做才能在浏览器中查看我的网站。

部署科学的方法从您的系统管理员工具包中开始变得结构化和有条理。

您知道您的系统已正确配置,可以通过 IPv6 提供网页,您已在本地验证了这一点,我也已从外部验证了这一点。这回答了您的标题和原始问题。

现在你想知道为什么你无法从 2 个位置访问它。所以开始收集信息

  • 当您尝试访问该网站时,浏览器中显示的(扩展)错误消息是什么?

  • 您无法从启用 IPv6 来访问系统的位置吗?

  • 你能连接到互联网上的任何 IPv6 资源吗?试试http://v6.testmyipv6.com/
  • 您能从这些位置对服务器执行 ping -6 / ping6 操作吗?
  • 您能通过 telnet 连接到其 IPv6 地址上的 Web 服务器端口 80 吗?
  • 像 mtr 这样的路径检查工具能发现任何有用的信息吗?
  • ETC

说真的,根据您提供的信息,我们甚至无法回答您提出的扩展问题。


真是一个了不起的编辑。我无法访问 v6.testmyipv6.com,这是否意味着,正如您最初的回答,我只是处于无法访问 IPv6 的区域?

英国的 IPv6 可用性不是按地区划分的,而是按 ISP 划分的。如果您想要 IPv6,而您的 ISP 尚未提供,那么您可以尝试使用隧道服务,例如

答案2

根据您的评论和其他人的测试,似乎最有可能的解释是您的客户端系统根本无法访问 IPv6 互联网。Iain 的答案很好地处理了这个问题。这个答案从更广泛的角度看待了您的问题背景以及您前进的选择。

IPv4 和 IPv6 在很大程度上是独立的协议。有些过渡机制在某些情况下可以提供有限的互操作性,但它们都是可选的。

IPv6 的理念是,我们将从 IPv4 迁移到同时支持 IPv4 和 IPv6 的双栈配置。一旦一切都实现双栈,就可以开始放弃 IPv4 的过程。希望这能在 IPv4 地址用完之前实现。

不幸的是,这并没有发生。大多数组织认为双栈会带来很多麻烦,但收获甚微。IPv6 支持者试图做出一些改变,而不仅仅是解决地址大小问题,这并没有起到什么帮助作用,其中一些改变是自相矛盾的(例如,由于路由表大小问题,很长一段时间内你都无法获得独立于提供商的 IPv6 地址)。

有一种称为 teredo 的过渡机制,该机制原本允许 NAT 后面的 IPv4 主机与 IPv6 主机进行互操作。但是,由于担心绕过防火墙,微软仅在未检测到域控制器的网络上默认启用它(而且我看到域控制器检测中出现误报)。它的性能和可靠性也不好。几年前,微软曾讨论过禁用其公共 teredo 服务器,本质上是默认为所有人禁用 teredo,但我不确定他们是否真的这么做了。

现在,随着 RIR 级别的 IPv4 枯竭已成为现实,一些 ISP 终于开始认真对待 IPv6,但仍然有很大一部分互联网用户没有 IPv6 连接,而且这种情况可能至少还会持续几年。

那么您有什么选择?

  1. 如果您拥有一个封闭的客户端组,那么您可能能够确保所有客户端计算机都具有 IPv6 连接,无论是通过其 ISP 的本地支持,还是通过 teredo 或 6to4 等转换机制,或者通过隧道提供商的点对点隧道。如果您的站点需要从“一般互联网”访问,那么这种方法并不实用。

  2. 您可以为该服务获取一个 IPv4 地址,但不幸的是,随着 IPv4 危机的加深,此选项可能会随着时间的推移变得更加昂贵。

  3. 您可以使用反向代理,该代理通过 IPv4 接受客户端连接,并通过 IPv6 将其转发到您的服务器。代理可以在多个 IPv6 源服务器之间共享一个 IPv4 地址。此代理可以由您自己操作(如果您有多台服务器),可以由您的托管服务提供商提供(Mythic Beasts 是我所知道的唯一一家提供此服务的提供商),也可以是外部服务(例如 cloudflare)。

答案3

下图显示了对支持 IPv6 的网站的简单回显请求和回复。如您所见,Ping 命令包含 -6 标志,强制 Ping 使用 IPv6。如果一切顺利,您应该会看到回复。如果您有本地 IPv6 互联网连接,响应应该非常快。在图 4 所示的示例中,响应时间非常长,因为我正在使用隧道代理(即提供 IPv6 连接的公司)在 IPv4 隧道中运行 IPv6。如果您的回显请求未能引起回复,则可能是您的 Windows 系统和目标之间的某处有防火墙或其他网络设备阻止了 ICMPv6。

在此处输入图片描述

使用防火墙和路由器时,您需要为它们配置与 IPv4 网络使用的规则大致相似的规则。您现有的 IPv4 规则在大多数情况下都不起作用。例外情况是规则独立于网络层并侧重于传输层协议(TCP 或 UDP)和端口。无论您做什么,无论您多么想,都不要配置允许所有流量在 IPv6 接口之间流动的 IPv6 默认规则以排除 IPv6 连接故障。网络罪犯、网络恐怖分子和从事网络战活动的民族国家都精通使用 IPv6。

相关内容