背景:假设我有一个朋友,他的网站 friend.example.net 由 example.com 的托管公司托管。每当我尝试访问 friend.example.net 时,它都会将我重定向到 example.com。经过一番调查,原来这是因为 IPv6:DNS 解析为 v4 和 v6 地址,浏览器选择 v6,它出错并错误地重定向我(通过 http 301,“永久移动”——现在它被缓存了)。
问题:现在我需要向朋友解释,他的网站有 IPv6 并且存在漏洞,以便他了解发生了什么(以及对客户有什么影响),并让他向他的托管公司解释这个问题。
问题 #2:事实证明,甚至托管公司也从未听说过 IPv6(似乎是那些试图由一两个人完成设计、编程和服务器管理的公司之一),这真的很愚蠢,但短期内无能为力,所以我需要向他们解释一下。
问题:我该如何向他们解释什么是 IPv6,以便他们具体了解发生了什么?这位朋友很好奇他的网站出了什么问题,但除此之外,他并不真正关心互联网协议。虽然他真的不需要知道,但我还是想给他一些想法,而不是告诉他不需要知道。托管公司的那个人当然应该和配置服务器的人谈谈,但如果是他自己,他应该能够有效地谷歌更多信息来解决问题。
那么我应该提到什么呢?例如,这是 ISP 的问题,或者之前的版本已经没有地址了,我们正在慢慢切换,或者……
当朋友问起时,我当场想到的一句话是,这是互联网的某种新版本,事实也确实如此,但事后看来,人们通常不知道互联网到底是什么,也不知道新版本意味着什么,所以说这些话是没用的。这似乎让他以为这是某种操作系统,但解释说这是 ISP 做的事情(例如 Verizon 或示例中的 example.com),似乎澄清了这不是我电脑上的东西。
至于托管公司,我不知道他们是如何设法配置他们的服务以导致这种行为的。他们的网站标题告诉我他们正在使用 Apache 2.2.22 运行 Ubuntu,Apache 只会监听,::
如果0.0.0.0
您告诉它,它会对两个 IP 版本的虚拟主机一视同仁。据我所知,friend.example.com 的虚拟主机将导致 v4 和 v6 上的网站相同。所以我不知道他们做了什么,也无法给出如何补救的建议。但是我应该告诉他什么呢?另一个“新互联网版本”的故事在这里可能和朋友的故事一样无效。
答案1
我们需要一些标识符(IP 地址)来区分互联网上的计算机。我们正在转向 IPv6,因为我们用完了可用的 IPv4 地址。
您的服务器有两个 IP 地址:旧的 IPv4 地址和新的 IPv6 地址。DNS 是互联网的地址簿。当有人问
您好,我在哪里可以找到 www.example.com?
DNS 回复:
查看
192.0.2.1
您是否喜欢 IPv4 或2001:db8:1::
是否更喜欢 IPv6。
浏览器选择 IPv6,因为它是首选标准。但您的服务器配置错误 - 您可以使用其 IPv6 地址连接到它,但当有人询问它时:
你好,DNS 告诉我你是
2001:db8:1::
。
它将回复:
不,我的唯一地址是 192.0.2.1。但您确实应该查看一下我们的托管服务提供商的网站。它是
hosting.example.com
。
就是这样。