AetherCloud dynamicv6 住宅 IPv6 的一键部署脚本。在官方下发的基础上做链路优化和 常驻托管,目标是跑完一条命令就能直接用,不用再手动调 MTU、等地址生效、 或者在面板里跟着地址变化改配置。
在 10 台机器(洛杉矶 6 台、香港 4 台)上长期运行验证。
bash <(curl -fsSL https://raw.githubusercontent.com/Kylin010/aethercloud-v6setup/main/v6setup.sh) --auto--auto 会自动挑延迟最低的住宅出口并完成全部配置,适合批量部署。
v6setup.sh 交互式,列出所有出口让你选
v6setup.sh --auto 自动选延迟最低的出口
v6setup.sh --exit <IPv6> 指定用哪个出口地址
v6setup.sh --prefix 2001:b011 指定用哪个前缀下的出口
v6setup.sh --check 体检,不改动任何东西
v6setup.sh --uninstall 卸载本脚本装的东西,不动官方的首次分配的租约,宿主机侧建立隧道需要几分钟。这段时间里地址已经配到网卡上、
路由和邻居状态也都正常,但流量还出不去。--auto 会等它真正连通再继续,
每 30 秒复检一次,最多等 5 分钟(V6SETUP_RETRY 可调)。
跑完命令地址就是能用的,不需要过一会儿再回来手动重跑。
住宅出口经 WireGuard 隧道落地,隧道封装会占用约 100 字节。按 1500 发出的大包 到隧道口需要分片或被丢弃,表现是小请求正常、出站大流量变慢——实测某些线路 出站 2MB 的耗时会差 6 倍以上。
本脚本把 MTU 设为 1400 并挂在网卡上,同时写进 netplan 持久化。挂网卡而不是 挂路由,好处是覆盖全部路由表、且不受官方定时任务重建路由的影响。
需要别的值用 V6SETUP_MTU 指定。
住宅地址是动态的(实测台湾线路 1~2 天换一次),而 Xray 的 sendThrough 只接受
IP 字面量:填域名会报 unable to send through,填 CIDR 段实测 0/3 成功(Xray 会
从段里随机取地址,而你只拥有其中一个),sockopt.interface 也无效(多个地址在
同一张网卡上)。
本脚本用固定 ULA + SNAT 解决:面板里填一个永不改变的内网地址 fd00:6c:7477::1,
常驻服务监听内核地址变化事件,几秒内更新映射。实测台湾线路连续换了三次地址
全部自动跟随,业务无中断。
SNAT 是同一个包在 POSTROUTING 链上多做一次头部改写,纳秒级,相对毫秒级的链路 RTT 没有可测量的延迟开销。
策略表号在每次同步时从内核实时查询,不做缓存,所以线路重建、表号重新编排都能 自动跟上,规则和 SNAT 永远指向同一条隧道。
--auto 会逐个实测候选出口的握手延迟,取最快的。同一台机器上不同落地城市的
差距可能很大——实测加州 21ms、芝加哥 114ms,值得挑一下。
判断哪些地址是住宅出口的依据是策略路由规则的存在与否,不依赖任何写死的前缀, 所以各个机房、各个国家的线路都通用。
v6setup.sh --check────────────────────────────────────────────────────────────
IPv6 出口体检
────────────────────────────────────────────────────────────
网卡 ens3 MTU 1400
MTU 持久化 1400
续约定时器 ✅ active/enabled(上次 Thu 2026-09-10 13:24:46 BST)
ULA 服务 v6nat.service active/enabled
SNAT 指向 2600:1700:2bc1:409d:a::aafc
线路一致性 ✅ ULA 与出口地址同走表 16000
默认 v6 出口 2602:faa8:502:52::a United States · Oneman Network Limited
默认 v4 出口 192.67.63.120
地址状态:
✅ fd00:6c:7477::1 United States · AT&T Enterprises, LLC
✅ 2600:1700:2bc1:409d:a::aafc United States · AT&T Enterprises, LLC
✅ 2602:faa8:502:52::a United States · Oneman Network Limited
几个字段的含义:
线路一致性 —— 比对 ULA 走的策略表和出口地址自身所属的表是不是同一个。 不一致意味着源地址和隧道对不上,包会被上游反欺骗过滤丢弃。
默认 v6 出口 —— 实测三个不同目的地得出,不读路由表。ip -6 route get 在
ECMP 多 nexthop 下只报第一条,据此判断会看走眼。Linux 的 IPv6 ECMP 按 (源, 目的)
哈希,同一目的地恒定、不同目的地才分流,所以要换目的地才测得出来。
续约定时器 —— 租约续期的排程状态。systemd 的单调定时器在某些情况下会算出
NextElapse=infinity(enabled 也 active,但不再触发),届时租约不再续。这一项
会直接报出来并给出恢复命令。
出站的「发送通过」填固定 ULA fd00:6c:7477::1,域名策略选 ForceIPv6 或
UseIPv6 均可(sendThrough 绑了 IPv6 就锁死地址族,两者行为一致)。真实地址
变了不用动面板。
如果更希望地址变化时立刻察觉而不是静默跟随,也可以直接填当前的真实地址
(--check 的「SNAT 指向」那一行)。这样地址一变出站就会失效,你会马上知道,
适合对出口 IP 稳定性敏感的场景。
多个出口做故障转移用 3x-ui 的负载均衡:出站标签统一前缀,建 balancer 选
leastPing,观测器探测 https://www.google.com/generate_204,路由规则填
Balancer Tag 而非 Outbound Tag。实测某个出口挂掉后约 35 秒自动切换。
需要注意负载均衡会在不同落地之间切换。如果承载的是对 IP 地理位置敏感的账号类 业务,建议固定单一出站而不是用池子。
/usr/local/bin/v6setup.sh 本脚本自身,装好后可直接 v6setup.sh --check
/usr/local/bin/v6nat.sh SNAT 跟随服务
/etc/systemd/system/v6nat.service 开机自启
/etc/netplan/99-mtu.yaml MTU 持久化
主表默认路由本脚本不碰,交给官方脚本管理。--uninstall 只清上面这四样。
固定 ULA 默认 fd00:6c:7477::1,用 V6SETUP_ULA 可改。
网卡 MTU 1400 会让所有流量每包少 100 字节载荷,效率损失约 6.7%。对代理流量无感 (瓶颈在延迟和住宅线路带宽),如果机器主要跑大流量传输,可以改用路由级 MTU —— 代价是官方定时任务重建路由表时会清掉,需要额外守护进程补回。
MIT