Ubuntu VPS 手动分配 iPv6 并启用
Ubuntu VPS 手动分配 iPv6 并启用
适用场景:VPS 被分配一个
/64IPv6 子网(如2001:db8:abcd:1234::/64),但系统未自动配置全局地址,需手动启用并设置正确网关(如2001:db8:abcd::1)。
✅ 一、最终成功配置步骤
步骤 1:确认基本信息
1 | |
步骤 2:创建纯净 Netplan 配置(关键!)
1 | |
📌 说明:
ens3:替换为你的实际网卡名(通过ip a确认)::100:可自定义子网内任意地址(避免::0、::1)to: default:新版 Netplan 推荐写法(等价于::/0)on-link: true:必须加!因为网关不在本地 /64 子网
步骤 3:修复权限 & 应用配置
1 | |
步骤 4:验证
1 | |
✅ 成功标志:能 ping 通外网 IPv6 地址,且 ip -6 route show default 非空。
⚠️ 二、踩坑记录与解决方案
| 问题现象 | 原因分析 | 解决方案 |
|---|---|---|
ip -6 route show default 为空 |
Netplan 的 routes 配置未生效 |
使用 cat > 创建无注释、严格缩进的 YAML;确保 on-link: true |
| Netplan 报权限警告 | 配置文件权限过宽(如 644) | 执行 chmod 600 /etc/netplan/*.yaml |
gateway6 被弃用警告 |
新版 Netplan 不支持 gateway6 字段 |
改用 routes + to: default |
| 路由添加失败(Invalid argument) | 网关不在本地子网,未加 on-link |
必须在 Netplan 中设置 on-link: true |
多个 .yaml 文件冲突 |
cloud-init 或其他配置覆盖 | 删除多余文件,或禁用 cloud-init 网络:echo 'network: {config: disabled}' > /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg |
手动 ip route add 成功,但 Netplan 失败 |
YAML 缩进错误(Tab/空格混用) | 用 cat > 方式生成配置,避免编辑器隐藏字符 |
🔍 三、关键原理说明
为什么需要 on-link: true?
- 你的 IPv6 地址:
2001:db8:abcd:1234::100/64 - 网关地址:
2001:db8:abcd::1 - 两者前缀不同(
...:1234::vs...::1),Linux 默认认为“网关不可达” on-link: true告诉内核:“即使不在子网内,也直接通过本接口发包”
为什么不能用 gateway6?
- Ubuntu 22.04+ 的 Netplan 已弃用
gateway6 - 虽然临时可用,但会报 warning,且未来可能失效
- 官方推荐使用
routes明确指定默认路由
🛡️ 四、后续建议
备份配置
1
sudo cp /etc/netplan/00-installer-config.yaml ~/ipv6-config-backup.yaml检查防火墙
若使用 UFW:1
2
3sudo nano /etc/default/ufw
# 确保 IPV6=yes
sudo ufw reload测试服务绑定
确保 Web 服务(Nginx/Apache)监听[::]:80,而不仅是0.0.0.0:80记录提供商信息
- 子网:
2001:db8:abcd:1234::/64 - 网关:
2001:db8:abcd::1 - 控制面板是否需手动启用 IPv6(如某些 VPS 提供商)
- 子网:
🎯 五、总结
| 要点 | 说明 |
|---|---|
| 核心难点 | 网关不在本地 /64 子网 → 必须加 on-link: true |
| 配置关键 | YAML 格式必须纯净(无 Tab、无注释、缩进一致) |
| 验证顺序 | 先 ip -6 addr → 再 ip -6 route → 最后 ping6 |
| 回滚方法 | 删除 IPv6 地址 + 清空路由 + 恢复原始 Netplan |
| 通用性 | 适用于 Hetzner、Contabo、OVH 等提供 /64 + 上级网关的 VPS |
💡 经验之谈:VPS 的 IPv6 配置失败,90% 是因为 网关路由未正确设置,10% 是 YAML 格式问题。只要掌握
on-link: true+ 纯净配置,即可一劳永逸。经过实测确实是配置格式的问题。
写作说明:以上部分内容来自 AI 生成,经过全部实测后补充了内容。
Ubuntu VPS 手动分配 iPv6 并启用
https://enldm.cyou/2025/12/Ubuntu VPS 手动分配 iPv6 并启用/