1. 先确认实例确实分配了 IPv6#
IPv6 不是填一个地址就能使用。先打开 KiwiVM 查看当前实例是否有 IPv6 地址、前缀长度、网关以及启用入口。套餐、机房和镜像不同,实际支持范围也不同;没有分配信息时,应先查询账户中的说明或提交工单。

截图是官方旧版界面,仅用于定位实例信息;它不表示截图中的套餐已经支持 IPv6。不要照抄历史文章中的隧道服务、别人的地址或固定网关。IPv4 和 IPv6 可以同时使用,不需要先关掉 IPv4。
2. 查看系统已经有哪些地址和路由#
通过现有 IPv4 SSH 登录,保留这个窗口。下面命令只查看状态,不修改网络。
ip -6 address show
ip -6 route show
ip -br linkfe80:: 开头通常是链路本地地址,单凭它不能说明已经能访问 IPv6 互联网。观察是否存在服务商分配的公网地址,以及 default via 或对应接口的默认路由。接口名可能是 ens3、enp1s0,也可能是 eth0,应使用实际输出中的名称。
接着检查本机配置由什么管理:Ubuntu 常见 Netplan,其他镜像可能使用 NetworkManager 或 systemd-networkd。不要同时给同一张网卡写两套配置。
3. 按服务商给出的方式启用#
如果面板提供自动配置,先使用面板方式,再回到系统确认。手动配置前备份现有网络文件,并打开网页控制台作为恢复入口。
Netplan 环境中,先查看 /etc/netplan/ 中现有 YAML 文件。若服务商明确要求 DHCPv6,可在原网卡配置中增加 dhcp6: true;静态分配则需要把本机真实地址/前缀加入 addresses,并按服务商提供的网关配置 IPv6 默认路由。保留原 IPv4 部分,不要用一段通用模板覆盖整份文件。
sudo netplan generate
sudo netplan try --timeout 120第一条检查配置能否生成;第二条临时应用并等待确认。出现缩进错误先修复 YAML。确认 IPv4 SSH 和 IPv6 都正常后再接受配置;超时回滚后也应通过控制台检查实际状态。由 cloud-init 生成的文件还要核对镜像说明,避免下次启动被重写。
4. 分别验证出站和入站#
ping -6 -c 4 2606:4700:4700::1111
curl -6 -I --connect-timeout 10 https://www.cloudflare.com/
sudo ss -lntpPing 成功说明到该目的地址的 ICMPv6 可达;curl -6 成功才进一步证明 DNS、IPv6 路由和 HTTPS 连接正常。出站正常后,用一台具备 IPv6 网络的设备测试服务器上的真实服务,例如 ssh -6 -p 22 用户名@你的IPv6地址。
网页或应用要监听 IPv6 地址,且防火墙同时允许需要的 IPv6 端口。不要一概屏蔽 ICMPv6,它参与邻居发现和路径 MTU 等必要网络功能。
5. 最后添加 AAAA,并检查双栈访问#
在域名 DNS 中添加 AAAA,值为服务器 IPv6 地址;先确认 IPv6 上的网站和证书已经正常,再让用户访问。只有 IPv4 网站工作、IPv6 配置不完整时,过早添加 AAAA 会导致部分用户访问失败。
dig +short AAAA example.com
curl -4 -I https://example.com/
curl -6 -I https://example.com/两种连接都要返回预期站点。若 IPv6 失败,先修复或撤回错误的 AAAA,再按地址、路由、监听、防火墙的顺序定位。继续阅读域名解析与网络排障。
完成后检查
IPv4 正常不能证明 IPv6 正常。双栈站点应分别测试两种地址。