我一直在努力学习IPv6。一方面,IPv6的基本概念很简单(Internet上的所有设备都没有足够的IPv4地址,所以人们发明了IPv6!每个人都有足够的IPv6地址!)但是当我试图进一步理解它时,我有很多问题。其中一个问题是:为什么twitter.com不支持IPv6。假设不支持IPv6的网站不会造成很多麻烦,为什么网站需要支持IPv6?我在Twitter上问了很多人为什么他们的服务器支持IPv6,我得到了很多很好的答案,我将在这里总结一下。先说明一下,因为我对IPv6基本没有经验,所以下面总结的原因可能有不准确的地方,还请大家多多包涵。首先,我想解释一下为什么twitter.com不能支持IPv6,因为这正是我一开始的困惑。你怎么知道twitter.com不支持IPv6?您可以使用dig命令查询带有AAAA选项的域名的IPv6地址记录。如果没有记录,则表示该域名不支持IPv6。除了twitter.com,一些大型网站如github.com、stripe.com也不支持IPv6。$digAAAAtwitter.com(空响应)$digAAAAgithub.com(空响应)$digAAAAstripe.com(空响应)为什么twitter.com仍然适用于IPv6用户?我觉得这真的很令人困惑。我一直听说许多互联网用户被迫使用IPv6地址,因为他们已经用完了IPv4地址。但如果这是真的,那么twitter.com怎么能继续为那些不支持IPv6的人提供服务呢?以下是我昨天从Twitter会话中了解到的内容。有两种类型的Internet服务提供商(ISP):为所有用户提供足够IPv4地址的ISP没有为所有用户提供足够IPv4地址的ISP我的ISP是1类,所以我的计算机实际上有自己的IPv4地址我的互联网服务提供商甚至根本不支持IPv6。但是许多ISP(尤其是北美以外的地区)属于第2类:他们没有足够的IPv4地址供所有用户使用。这些ISP通过为所有用户提供唯一的IPv6地址来解决问题,以便他们可以直接访问IPv6网站让用户共享IPv4地址,这可以使用CGNAT(“Carrier-gradeNAT”运营商级NAT)或“464XLAT”或其他方法。所有的ISP都需要一些IPv4地址,否则他们的用户将无法访问twitter.com等纯IPv4网站。为什么网站要支持IPv6?现在,我们已经解释了为什么不能支持IPv6。那么为什么要支持IPv6?有以下原因原因#1:CGNAT是性能瓶颈对我来说,支持IPv6的最有说服力的论据是:CGNAT是导致性能问题的瓶颈,并且随着对IPv4地址的访问越来越多restricted,它的性能会变差。也有人提到,由于CGNAT是性能瓶颈,它是拒绝服务攻击(DDoS)的一个有吸引力的目标,因为你可以攻击一台服务器并影响其他用户网站的可用性那个服务呃。支持IPv6的服务器减少了对CGNAT的需求(IPv6用户可以直接连接!),这使得互联网对每个人的响应速度更快。我认为这个论点很有趣,因为它是各方面的努力——仅仅因为你的网站支持IPv6并不能使你的网站运行得更好,更重要的是如果几乎每个网站都支持IPv6,那么它会让每个人的互联网体验更好,特别是对于IPv4地址不易访问的国家。实际上,我不知道这在实践中有多重要。不过,关于使用IPv6的争论要多得多,所以让我们继续吧。原因二:仅支持IPv6的服务器也可以访问您的网站。正如我之前所说,大多数IPv6用户仍然可以通过NAT访问IPv4网站。但是一些IPv6用户无法访问IPv4网站,因为他们发现他们运行的服务器只有IPv6地址,无法使用NAT。因此,这些服务器完全无法访问纯IPv4网站。我猜服务器没有很多主机连接到它们,也许它们只需要连接到一些支持IPv6的主机。但对我来说,即使没有IPv4地址,主机也应该能够访问我的站点。原因三:更好的性能对于同时使用IPv4和IPv6(即使用私有IPv6地址和共享IPv4地址)的用户,IPv6通常速度更快,因为它不需要额外的NAT地址转换。因此,有时支持IPv6的网站可以为用户提供更快的响应。实际上,客户端使用一种称为“HappyEyeballs”的算法,从IPv4和IPv6中为用户选择最快的链接。以下是网站支持IPv6的其他一些性能优势:使用IPv6可以改进搜索引擎优化(SEO),因为IPv6具有更好的性能。使用IPv6可以让您的数据包通过更好(更快)的网络硬件,因为IPv6是比IPv4更新的协议。原因四:能够恢复IPv4互联网中断有人说他曾经历过由于意外的BGP中毒导致仅影响IPv4流量的互联网中断。因此,一个支持IPv6的网站意味着在中断期间,该网站仍然可以保持部分在线。原因五:避免家庭服务器的NAT问题在家庭服务器上使用IPv6要简单得多,因为数据包不必通过路由器进行端口转发,因此只需为每个服务器分配一个唯一的IPv6地址并直接访问服务器的IPv6地址就足够了。当然,要实现这一点,客户端需要支持IPv6,但现在越来越多的客户端也支持IPv6。理由六:为了拥有自己的IP地址,您也可以自己购买IPv6地址,在您家庭网络的服务器上使用。如果您更换了ISP,您可以继续使用相同的IP地址。我不太明白这是如何工作的,你如何让互联网上的计算机将这些IP地址路由给你?我猜您需要运行自己的自治系统(AS)或其他东西。理由七:为了学习IPv6有些人说他们在安全领域工作,为了保证信息安全,了解互联网协议的工作原理非常重要(攻击者正在使用互联网协议进行攻击!)。因此,运行IPv6服务器有助于他们了解其工作原理。理由八:推进IPv6有人说,因为IPv6是当前标准,所以他们希望通过支持IPv6来为IPv6的成功做出贡献。很多人还说他们的服务器支持IPv6,因为他们认为仅支持IPv4的站点太“落后”了。原因九:IPv6很容易我也得到了一堆“IPv6很容易使用,为什么不呢”的答案。添加IPv6支持在所有情况下都不容易,但在某些情况下会很容易,原因如下:您可以从托管公司自动获取IPv6地址,因此您需要做的就是添加指向该地址的AAAA记录您的网站是基于支持IPv6的内容分发网络(CDN)的,所以你不需要做任何额外的事情庞大,所以如果你想在网络中尝试一些东西,你可以使用IPv6子网进行实验,而且基本上您将不再使用此子网。理由十一:运行他们自己的自治系统(AS)有人说他们在服务器中提供IPv6以运行他们自己的自治系统(我在这篇BGP帖子中谈到了AS是什么)。IPv4地址太贵了,所以他们购买了IPv6地址来运行自治系统。理由十二:IPv6更安全如果你的服务器只有一个公网IPv6地址,那么扫描全网的攻击者是无法轻易查到你的服务器地址的,因为IPv6地址空间太大,扫描不出来!这显然不是您唯一的安全策略,但它是一个巨大的安全红利。每次我运行IPv4服务器时,我都惊讶于IPv4地址总是可以被扫描,就像旧的WordPress博客系统一样。一个愚蠢的理由:您可以在您的IPv6地址中放一个小彩蛋IPv6地址中有很多额外的位,您可以将它们用于重要的事情。例如,Facebook的一个IPv6地址是“2a03:2880:f10e:83:face:b00c:0:25de”(其中包含face:b00c)。还有更多的原因。这是“为什么使用IPv6?”到目前为止我理解的原因。了解这些原因后,我比以前更有动力在我的(非常小的)服务器上支持IPv6。但那是因为我觉得支持IPv6对我来说只需要很少的努力。(现在我正在使用支持IPv6的CDN,所以我基本上不需要做任何额外的事情)我对IPv6仍然不太了解,但我的印象是IPv6支持不是微不足道的,事实上,这可能需要很多工作。例如,我不知道Twitter需要做多少繁重的工作才能在其边缘服务器上添加IPv6支持。其他IPv6问题这里有一些更多的IPv6问题,也许我稍后会谈到:支持IPv6的缺点是什么?会出什么问题?有足够的IPv4地址来提供IPv6的ISP有什么动机吗?(另一种方式问:我的ISP是否有可能在未来几年内切换到IPv6?或者他们不会?)DigitalOceanProviderthatprovidesvirtualprivateservers(VPS)forsoftwaredevelopers)只提供浮动IPv4地址,不提供IPv6浮动地址。为什么不?有了更多的IPv6地址,提供IPv6浮动地址不是更容易吗?当我尝试ping一个IPv6地址(例如example.com的IP地址2606:2800:220:1:248:1893:25c8:1946)时,我收到一条错误消息ping:connect:Networkisunreachable。为什么是这样?(答案:我的电脑没有公共IPv6地址,因为我的ISP不支持IPv6)
