VPS 构建 IPv6 隧道

鉴于有的 VPS 商家并没有原生的 IPv6 服务,可以使用 Hurricane Electric Free IPv6 Tunnel Broker 创建 IPv6 隧道为 VPS 提供 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,注释以下相关的命令行:
1
2
3
alias net-pf-10 off
alias ipv6 off
options ipv6 disable=1
  • 编辑文件 /etc/sysconfig/network,将其中的 NETWORKING_IPV6=no 改为 NETWORKING_IPV6=yes
1
2
# NETWORKING_IPV6=no
NETWORKING_IPV6=yes
  • 可以重启系统使其加载或者执行 depmod -aservice network restart 让其重载配置。

  • 确认配置都生效后运行 ifconfig 命令,如果可以看到 IPv6 的地址即为成功。

配置 HE 隧道地址

在 VPS 上配置了 IPv6 环境后,需要配置添加 IPv6 隧道。在 Hurricane Electric Free IPv6 Tunnel Broker 默认有提供Linux-net-tools命令可以直接使用。

  • 回到 he 网页,点击 Example Configurations。

  • 选择 Linux-net-tools 并复制下面文本框的内容。

  • 回到 ssh,粘贴复制的内容并执行即可(Note:系统重启会失效,请自行写入脚本并设置开机启动)。

Tips: Centos 7 可能会提示: -bash: ifconfig: command not found

解决方案:

1
2
yum search ifconfig    # 提示只要安装net-tools.x86_64即可
yum install net-tools.x86_64 

设置 IPv6 开机自启

1
vim /root/ipv6.sh

输入如下内容: 即从 he 网站上复制的Linux-net-tools的代码

1
2
3
4
5
6
7
#!/bin/bash

ifconfig sit0 up
ifconfig sit0 inet6 tunnel ::66.220.18.42
ifconfig sit1 up
ifconfig sit1 inet6 add 2001:470:c:957::2/64
route -A inet6 add ::/0 dev sit1

给文件增加可执行权限:

1
chmod +x /root/ipv6.sh

编辑启动管理文件:

1
vim /etc/rc.d/rc.local

在最下方加入下面一行代码:

1
sh /root/ipv6.sh

保存并退出,这样重启后也有 IPv6。

测试 IPv6 隧道可用性

配置好隧道后,可以使用ping6命令进行验证。

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

解决谷歌访问出现验证码

阿里云的较多海外机房在访问谷歌时会出现验证提示,可以强制使用 IPv6 访问谷歌来避免 IP 认证。

可将谷歌的网址放入 hosts 文件并指定 IPv6 地址解决。

编辑文件vim /etc/hosts并加入以下内容:

1
2
3
4
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 刷新,如果依旧无效可尝试重启。

updatedupdated2021-10-292021-10-29