作为全球最大的 IPv6 网络运营商,飓风电气(Hurricane Electric)拥有数量极其庞大的 IPv6 地址,并与数千个 IPv6 网络建立了对等互联。当然最为厚道的是,其利用自身的优势提供了节点繁多的免费 IPv6 隧道服务。
前言
作为一个教育网用户,除了买一台支持 IPv6 的 VPS 来上网冲浪,有时候可能还会遇到这样的问题:已有的 VPS 是否可以加上 IPv6 的翅膀呢?
举例来说,我在购买了一台阿里云香港的轻量服务器,或者购买(白嫖)了 GCP 香港的云服务器,现在我想建立一个私人网盘,对于一个教育网用户来说,IPv6 访问当然是最好的,但是巧的是这两家的 VPS 或轻量都不分配 IPv6 地址……这可怎么办呢?
作为全球最大的 IPv6 网络运营商,HE 给出了答案:Tunnel Broker。
什么是 Tunnel Broker
Tunnel Broker 如字面意思,是一种网络隧道服务,可以通过封装数据包来提供设备间的连通性,其中最常见的就是 IPv6 Tunnel Broker(以下简称 Tunnel Broker)。
大部分的 Tunnel Broker 使用 6in4 协议来封装数据包,也是如字面意思,将 IPv6 数据包封装在 IPv4 数据包中。在维基百科 IPv6隧道中间人列表 页面可以看到,目前仍在运行的 Tunnel Broker 中,HE 不但拥有最多数量的 PoP,还提供最多 5 个免费的隧道。
接下来就来了解一下如何使用 HE 的 Tunnel Broker 服务。
使用 Tunnel Broker
准备工作
使用 HE 的 Tunnel Broker 的前提条件很简单,只需在 HE.net IPv6 Tunnel Broker Registration 注册一个账号即可。
创建 Tunnel
点击左侧的 Create Regular Tunnel,在 IPv4 Endpoint 中填写你的服务器的 IP 地址,然后在下方选择离你的服务器最近的节点,点击创建即可。
此时在 Tunnel Details 界面可以看到详细信息,其中 Client IPv6 Address 就是分配给你的公网 IPv6 地址。
获取配置
在 Tunnel Details 界面的 Example Configurations 标签页选择操作系统,就可以看到相应的配置方法。这里以 Debian 为例,可以看到只需将文本框中的内容粘贴到 /etc/network/interfaces
中即可。
需要注意的是,页面下方的说明中提到了在一些大厂的云服务器中很常见的一种情况:服务器分配到的实际 IP 地址并不是服务器的公网 IP(例如公网 IP 为 1.2.3.4
,但使用 ifconfig
命令查看却显示 172.16.1.2
)。这种情况下,在粘贴配置时需要将 local 后面的 IP 地址修改为服务器的实际 IP 地址(例如 172.16.1.2
)。
在云服务器中配置 Tunnel
开启 IPv6
部分厂商提供的云服务器镜像默认是关闭了 IPv6 的(例如阿里云),需要手动修改系统配置文件来开启。以 Debian 为例,编辑 /etc/sysctl.conf,将其中和 IPv6 有关字段的值设置为 0 即可:
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
net.ipv6.conf.eth0.disable_ipv6 = 0
然后应用配置:
sysctl -p
此时使用 ifconfig 命令就可以看到网卡有了一个 IPv6 链路本地地址:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.39.221 netmask 255.255.192.0 broadcast 172.17.63.255
inet6 fe80::216:3eff:fe00:2109 prefixlen 64 scopeid 0x20<link>
ether 00:16:3e:00:21:09 txqueuelen 1000 (Ethernet)
RX packets 33574372 bytes 5658726074 (5.2 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 26217969 bytes 11529139204 (10.7 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
添加 Tunnel
接下来只需要登录云服务器,将配置内容粘贴到 /etc/network/interfaces
即可。以我在阿里云香港的轻量为例,修改后的配置文件如下:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto he-ipv6
iface he-ipv6 inet6 v4tunnel
address 2001:470:
netmask 64
endpoint 216.
local 172.
ttl 255
gateway 2001:470:
可以看到机器的 IP 地址是使用 DHCP 获取的,并非分配的公网 IP,所以需要修改 local 后的地址。
之后启用 he-ipv6
接口:
ifup he-ipv6
此时再使用 ifconfig
命令就可以看到 he-ipv6
接口了:
he-ipv6: flags=209<UP,POINTOPOINT,RUNNING,NOARP> mtu 1480
inet6 fe80::ac11:27dd prefixlen 64 scopeid 0x20<link>
inet6 2001:470: prefixlen 64 scopeid 0x0<global>
sit txqueuelen 1000 (IPv6-in-IPv4)
RX packets 433761 bytes 247586358 (236.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 408948 bytes 54864863 (52.3 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
如果没有生效可以尝试使用 systemctl restart network
命令重启网络或者直接 reboot
。
最后,使用 ping6 www.google.com
命令来验证一下服务器是否已经可以访问 IPv6 网络了:
PING www.google.com(hkg12s27-in-x04.1e100.net (2404:6800:4005:81b::2004)) 56 data bytes
64 bytes from hkg12s27-in-x04.1e100.net (2404:6800:4005:81b::2004): icmp_seq=1 ttl=121 time=2.76 ms
64 bytes from hkg12s27-in-x04.1e100.net (2404:6800:4005:81b::2004): icmp_seq=2 ttl=121 time=2.75 ms
64 bytes from hkg12s27-in-x04.1e100.net (2404:6800:4005:81b::2004): icmp_seq=3 ttl=121 time=2.85 ms
64 bytes from hkg12s27-in-x04.1e100.net (2404:6800:4005:81b::2004): icmp_seq=4 ttl=121 time=2.85 ms
维持 Tunnel 连接
如果一段时间内没有流量,Tunnel 会进入休眠状态。可以使用 crontab
命令添加一个计划任务来使 Tunnel 保持激活:
*/10 * * * * ping6 -c 1 www.google.com
Comments 2 条评论
博主 aaaa
he.ipv6.net网站注册不了
博主 Drsanwujiang
@aaaa 注册地址在文中有链接,不是he.ipv6.net