为centos配置ipv6隧道地址(he)
很多服务商没有分配ipv6地址,如果我们想用怎办呢,当然也是有办法的。
我这里使用的阿里云,当然也是没有分配IPv6地址的,我们可以使用 Hurricane Electric Free IPv6 Tunnel Broker 来让阿里云服务器支持 IPv6。
注册并创建 IPv6 通道
注册 https://www.tunnelbroker.net/ (需要邮箱验证)
点击 Create Regular Tunnel
(https://www.tunnelbroker.net/new_tunnel.php)
在IPv4 Endpoint (Your side)
处填上 ECS 的 IPv4 地址
在Available Tunnel Servers
中选择Hong Kong, HK
(如果你面向海外用户,可以选择更接近目标用户的地区)
点击"Create Tunnel"后,通道就创建完成了
配置 centos 使其支持 IPv6
阿里云默认镜像里面的CentOS 都是默认没有启用IPv6地址的,我们需要设置一番。
编辑文件,/etc/modprobe.d/disable_ipv6.conf
,将其中的三行都注释掉,也有可能是两行。
alias net-pf-10 off alias ipv6 off options ipv6 disable=1
编辑文件,/etc/sysconfig/network
,将其中的 NETWORKING_IPV6=no
改为 NETWORKING_IPV6=yes
#NETWORKING_IPV6=no NETWORKING_IPV6=yes
- 你可以重启系统使其加载或者执行
depmod -a
和service network restart
让其重载配置。 - 确认配置都生效后运行
ifconfig
命令,如果可以看到IPv6的地址即为成功。
配置 HE 隧道地址
在上面我们配置了ipv6环境,现在我们可以配置一下ivp6隧道。
在Hurricane Electric Free IPv6 Tunnel Broker默认有提供Linux-net-tools 命令,我们可以直接使用,避免自己输入的错误。
- 回到he网页,点击
Example Configurations
- 选择
Linux-net-tools
并复制下面文本框的内容。 - 回到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