使用IPV6转换服务实现网站的双栈访问

前言

转眼间,一下子就到了 18年底了,距离中办国办印发《推进互联网协议第六版(IPv6)规模部署行动计划》(以下简称《计划》) 中要求的一些大型网站和省级机构要完成 IPV6 访问兼容已经只有两个月的时间了。

使用IPV6转换服务实现网站的双栈访问-米饭粑

但是我们其实还是能看到,整个压力还是非常打的,目前公有云计算上除了阿里云之外基本上其他云提供IPV6能力输出。如果而往往很多政企都会考虑私有云、专有云的模式,这样的话也很难直接获得电信运营商直接提供的 IPV6 接入能力。

阿里云的 IPV6 转换服务正是为这样的情况而生的,专为其他尚不提供 IPV6 的公有云和私有云提供 IPV6 能力输出。

介绍

IPv6转换服务(IPv6 Translation Service),是一种有状态的IPv6和IPv4网络地址与协议转换服务。通过IPv6转换服务,具备公网IPv4地址的服务器可快速面向IPv6网络侧用户提供访问服务。

IPv6转换服务有以下优势:

  1. 高可用,IPv6转换服务集群跨可用区部署,故障时秒级切换。
  2. 可配置的网络能力,支持随时调整实例带宽峰值和条目带宽峰值,带宽的修改即时生效。
  3. 极简配置,购买实例,添加映射规则后即可实现IPv6和IPv4地址和协议转换功能。修改规则实时生效。
  4. 适用性强,需要提供IPv6服务的IPv4服务器不论是在本地数据中心还是在公共云上,只要有公网IPv4地址,都可以使用IPv6转换服务。

实测下来只要是提供固定 IPV4 服务输出的,而且是网络单点的产品都可以用 IPV6转换服务来实现 IPV6。就比如说,服务器可以转,Web应用防火墙也可以转,OSS可以转,这都是单点的。然后 CDN 应为是分布式的,如果转换了就变成单点的了,会让CDN丧失作用,所以不可以转换。

所以整个转换路径是这样的: 如果使用 IPV6 转换服务的话,一定要把它放到面向用户的最前面。

使用IPV6转换服务实现网站的双栈访问-米饭粑

教程

这里介绍 WAF 和 服务器两种具有代表性的代理模式。

注意:使用阿里云 IPV6 转换服务需要将域名备案接入阿里云,或者在阿里云完成备案

一、 购买 IPV6 转换服务

进入 https://common-buy.aliyun.com/?spm=5176.11642124.0.0.407c9762ecMNx1&commodityCode=ipv6trans_pre#/buy 购买,这没啥可以说的。

注意地域要选择距离用户和被转换服务器折中的地域。

二、进入控制台,我们可以看到就有我们所创建的实例了

实例IPv6地址 是我们获得的 IPV6 地址,需要添加一条域名的 AAAA 记录到 DNS 中。

实例IPv4地址 是会向我们的 IPV4 服务器或者其他产品进行请求的IP,我们需要在各类防火墙软件中将其加白。

使用IPV6转换服务实现网站的双栈访问-米饭粑

三、进入实例,点击 IPv6转换映射条目,再添加IPv6转换映射条目

使用IPV6转换服务实现网站的双栈访问-米饭粑

四、输入我们后端的IPV4 IP 就行,基本上只要是IPV4服务都行,但是得确保IP是固定的。

一个映射条目一个端口,基本上80和443我们得添加两条。

正常的HTTP、HTTPS都是 TCP 协议。

使用IPV6转换服务实现网站的双栈访问-米饭粑

五、添加IPV6记录的云解析,双栈云解析可能需要DNS支持IPV6,目前权限需要申请。

记录类型,选择 AAAA 是IPv6解析用的

记录值,填写IPv6地址

使用IPV6转换服务实现网站的双栈访问-米饭粑

然后咱们静等解析生效即可。

双栈云解析和普通DNS支持IPV6模式的区别:

使用IPV6转换服务实现网站的双栈访问-米饭粑

这样我们就可以实现 IPV4 访客继续原封不动的访问我们原本的网络访问资源,IPV6 访客则通过 IPV6 转换服务实现 IPV6 的友好支持。

WAF 实现 IPV6

那么像 Web应用防火墙 这样的访问如何实现 IPV6 转化呢?

WAF 一般会给一个让我们解析的CNAME域名,那我们 Ping 一下整个域名,得到的 IPV4 地址一般也是固定的,我们可以添加到上门第四步的后端IPV4 地址处即可。

使用IPV6转换服务实现网站的双栈访问-米饭粑
使用IPV6转换服务实现网站的双栈访问-米饭粑

然后将 WAF 前是否有代理勾上。

使用IPV6转换服务实现网站的双栈访问-米饭粑

就可以了,理论上 DDOS 高防也支持,但是应用后防御效果是否生效有待考证,后面会有检测WAF转换是否生效的的教程。

检测

检测话必须通过有 IPV6 地址的服务器进行检测。

一、dig

我们可以通过 dig 命令来查看是否域名已经添加 AAAA 记录并能成功解析:

用法:

dig www.mf8.biz AAAA

示例:

dig www.mf8.biz AAAA

[root@MF8-BIZ-PC ~]# dig www.mf8.biz AAAA

; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7 <<>> www.mf8.biz AAAA
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6376
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.mf8.biz.           IN  AAAA

;; ANSWER SECTION:
www.mf8.biz.        600 IN  AAAA    2400:3200:1500::93

;; Query time: 428 msec
;; SERVER: 67.207.67.3#53(67.207.67.3)
;; WHEN: Thu Jun 28 07:28:24 UTC 2018
;; MSG SIZE  rcvd: 68

二、Ping

Ping 检测延时,查看是否互通

用法:

ping -6 www.mf8.biz

[root@MF8-BIZ-PC ~]# ping -6 www.mf8.biz
PING www.mf8.biz(2400:3200:1500::93 (2400:3200:1500::93)) 56 data bytes
64 bytes from 2400:3200:1500::93 (2400:3200:1500::93): icmp_seq=1 ttl=232 time=356 ms
64 bytes from 2400:3200:1500::93 (2400:3200:1500::93): icmp_seq=2 ttl=232 time=341 ms
64 bytes from 2400:3200:1500::93 (2400:3200:1500::93): icmp_seq=3 ttl=232 time=373 ms
64 bytes from 2400:3200:1500::93 (2400:3200:1500::93): icmp_seq=4 ttl=232 time=384 ms
64 bytes from 2400:3200:1500::93 (2400:3200:1500::93): icmp_seq=5 ttl=232 time=387 ms

三、curl

即便解析成功,也能成功互联,也要看看网站是否额能够被访问。

curl -6 https://www.mf8.biz/

[root@MF8-BIZ-PC ~]# curl https://www.mf8.biz
<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" /><meta name="wap-font-scale" content="no"><meta http-equiv="X-UA-Compatible" content="IE=9, IE=8;IE=7, IE=EDGE, chrome=1"><title>米饭粑  &#8211;  稻粢穱麦,挐黄梁些。</title><link rel="shortcut icon" type="image/x-icon" href="https://statics.mf8.biz/wp-content/uploads/2018/04/2018040215465239.ico" /><link rel="bookmark" type="image/x-icon" href="https://statics.mf8.biz/wp-content/uploads/2018/04/2018040215465239.ico" /><meta name="twitter:card" content="summary" /><meta property="article:published_time" content="2018-05-25T16:29:40+08:00"/><meta property="article:author" content="妙正灰" /><meta property="og:url"           content="https://www.mf8.biz" /><meta property="og:type"          content="article" /><meta property="og:title"         content="米饭粑" /><meta property="og:description"   content="稻粢穱麦,挐黄梁些,折腾云计算的经验分享和总结。" /><meta property="og:image"         content="https://statics.mf8.biz/wp-content/uploads/2018/04/2018040215512131.png" /><link rel="amphtml" href="https://www.mf8.biz/amp/" /><link rel='dns-prefetch' href='//www.mf8.biz' /><link rel='dns-prefetch' href='//statics.mf8.biz' /><link rel='dns-prefetch' href='//cdn.bootcss.com' /><link rel='dns-prefetch' href='//s.w.org' /> <script type="text/javascript">window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/2.4\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/2.4\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/statics.mf8.biz\/wp-includes\/js\/wp-emoji-release.min.js?ver=4.9.6"}};
以下省略

二、网页工具

  1. http://ipv6-test.com/validate.php 用于检测 IPV6 是否支持 IPV6-Only 环境。
使用IPV6转换服务实现网站的双栈访问-米饭粑
  1. http://www.ipv6scanner.com/cgi-bin/main.py 用于检测 IPV6 端口
  2. http://ready.chair6.net/ 较全面的网站 IPV6 分析工具,不过很不精准
  3. https://centralops.net/co/Ping.aspx IPV6 Ping 工具,节点很少
  4. https://www.subnetonline.com/pages/ipv6-network-tools/online-ipv6-ping.php IPV6 Ping 工具,老是ping不通国内IP 摊手

三、 检测 WAF 是否管用

通过 IPV6 转换 WAF 后网站 Curl 可以正常获取 HTML 内容,那我们只要再通过触发一个安全拦截就可以验证是否生效了。

如下图可以看到是成功拦截的效果:

使用IPV6转换服务实现网站的双栈访问-米饭粑