前言
大伙很久未见面了,之前配置 HE 隧道的,虽然步骤不复杂,但每换一台机器就要重复检测系统、编辑配置文件、敲一堆命令,实在是有点麻烦
于是我把整个流程打包成了一个脚本,一行命令就能搞定。今天把脚本托管到了服务器上,分享给有需要的小伙伴
一句话: 不管你是 Debian/Ubuntu 还是 CentOS,跑一条命令,IPv6 隧道自动配好
HE 隧道是什么
HE(Hurricane Electric)是一家全球知名的 IPv6 网络服务商,提供免费的 IPv6 隧道服务。简单说,如果你的云服务器只有 IPv4 地址(比如很多便宜的 VPS 或者老机房),通过 HE 隧道可以给你分配一个公网 IPv6 地址,让你的服务器能访问 IPv6 网络,也能被 IPv6 用户访问
适用场景:
- 云服务商没给 IPv6 地址
- 想测试 IPv6 环境
- 想用 IPv6 访问 Google、YouTube 等
- 做 IPv6 网站或应用
前提条件
- 一台有公网 IPv4 的 Linux 服务器(NAT 内网也可以用,填内网 IP 即可)
- 注册好 HE Tunnel Broker 账号,并创建好隧道(获取服务端 IP、客户端 IP、IPv6 地址段等信息)
- 服务器防火墙放行协议 41(ipv6-over-ipv4)
注册隧道tunnelbroker.net 五分钟搞定
一键下载并执行
直接运行(推荐):
curl -sSL http://mc.mohuajz.eu.org/he.sh | sudo bash或者先下载再执行:
wget http://mc.mohuajz.eu.org/he.sh
chmod +x he.sh
sudo ./he.sh运行后会提示选择「安装」还是「卸载」,输入 1 或 2 即可。
如果是第一次执行,建议直接选安装,然后根据提示输入你在 HE 网站看到的隧道信息:
- Server IPv4 Address
- Client IPv4 Address(服务器公网 IP 或内网 IP)
- Client IPv6 Address(带前缀,如 2001:470:xxx::2/64)
- Server IPv6 Address(不带前缀)
- MTU(默认 1480,卡的话试试 1472)
脚本会自动检测你的系统(支持 Debian/Ubuntu/CentOS/RHEL),安装依赖、配置网络文件、启动隧道、测试连通性
脚本功能一览
| 功能 | 说明 |
|---|---|
| 自动检测发行版 | Ubuntu/Debian 和 CentOS/RHEL 全支持 |
| 启用 IPv6 支持 | 自动修改 sysctl 配置 |
| 检查 interfaces 配置 | Debian 系自动添加 source 行,避免 ifup 找不到配置 |
| 双保险启动 | ifup 失败则自动回退到 ip tunnel 手动创建 |
| 开机自启 | Debian 放 interfaces.d,CentOS 放 ifcfg,重启还在 |
| 测试连通性 | 自动 ping ipv6.baidu.com 和阿里 DNS |
| 一键卸载 | 删除虚拟接口和配置文件,干干净净 |
使用示例
安装隧道
$ curl -sSL http://mc.mohuajz.eu.org/he.sh | sudo bash
检测到系统: ubuntu 22.04
[安装] 启用系统 IPv6 支持...
✓ IPv6 支持已启用
请在 HE Tunnel Broker 网站准备好以下信息:
- Server IPv4 Address
- Client IPv4 Address
...
请输入 Server IPv4 Address: 216.218.221.42
请输入 Client IPv4 Address: 123.123.123.123
请输入 Client IPv6 Address (含前缀): 2001:470:1234:5678::2/64
请输入 Server IPv6 Address (仅IP): 2001:470:1234:5678::1
请输入 MTU [1480]: 1480
[安装] 安装必要工具...
✓ 工具安装完成
[安装] 检查 /etc/network/interfaces 配置...
[安装] 配置隧道 he-ipv6 ...
✓ 隧道启动成功
[安装] 测试 IPv6 连通性...
✓ 成功 ping 通 ipv6.baidu.com
当前 IPv6 地址:
inet6 2001:470:1234:5678::2/64 scope global
HE IPv6 隧道安装完成!卸载隧道
sudo ./he.sh uninstall
# 或者直接运行然后选 2常见问题
Q: 脚本执行后 IPv6 还是不通?
A: 先检查防火墙是否放行协议 41。iptables 示例:
iptables -I INPUT -p 41 -j ACCEPT
ip6tables -I INPUT -p 41 -j ACCEPT如果是 UFW:ufw allow 41。另外尝试降低 MTU 到 1472
Q: 我的服务器在 NAT 内网(如某些云厂家的 VPC)
A: Client IPv4 Address 填内网 IP(如 10.0.0.2),不要填公网 IP。隧道会用内网 IP 建立,NAT 会自动转换
Q: 卸载后 IPv6 还是能用?
A: 脚本只删除 he-ipv6 接口和配置文件,不会禁用系统的 IPv6 支持。想彻底关掉可以手动修改 /etc/sysctl.conf
Q: 脚本更新怎么办?
A: 每次执行都会从服务器获取最新版本,所以直接运行就行。如果想本地留存,可以 wget 一份
最后
这个脚本我已经在自己几台 VPS 上跑过,Debian 11/12、Ubuntu 20.04/22.04、CentOS 7/8 都正常。如果你在使用中遇到任何 bug,欢迎在评论区反馈
折腾 IPv6 的路上,能少敲几行命令就少敲几行。希望这个脚本对你有用
评论 (0)