云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

分布式存储_上海网站建设seo_是什么

小七 141 0

消除不启用IPv6的最后原因

今天是六月六日。在过去的两年里,这一天一直被庆祝为世界IPv6日。自2012年以来,CloudFlare提供了完整的IPv6支持以及IPv6到IPv4网关。为了迎接今年的IPv6日,我们扫描了世界上最大的网站,以确定有多少网站可以通过IPv6访问。有好消息也有坏消息。好消息是,我们的IPv6网关正被广泛使用,以支持IPv6网络。事实上,在支持IPv6的站点中,超过20%是通过CloudFlare实现的。坏消息是,虽然CloudFlare、Google、Facebook和其他大公司已经表明,IPv6可以在不影响性能的情况下被采用,但全球最大的网站中,只有7%的网站可以通过IPv6使用。而且,令人失望的是,尽管CloudFlare免费提供它,但只有大约一半的客户打开了我们的IPv6网关。一线希望是,如果我们能让我们所有的现有客户都能启用我们的IPv6网关,我们几乎可以达到10%的全球最大站点通过IPv6可用的里程碑。有了这个目标,我们开始寻找并解决客户支持IPv6的最后一个绊脚石。

数据与大数据-消除不启用IPv6的最后原因

你没有IPv6?CloudFlare使得在网站上支持IPv6变得非常容易。如果您的后端支持IPv6,那么通过IPv6连接到达的访问者将通过协议端到端传输。如果您的后端仅支持IPv4,CloudFlare将通过IPv6接受访问者,然后通过IPv4无缝地向服务器发出请求。几个月来,我们一直为新客户默认打开网关,任何现有客户只需单击一下就可以启用它。那么,如果我们让IPv6变得如此简单,那么是什么阻止了那些还没有启用IPv6的站点呢?答案通常是假定IPv4世界的遗留软件。通常这是一种处理会话或阻止欺诈或滥用的软件。例如,流行的4chan网站(如果有时会引起争议)就是CloudFlare的客户。汉有一个恶作剧的观众。有时,用户会试图向服务发送垃圾邮件。为了防止垃圾邮件发送者,4chan使用了搜索可疑行为的算法。不幸的是,这些算法使用访问者的IP地址作为参数之一,并且假定IP将采用IPv4格式。当然,长远的解决方案是让4chan这样的平台重写他们的软件以适应IPv6。这需要时间。我们希望提供一个权宜之计的解决方案,使CloudFlare客户能够在升级软件以完全支持IPv6的同时快速启用IPv6。

数据与大数据-消除不启用IPv6的最后原因

引入伪IPv4为了适应假定IPv4世界的软件,今天我们启用了一个新的CloudFlare选项:伪IPv4。每当通过IPv6建立连接时,该选项将向具有"伪"IPv4地址的请求添加HTTP头。我们对这些地址使用E类IP空间(240.0.0.0-255.255.255.255)。E类地址空间被保留为实验性的,不应产生任何实际流量。如果在某个时刻,类E的部分或全部空间被指定为特定用途,那么我们将调整伪IPv4头的模式。E类空间为我们提供了268435456个可能的唯一IPv4地址。这比340个不确定的IPv6地址要小得多,但它比除了最大的网站外所有网站都能看到的ip数量还要多。伪IPv4服务使用应用于连接IPv6地址的前64位的哈希算法,以便将访问者映射到其中一个E类ip。由于哈希算法将始终为相同的输入生成相同的输出,因此相同的IPv6地址将始终产生相同的伪IPv4地址。伪IPv4服务有两种选择:1)您可以让我们自动添加一个报头(Cf-Pseudo-IPv4),然后根据需要由软件解析;或者2)您可以让我们用伪IPv4地址覆盖现有的Cf Connecting IP和X-Forwarded-for报头。覆盖选项的优点是,在大多数情况下,它不需要任何软件更改。如果您选择覆盖选项,我们将附加一个新的头(Cf-Connecting-IPv6),以确保您仍然可以找到用于调试的实际连接IP地址。

数据与大数据-消除不启用IPv6的最后原因

伪IPv4服务,就像IPv6网关一样,对我们所有的客户都是可用的,甚至是那些免费计划的客户。我们希望它能消除IPv6拒绝的最后一个原因。如果您已经是CloudFlare客户,请登录您的帐户,并确保在CloudFlare设置页面上启用了IPv6。你也可以在那里找到伪IPv4的开关。如果您还不是CloudFlare的客户,注册只需5分钟,因此对于世界大多数地区来说,在2014年世界IPv6日结束之前,您仍有时间在我们的网络上登录您的网站并加入现代网络。顺便说一句,到今天为止,4chan现在已经通过IPv6提供了。

数据与大数据-消除不启用IPv6的最后原因

附录:细节对于听众中的技术人员,下面是一些关于我们如何实现伪IPv4的基本细节。我们选择使用MD5哈希算法。虽然MD5在加密技术中使用时存在风险,但它比许多其他方法更快,并且在哈希空间上具有可接受的一致性。请注意,存在一定的冲突风险(即两个IPv6地址映射到同一个IPv4伪地址),但是大多数滥用/欺诈系统已经考虑到这一点,以便处理NAT和其他多人可能共享一个IP的实例。在CloudFlare,我们使用NGINX的修改版本,并使用Lua编写大部分请求处理代码,这依赖于ngx_openresty应用服务器。以下是哈希算法概念验证原型的Lua代码:函数伪\u ipv4(ipv6\u top64)--从MD5哈希中获取后32位-- 液化天然气.md5不抑制前导零,因此regexp将始终匹配。本地哈希=液化天然气.md5(ipv6?top64)本地模式=ngx.re.匹配(散列,"([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})$","joi")--规范化第一个字节以适合E类空间。使用减法作为--Lua没有内置的按位运算符本地b1=t编号(mod[1],16)如果b1>=0xF0,则b1=b1-0xF0结束返回字符串格式("%d.%d.%d.%d",b1+0xF0,T编号(mod[2],16),tonumber(mod[3],16),t编号(型号[4],16))结束因为每个请求都需要通过哈希算法,所以我们希望它尽可能快。我们开始为速度优化Lua原型。结果如下:函数伪\u ipv4(ipv6\u top64)--从MD5哈希中获取后32位本地md5=ngx.md5_箱(ipv6?top64)本地b1、b2、b3、b4=md5:字节(13、16)--规范化第一个字节以适合E类空间b1=比特博尔(0xF0,位带(b1,0x0F)返回字符串格式("%d.%d.%d.%d",b1、b2、b3、b4)结束如果像上面这样写Lua代码看起来很有趣,我们总是在招聘。