申请 HE.NET IPv6 隧道以使主机支持 IPv6

一、背景

如今很多产品,比如 Apple AppStore,需要 IPv6 地址才能继续开展业务,但是像国内很多如阿里云、华为云等主机商都不支持 IPv6,那么要如何才能支持 IPv6 呢?

二、申请 IPv6 地址

在 IPv6 推行时,为兼容现有的 IPv4 网络,过渡技术 - IPv6 协议隧道方法 应运而生,接下来介绍的由 HE.NET (Hurricane Electric) 推出的免费 IPv6 Tunnel Broker 便是利用这个技术,使仅有 IPv4 的主机支持 IPv6。

经实际测试目前支持的主机包括不限于 阿里云、华为云、微软 Azure、亚马逊 AWS EC2(目前 AWS 已可分配自己的 IPv6,参见《Amazon AWS EC2 如何安装 CentOS7、修改主机名(hostname)、开启 IPv6》)、拥有固定 IP 的家用电脑等。

其注册地址:Register,全站英文,注册界面可参考下面截图:

signup.jpg

登录后,点击控制面板左边的 Create Regular Tunnel 开始申请一个 IPv6 地址,界面大致如下:

apply.jpg

申请前先确保自己的主机可以 ping 得通,否则无法创建,在 IPv4 Endpoint (Your side) 输入主机 IP:

ping.jpg

然后选择离主机近的节点,HE.NET 四大洲都有接入点,但是不能看地址选择,正确的选择应是通过 ping 或 traceroute 来确定,比如 亚洲有新加坡、香港、日本三个接入点,地域上离大陆很近,然而延迟非常高,并不适合。

创建后点击控制面板左侧的 Main Page,即可看到刚创建的隧道,至此,IPv6
申请完成。

三、打通 IPv6 隧道

点击刚创建的隧道的 Name 进入编辑模式,可以看到申请的 IPv6 地址,若要删除隧道则可以在此点击 Delete Tunnel,在 Client IPv4 Address 可以修改 IP:

edit.jpg

点击 Example Configurations,下拉框选择主机的操作系统获取相应的配置代码:

client.jpg

如 Debian/Ubuntu,登录主机命令行,编辑 /etc/network/interfaces(PS:CentOS 是 /etc/sysconfig/network-scripts/ifcfg-eth0 ),将刚才的配置代码复制进来:

$ sudo vim /etc/network/interfaces
.....
auto he-ipv6
iface he-ipv6 inet6 v4tunnel
        address [client ipv6 addr]
        netmask 64
        endpoint [server ipv4 addr]
        local [client ipv4 addr]
        ttl 255
        gateway [server ipv6 addr]

注意,如果主机有私网地址,那么配置里的 [client ipv4 addr] 应该填私网地址。

使 IPv6 生效:

$ sudo ifup he-ipv6

失效则是(不想用了记得删掉刚才的配置,否则重启后还是会自动启用):

$ sudo ifdown he-ipv6

测试一下:

$ ping6 google.com
PING google.com(nrt13s48-in-x0e.1e100.net (2404:6800:4004:80e::200e)) 56 data bytes
64 bytes from nrt13s48-in-x0e.1e100.net (2404:6800:4004:80e::200e): icmp_seq=1 ttl=48 time=30.8 ms
64 bytes from nrt13s48-in-x0e.1e100.net (2404:6800:4004:80e::200e): icmp_seq=2 ttl=48 time=30.7 ms
64 bytes from nrt13s48-in-x0e.1e100.net (2404:6800:4004:80e::200e): icmp_seq=3 ttl=48 time=30.9 ms
64 bytes from nrt13s48-in-x0e.1e100.net (2404:6800:4004:80e::200e): icmp_seq=4 ttl=48 time=30.8 ms
^C
--- google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 30.775/30.839/30.904/0.132 ms
$ curl ipv6.icanhazip.com
2001:470:***

四、排错

按步骤操作还是用不了:

1、配置里的 local x.x.x.x 配置对了吗?
有内网地址必须填内网地址。

2、系统禁用 IPv6 了吗?
主要出现在阿里云 ECS,修改 /etc/sysctl.conf ,将 disable_ipv6 相关字段参数都设为 0,大致是这样的(不同操作系统不同版本可能不同):

net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0

3、到 server ipv4 addr 通吗?
通过 ping 或 路由跟踪 取最佳节点(PS:国内不选香港、日本、新加坡接入点,延迟比美国还高。)

4、如何设置 IPv6 优先?
默认都是 ipv6 优先,Windows 可以执行以下命令查看:

C:\Windows\System32>netsh int ipv6 show prefix
查询活动状态...

优先顺序    标签   前缀
----------  -----  --------------------------------
        50      0  ::1/128
        40      1  ::/0
        30      1  2002::/16
        20      3  ::/96
        10      4  ::ffff:0:0/96
         5      1  2001::/32

ArmxMod for Typecho
个性化、自适应、功能强大的响应式主题

推广

 继续浏览关于 aws阿里云azureipv6华为云he.net隧道 的文章

 本文最后更新于 2017/10/30 16:49:50,可能因经年累月而与现状有所差异

 引用转载请注明:VirCloud's Blog > 系统 > 申请 HE.NET IPv6 隧道以使主机支持 IPv6

精选评论

  1. 范明明

    问下,腾讯云的CentOS主机可以用这个吗?

    1. 欧文斯

      可以的,只要有固定 IPv4 就行

  2. 速度

    动态IP可以

    1. 欧文斯

      只要能 ping 通都可以,问题就在于动态 IP 的话,一旦发生变动,就连不上 v6 了。

  3. burst

    家里的电脑可以这样配置吗?

    1. VirCloud

      动态 IP 不可以,必须有静态 IP

    2. burst