很多服务商没有分配ipv6地址,如果我们想用怎办呢,当然也是有办法的。
我这里使用的阿里云,当然也是没有分配IPv6地址的,我们可以使用 Hurricane Electric Free IPv6 Tunnel Broker 来让阿里云服务器支持 IPv6。

注册并创建 IPv6 通道

注册 https://www.tunnelbroker.net/ (需要邮箱验证)
点击 Create Regular Tunnelhttps://www.tunnelbroker.net/new_tunnel.php
IPv4 Endpoint (Your side)处填上 ECS 的 IPv4 地址
Available Tunnel Servers中选择Hong Kong, HK(如果你面向海外用户,可以选择更接近目标用户的地区)
点击"Create Tunnel"后,通道就创建完成了

配置 centos 使其支持 IPv6

阿里云默认镜像里面的CentOS 都是默认没有启用IPv6地址的,我们需要设置一番。

  1. 编辑文件,/etc/modprobe.d/disable_ipv6.conf,将其中的三行都注释掉,也有可能是两行。

    alias net-pf-10 off

    alias ipv6 off

    options ipv6 disable=1

  2. 编辑文件,/etc/sysconfig/network,将其中的 NETWORKING_IPV6=no 改为 NETWORKING_IPV6=yes.

    NETWORKING_IPV6=no

    NETWORKING_IPV6=yes

  3. 你可以重启系统使其加载或者执行depmod -aservice network restart让其重载配置。
  4. 确认配置都生效后运行 ifconfig 命令,如果可以看到IPv6的地址即为成功。

配置 HE 隧道地址

在上面我们配置了ipv6环境,现在我们可以配置一下ivp6隧道。
在Hurricane Electric Free IPv6 Tunnel Broker默认有提供Linux-net-tools 命令,我们可以直接使用,避免自己输入的错误。

  1. 回到he网页,点击Example Configurations
  2. 选择Linux-net-tools并复制下面文本框的内容。
  3. 回到ssh,粘贴复制的内容并执行即可(注意,如果系统重启会失效,请自行写入脚本并设置开机启动)。

测试ipv6隧道可用性

上面们已经配置好了隧道,我们需要怎么验证呢,我们可以使用ping6命令。

ping6 ipv6.baidu.com
//如果你的服务器在国内可使用
ping6 www.google.com
//如果返回ipv6地址即为成功

解决谷歌访问出现验证码

如果你使用阿里云,很大的可能导致你ip所在的整个c段都被谷歌验证了,所以我们这里强制使用ipv6访问谷歌来避免ip认证。
方法当然也非常简单,直接讲谷歌的网址放入hosts文件并指定ipv6地址即可。
我们编辑文件vim /etc/hosts并加入以下内容

2404:6800:4005:80a::2003 www.google.com.hk
2404:6800:4005:80a::2003 google.com.hk
//你服务器所在地区的后缀,我这里是香港
2404:6800:4005:80a::2003 www.google.com
2404:6800:4005:80a::2003 google.com
//ipv6地址可以改为你ping6命令返回的地址,延迟会更小。

如果hosts文件没有立刻生效,你可以尝试使用hostname xxx来改名刷新,如果依旧无效请自行重启。
现在你可以试试访问谷歌了,如果不出意外的话现在验证码已经离你远去。
如果依旧无效你可以访问 这个网址 查看是否为ipv6地址,如果不是请检查hosts文件是否生效。

设置网站支持ipv6访问

我这里使用nginx,其他web服务器请自行查询。

server {
  listen 80; // 监听 IPv4 的 80 端口
  listen [::]:80; // 监听 IPv6 的 80 端口
}

server {
  listen 443 ssl http2; // 监听 IPv4 的 443 端口
  listen [::]:443 ssl http2; // 监听 IPv6 的 443 端口
}

然后在域名dns解析加上一条AAAA记录,值填 HE 里的Client IPv6 Address,去掉最后的/64即可,如2001:470:100:100::2