申请 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 四大洲都有接入点,但是不能看地址选择,正确的选择应是通过 pingtraceroute 来确定,比如 亚洲有新加坡、香港、日本三个接入点,地域上离大陆很近,然而延迟都非常高,并不适合。

创建后点击控制面板左侧的 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] 应该填私网地址。

另外如果系统比较新,可能需要额外安装 ifupdown 软件包。

使 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

五、配置实例

AWS

AWS 目前在 EC2 中已经全面开放 IPv6 了,但 Amazon Lightsail 中仍然不支持,因此下面以 LightSail 为例。

申请步骤都一样,就不赘述了,参考配置如下(Ubuntu):
root@aws-jp:~# cat /etc/network/interfaces
# ifupdown has been replaced by netplan(5) on this system.  See
# /etc/netplan for current configuration.
# To re-enable ifupdown on this system, you can run:
#    sudo apt install ifupdown
auto he-ipv6
iface he-ipv6 inet6 v4tunnel
        address 分配的 Client IPv6 Address
        netmask 64
        endpoint 选择的 Server IPv4 Address
        local 本地内网地址
        ttl 255
        gateway 分配的 Server IPv6 Address

20230421 更新
现在 AWS 所有平台均已开放 IPv6,详见官方文档

GCE

GCP 平台自带的防火墙阻止流量通过,无法使用隧道,可以使用自带的负载均衡(需费用)。

20230421 更新
现在 GCP 平台已开放 IPv6,详见官方文档

Azure

还在研究中。

20230421 更新
现在 Azure 平台已开放 IPv6,详见官方文档


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

推广

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

 本文最后更新于 2023/04/21 10:56:22,可能因经年累月而与现状有所差异

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

精选评论

  1. burst
    burst 回复

    Windows 10Chrome 63.0.3239.132来自 加利福尼亚 的大神

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

    1. burst
      burst 回复

      Windows 10Chrome 63.0.3239.132来自 加利福尼亚 的大神

      动态IP

    2. VirCloud

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

  2. 速度
    速度 回复

    Windows 10Chrome 65.0.3325.181来自 湖南 的大神

    动态IP可以

    1. 欧文斯

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

  3. 范明明
    范明明 回复

    Windows 10Edge 18.18362来自 内蒙古 的大神

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

    1. 欧文斯

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

  4. Guest
    Guest 回复

    Mac OS X 10_14_6Chrome 81.0.4008.0来自 北京 的大神

    你好,我在azure 上(ubuntu 18.04)使用这个方法,ping6 始终超时,而且用ifconfig看网络配置,he-ipv6这个网关也没有任何流量,到he的ipv4能通,我也填写了网卡的内网地址,还是无法使用,完全没有思路了
    he-ipv6: flags=209 mtu 1480
    inet6 此处省略 prefixlen 64 scopeid 0x0
    inet6 fe80::a00:105 prefixlen 64 scopeid 0x20
    sit txqueuelen 1000 (IPv6-in-IPv4)
    RX packets 0 bytes 0 (0.0 B)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 10 bytes 1008 (1.0 KB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    1. 欧文斯

      根据文中排错步骤再此次确认下

      1. Guest
        Guest 回复

        Mac OS X 10_14_6Chrome 81.0.4009.0来自 山东 的大神

        这几个步骤都已经尝试过了,在azure上就是不成功,我甚至把防火墙都删除了,还是没有流量

        1. 欧文斯
        2. 欧文斯

          Azure 不支持,防火墙过不去,目前也改不了防火墙配置

  5. 转:给我的vps配置ipv6地址 R11; 中年油腻男的私人园地