缘起

近期购入了某家灵车号称用了阿里云资源的 IDC 的小 VPS/VDS,坐标日本,其网络质量尚可,性能也还算不错,目前体验下来除了灵车和资源来路不明之外,最大的问题是 IP 脏,而且是真™脏。

脏到什么程度呢?各位看官自己看图吧。

IP 风险程度:
image.png

查 GCC 文档的时候,IP 被 ban 直接撞 403 Forbidden:
image.png

偶然打开 last.fm 发现也被 ban 了:
image.png

各种打开网站必撞验证码就更不用说了。

鉴于现在已经是 2024 年底了,各大网站对 IPv6 对支持已经显著改善,理论上来说添加一个 IPv6 出口会好很多。
也因此 HE.net 提供的 IPv6 Tunnelbroker 自然成了一个不错的选择。

配置

注意:以下除了 74.82.46.6 和几个 DNS 是真实的 IP 地址之外,其他的如 10.1.2.32001:a:b:c::2 均仅为演示用途。请根据实际情况替换真实 IP。
简单检查了下 /etc/net*,看输出可以看到机器似乎采用了 netplan + systemd-networkd 后端的方式进行网络管理。
$ ls /etc/net*
/etc/netconfig  /etc/networks

/etc/netplan:
50-cloud-init.yaml

/etc/network:
if-pre-up.d  if-up.d
呵,Debian 系统却在用 netplan 啊。实话说有点意外。
无所谓,这里会使用 systemd-networkd 进行管理。

申请&创建 HE IPv6 Tunnel

打开 https://tunnelbroker.net/ 并登录/注册账号。
这里的账号与 HE.net 主站是通用的,如果以前注册过可以不用重新注册。
选择左侧的 User Functions -> Create Regular Tunnel,创建一个新的隧道。
接下来在 IPv4 Endpoint (Your side) 填写机器的 IPv4 公网地址。
然后在 Availiable Tunnel Servers 中选择一个距离你机器最近、延迟最低的服务器。
点击 Create Tunnel,稍等片刻即可创建新的隧道。

我这次的服务器在日本东京,因此直接选择东京服务器。延迟/路由大概如下:
$ nexttrace 74.82.46.6
NextTrace v1.3.5 2024-10-14T11:17:47Z 4ae9d8e
[NextTrace API] preferred API IP - [2606:4700:3037::ac43:9bc0] - 226.53ms - Misaka.HKG
IP Geo Data Provider: LeoMoeAPI
traceroute to 74.82.46.6, 30 hops max, 52 bytes payload
1   11.209.227.22   *                         DOD          
                                              5.16 ms / * ms / * ms
2   *
3   *
4   *
5   47.246.116.230  *                         日本 东京都 东京        
                                              2.40 ms / 2.60 ms / 2.73 ms
6   *
7   74.82.46.6      AS6939                    日本 东京都 东京  he.net 
                                              2.60 ms / 2.60 ms / 2.61 ms
$ ping -c4 74.82.46.6
PING 74.82.46.6 (74.82.46.6) 56(84) bytes of data.
64 bytes from 74.82.46.6: icmp_seq=1 ttl=58 time=4.20 ms
64 bytes from 74.82.46.6: icmp_seq=2 ttl=58 time=2.59 ms
64 bytes from 74.82.46.6: icmp_seq=3 ttl=58 time=2.54 ms
64 bytes from 74.82.46.6: icmp_seq=4 ttl=58 time=3.21 ms

--- 74.82.46.6 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 2.535/3.132/4.197/0.669 ms

配置 systemd-networkd

配置大概分为两步:创建一个新的接口,以及对这一接口进行配置。

分别在 /etc/systemd/network/ 下创建如下两个文件。

注意:注释需要删掉。

he-ipv6.netdev:
[NetDev]
Name=he-ipv6
Kind=sit

[Tunnel]
Independent=yes
Remote=74.82.46.6 #填写 Tunnelbroker 上提供的 Server IPv4 Address
Local=10.1.2.3 #填写机器公网地址或者 LAN IP,比如是类似阿里云这种有 VPC 的机器则需要填 LAN IP
TTL=255
he-ipv6.network:
[Match]
Name=he-ipv6

[Network]
Address=2001:a:b:c::2/64 #填写 Client IPv6 Address
#DNS=2001:a:b::2  #填写 HE.net Anycast IPv6 Caching Nameserver,但我并不推荐,解析结果不太行,除非你的主机在美国本土
DNS=2606:4700:4700::1111 #其实可以加个其他的 Public DNS,比如这里和下面这两条是 Cloudflare 的
DNS=2606:4700:4700::1001

[Route]
Destination=::/0
#Gateway=2001:a:b:c::1 #可以不填
编写完毕后,重启 systemd-networkd
$ sudo systemctl restart systemd-networkd
至此接口已经创建完成。如果遇到问题,尝试加载 sit 内核模块后再重启 systemd-networkd:
$ sudo modprobe sit
$ sudo systemctl restart systemd-networkd
简单检测下网络状态:
$ ip a s he-ipv6
4: he-ipv6@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue state UNKNOWN group default qlen 1000
    link/sit 10.1.2.3 peer 74.82.46.6
    inet6 2001:a:b:c::2/64 scope global 
       valid_lft forever preferred_lft forever
$ ip -6 r s
2001:a:b:c::/64 dev he-ipv6 proto kernel metric 256 pref medium
fe80::/64 dev ens3 proto kernel metric 256 pref medium
default dev he-ipv6 proto static metric 1024 pref medium
$ curl -6 ip.sb
2001:a:b:c::2
$ ping -c4 ipv6.google.com
PING ipv6.google.com(kix06s11-in-x0e.1e100.net (2404:6800:400a:805::200e)) 56 data bytes
64 bytes from kix06s11-in-x0e.1e100.net (2404:6800:400a:805::200e): icmp_seq=1 ttl=119 time=10.9 ms
64 bytes from kix06s11-in-x0e.1e100.net (2404:6800:400a:805::200e): icmp_seq=2 ttl=119 time=10.9 ms
64 bytes from kix06s11-in-x0e.1e100.net (2404:6800:400a:805::200e): icmp_seq=3 ttl=119 time=10.9 ms
64 bytes from kix06s11-in-x0e.1e100.net (2404:6800:400a:805::200e): icmp_seq=4 ttl=119 time=10.9 ms

--- ipv6.google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3002ms
rtt min/avg/max/mdev = 10.852/10.888/10.926/0.034 ms
网速也还可以:

image.png

质量尚可,收工。

彩蛋

发现之前的 HE.net IPv6 Certification 没做完,还停在 Explorer,索性顺便搞定了,现在我也是 HE.net Certified IPv6 Sage 了,坐等 HE 的 T 恤发货 :)

IPv6 Certification Badge for KevinMX

IPv6 Certification Badge for KevinMX

IPv6 Certification Badge for KevinMX

标签: 网络, IPv6, HE.net, Linux, systemd, systemd-networkd, 隧道

添加新评论