我的网站备案是在阿里云做的,但后来又把服务器迁到国外去了,今天收到通知,不按要求处理将注销网站备案,于是就在阿里云租了个最便宜的 ECS,可它不支持IPv6,真到好桑心。言归正传搞起来。

首先,到 https://www.tunnelbroker.net/ 注册一个账户,然后登录,戳 Create Regular Tunnel 。IPv4 Endpoint (Your side) 这里填你 ECS 的公网 IP 地址, Available Tunnel Servers 这里选一个,一般来说 HK、SG、JP 离大陆近延迟低,然后戳 Create Tunnel ,就完事了。

接下来修改 ECS 里面的系统配置,由于阿里云的网络不支持 IPv6 所以他官方镜像里面相关的设置都是被禁用了的,想要使用 IPv6 就要做一些修改。首先修改  /etc/sysctl.conf  ,把下面三项设置都改为 0

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

然后编辑 /etc/network/interfaces ,在下面添加 IPv6 Tunnel的相关信息

auto he-ipv6
iface he-ipv6 inet6 v4tunnel
address <IPV6>::2
netmask 64
remote <Tunnel 的 Server IPv4 Address>
local <阿里云的内网 IPv4 地址>
endpoint any
ttl 255
gateway <IPv6>::1
up ip -6 route add 2000::/3 via ::<HE 的 Server IPv4 Address> dev he-ipv6
up ip -6 addr add <IPv6>::1:1/128 dev he-ipv6
up ip -6 addr add <IPv6>::2:1/128 dev he-ipv6
down ip -6 route flush dev he-ipv6

其中里面<IPv6> 需要你自己替换成你刚刚申请的 Tunnel 的 Server IPv6 Address,但不包括最后的::1/64。

确定配置没问题之后就可以重启ECS了,重启之后看看 he-ipv6 接口有没有被启用,如果没有的话手动执行 ifup he-ipv6 启用相关接口,然后你就应该可以使用 Tunnel 里面显示的 Server IPv6 Address 来访问你的阿里云 ECS了。

这里有个坑,local 这里一开始我写的是阿里云外网的 IP 地址,然后发现启用了 Tunnel 之后无论是从外面访问阿里云还是阿里云本身访问 IPv6 都无效,在阿里云上 ping6 ipv6.google.com 的时候提示 no route to host,然后又仔细看了一下 HE.net tunnel broker 里面的描述发现了这样一句话:

NOTE: When behind a firewall appliance that passes protocol 41, use the IPv4 address you get from your appliance’s DHCP service instead of the IPv4 endpoint you provided to our broker.

所以 local 那里应该填的是 ECS 内网 IP 地址,而不是公网的 IP 地址。

发表评论

电子邮件地址不会被公开。 必填项已用*标注