IPv6 隧道代理设置

出自 ArchWiki

Hurricane Electric 提供免费的 隧道代理 服务,如果您希望为仅支持 IPv4 的主机添加 IPv6 连接,则在 Arch 下使用该服务相对容易。请阅读他们 FAQ 中 “Tunnel Broker” 部分,以获取先决条件列表。

注册隧道

这并不难。如果填写这里的说明有困难,请随时填写,否则只需访问隧道代理站点并完成注册即可。

设置 Hurricane Electric 隧道

创建以下 systemd 单元,将粗体文本替换为您从 Hurricane Electric 获取的 IP 地址

注意: 如果您位于 NAT 之后(典型的家庭路由器设置),请使用您的本地 IPv4 地址作为 client_IPv4_address,例如 192.168.0.2
/etc/systemd/system/he-ipv6.service
[Unit]
Description=he.net IPv6 tunnel
After=network.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/ip tunnel add he-ipv6 mode sit remote server_IPv4_address local client_IPv4_address ttl 255
ExecStart=/usr/bin/ip link set he-ipv6 up mtu 1480
ExecStart=/usr/bin/ip addr add client_IPv6_address dev he-ipv6
ExecStart=/usr/bin/ip -6 route add ::/0 dev he-ipv6
ExecStop=/usr/bin/ip -6 route del ::/0 dev he-ipv6
ExecStop=/usr/bin/ip link set he-ipv6 down
ExecStop=/usr/bin/ip tunnel del he-ipv6

[Install]
WantedBy=multi-user.target

然后启动/启用 he-ipv6.service

systemd-networkd

如果 systemd-networkd 处理您的网络连接,那么最好也让它处理隧道代理(而不是使用 .service 文件)。

/etc/systemd/network/he-tunnel.netdev
[Match]
 
[NetDev]
Name=he-ipv6
Kind=sit
MTUBytes=1480
 
[Tunnel]
# IPv6 Tunnel Endpoints|Server IPv4 Address
Remote=216.66.80.30
# Local IPv4 | NAT-Address
Local=192.168.0.2
TTL=255
/etc/systemd/network/he-tunnel.network
[Match]
Name=he-ipv6
 
[Network]
# IPv6 Tunnel Endpoints|Client IPv6 Address>/64
Address=2001:470:NNNN:NNNN::2/64
# IPv6 Tunnel Endpoints|Server IPv6 Address
Gateway=2001:470:NNNN:NNNN::1
DNS=2001:4860:4860::8888
DNS=2001:4860:4860::8844

[Route]
# IPv6 Tunnel Endpoints|Server IPv6 Address
Gateway=2001:470:NNNN:NNNN::1
Destination=::/0

[RoutingPolicyRule]
# IPv6 Tunnel Endpoints|Client IPv6 Address>/64
From=2001:470:NNNN:NNNN::2/64

[RoutingPolicyRule]
# Routed IPv6 Prefixes|Routed 64>/64 - OR - Routed IPv6 Prefixes|Routed 48>/48
From=2001:470:NNNN::/48

并且,将此行添加到您的默认互联网连接 .network 文件的 [Network] 部分

/etc/systemd/network/DEVICE.network
Tunnel=he-ipv6

使用动态 IPv4 IP 进行隧道传输

通过 cron 任务更新

使用动态 IPv4 IP 进行隧道传输的最简单方法是设置一个 cron 任务,该任务将定期更新您当前的地址。示例 URL 和更新密钥可以在隧道详情页面的高级选项卡中找到。

要检查更新是否有效,请运行以下命令(将 USERNAMEUPDATEKEYTUNNELID 替换为您的帐户和隧道的详细信息)

$ wget -O - https://USERNAME:UPDATEKEY@ipv4.tunnelbroker.net/nic/update?hostname=TUNNELID

如果它有效,请通过打开 crontab -e 并添加新行来创建 cron 任务

*/10 * * * * wget -q -O /dev/null https://USERNAME:UPDATEKEY@ipv4.tunnelbroker.net/nic/update?hostname=TUNNELID

通过 ddclient 更新

或者,可以通过安装 ddclient 并配置 /etc/ddclient.conf 来配置此项

protocol=dyndns2
use=web
web=checkip.dns.he.net
server=ipv4.tunnelbroker.net
ssl=yes
login=USERNAME
password=UPDATEKEY
TUNNELID

最后启动/启用 ddclient.service