Manually establish your own IPv6 Tunnel

Manually establish your own IPv6 Tunnel

💡 原文中文,约4400字,阅读约需11分钟。
📝

内容提要

本文介绍了建立IPv6隧道服务器的方法,使用Dmit家的VPS作为服务器,通过配置IP地址和路由建立隧道连接,并提供了多个隧道和重复利用隧道的方法。建议将配置持久化以避免隧道失效。

🔎

延伸解读

自建隧道与免费服务的对比

文章指出,许多ISP仍不提供IPv6,而HE的免费隧道服务速度和稳定性较差。作者使用Dmit VPS自建隧道,两地PING值约4ms,远优于TunnelBroker免费节点。自建隧道能利用VPS的原生IPv6地址,提供更优质的网络体验,但需要一定的配置和维护成本。

NDP代理的局限与替代方案

NDP代理仅支持明确指定的单个IPv6地址,无法直接代理整个网段。若需为多个客户端或子网提供代理,必须逐条添加ip -6 neigh add proxy命令,或改用NDPPD。NDPPD支持网段代理,配置更简洁,适合需要分配大量IPv6地址的场景。

安全风险与防火墙配置

使用remote any的隧道定义时,任何主机均可与Server建立隧道,存在滥用风险。必须通过iptables限制仅允许指定IPv4地址接入,并丢弃其他流量。此外,若对安全性要求更高,可考虑使用IPsec建立隧道连接,以加密通信并增强认证。

配置持久化的重要性

隧道、IP地址和路由等配置在系统重启或网络中断后会失效。文章建议将配置持久化,例如在Ubuntu中使用netplan,在Debian等系统中将ip命令写入/etc/network/interfaces。持久化可确保隧道长期稳定运行,避免手动恢复的麻烦。

❓

Q&A

如何手动建立自己的IPv6隧道服务器?

在Server(如Dmit VPS)上执行:ip tunnel add sit1 mode sit remote 22.22.22.22 local 11.11.11.11 ttl 255;ip link set sit1 up。在Client上执行:ip tunnel add dmit-ipv6 mode sit remote 11.11.11.11 local 22.22.22.22 ttl 255;ip link set dmit-ipv6 up。然后配置地址和路由:Server上ip addr add 2024:2:16:2:1::1/80 dev sit1;ip route add 2024:2:16:2:1::2 dev sit1。Client上ip addr add 2024:2:16:2:1::2/80 dev dmit-ipv6;ip route add ::/0 dev dmit-ipv6。

如何为IPv6隧道客户端转发流量?

传出流量:编辑/etc/sysctl.conf,增加net.ipv6.conf.sit1.forwarding=1(或net.ipv6.conf.all.forwarding=1),执行sysctl -p。传入流量:增加net.ipv6.conf.sit1.proxy_ndp=1(或net.ipv6.conf.all.proxy_ndp=1),执行sysctl -p,然后ip -6 neigh add proxy 2024:2:16:2:1::2 dev eth0。

如何建立多个IPv6隧道或重复利用隧道?

建立多个隧道:简单重复上述操作即可。重复利用隧道:在Server上建立可重复利用的tunnel定义,如ip tunnel add sit-any mode sit remote any local 11.11.11.11 ttl 255;ip link set sit-any up;ip -6 addr add 2024:2:16:2:1::1/80 dev sit-any;ip -6 route add 2024:2:16:2:1::2 via ::22.22.22.22 dev sit-any;ip -6 route add 2024:2:16:2:1::3 via ::33.33.33.33 dev sit-any。注意设置remote any后需用iptables限制访问。

NDP代理只支持单个IPv6地址,如何支持网段?

NDP代理只支持明确指定的单个IPv6地址,不支持网段。要么使用多条ip -6 neigh add proxy语句,要么换成支持网段的NDPPD。安装NDPPD:apt install ndppd;编辑/etc/ndppd.conf,配置proxy eth0 { rule 2024:2:16:2:1::/80 { static } };然后systemctl enable --now ndppd。

如何将整个/80子网IP分配给隧道客户端?

在Server上:ip tunnel add sit-any mode sit remote any local 11.11.11.11 ttl 255;ip link set sit-any up;ip -6 addr add 2024:2:16:2:1::1/72 dev sit-any;ip -6 route add 2024:2:16:2:2::/80 via ::22.22.22.22 dev sit-any;ip -6 route add 2024:2:16:2:3::/80 via ::33.33.33.33 dev sit-any。配置/etc/ndppd.conf,为每个子网添加rule。在Client上:ip addr add 2024:2:16:2:2::/80 dev dmit-ipv6;ip route add ::/0 via 2024:2:16:2:1::1 dev dmit-ipv6。

如何确保IPv6隧道配置在重启后不失效?

应将隧道、IP地址、路由等配置进行持久化。例如,Ubuntu中可使用netplan,Debian等系统可以将ip命令写在/etc/network/interfaces中。

🏷️

标签

➡️

继续阅读