Lightsail 如果有 IPv6 就好了

最近有小伙伴想要 IPv6 访问某破站,虽说 IPv6 已经普及,但该站也与时俱进屏蔽了国内 IP,国外IP暂时不受影响。此前申请过 Lightsail 学生额度,白嫖个 AWS 的 VPS,只可惜没有 IPv6。为了节约资源,防止世界被破坏省钱,下面就来尝试一下 HE 的 IPv6 隧道。

# 前期准备

全球最大 IPv6 互联网骨干网 Hurricane Electric 倒闭了,IPv6 Tunnel Broker 免费送,统统不要钱!HE 一直免费提供 IPv6 Tunnel Broker,节点遍布全球各地,在东京也有数据中心。操作前先准备好 AWS 的东京 VPS。

  • 创建 Lightsail 的实例,CentOS 7 64bit 系统,绑上静态 IPv4 地址。
  • 开启 ICMP 协议。虽然官方好像说了 Lightsail 不支持 ICMP 协议,但是把实例的防火墙设置成 All TCP+UDP ALL 0 - 65535 后就能用了。

然后是 HE 的操作。

# 内网 IP

由于 AWS 的网络限制(内网 IP 是动态分配的),HE 的配置方法还需略微修改。由于不清楚实例重启后私有 IP 会不会变化,可以在开机时动态查询内网 IP。SSH 连上 VPS,建个脚本。

sudo vim /usr/local/bin/checkipeth0

写入如下内容。

#!/usr/bin/perl
$check=`ip addr show dev eth0|grep"inet "|awk '{print \$2}'|awk -F/ '{print \$1}'`;
print $check;

保存退出,加上可执行权限。

sudo chmod +x /usr/local/bin/checkipeth0

正常情况执行此脚本会返回当前私有 IP。

# 打通 IPv6 隧道

参见 HE 提供的配置,需要注意的是第二句,此处的 local IP 不是之前 AWS 申请的静态 IP,而是内网私有 IP,可以在实例的网络设置里找,在本例中使用刚才创建的脚本查询,将 local 后面的静态 IP 替换成如下命令,其他不变。

sudo modprobe ipv6
sudo ip tunnel add he-ipv6 mode sit remote 74.82.46.6 local `/usr/local/bin/checkipeth0` ttl 255
sudo ip link set he-ipv6 up
sudo ip addr add 2001:470:23:407::2/64 dev he-ipv6
sudo ip route add ::/0 dev he-ipv6
sudo ip -f inet6 addr

设置完成后,试下通了没。

ping6 -c 4 google.com

21 时(UTC+8)测试,延迟 10ms 左右,下载速度大约 4MB/s。如果还想用于 IPv6 的 Web 服务,需要给 eth0 绑上 IPv6,并且用 crontab 定时 ping 一下以保持隧道常开。

# Reference

https://samsclass.info/ipv6/proj/pHE1A-Tunnel.htm

© 2014 - 0202 Aimkiray.

Theme by Palette. 在各种〇〇之后并没有炸掉|ω・)ノ