IPv6 入门:开启、配置与常见问题
从地址格式到在 VPS 上启用 IPv6、加 AAAA 记录、绕开防火墙与网关这几个常见坑。
IPv4 地址早已耗尽,越来越多的网络只能靠 IPv6 直连。给服务器配好 IPv6,既能被纯 IPv6 用户访问,也能少依赖运营商 NAT。本文以 Ubuntu/Debian(netplan)为主,走完启用、配置与排错的全流程。
为什么要用 IPv6
- 地址不再稀缺:IPv6 有 128 位地址空间,基本告别短缺。
- 覆盖更完整:移动网络、部分家宽只分配 IPv6,不配可能连不上你的服务。
- 少一层 NAT:每台机器都能拿到公网地址,连接更直接。
地址格式速览
IPv6 地址是 128 位,写成 8 组、每组 4 位十六进制,用冒号分隔:
2001:0db8:0000:0000:0000:0000:0000:0001
可以简写:每组前导零省略,连续的全零组用一个 :: 压缩(全址只能用一次 ::)。上面等价于:
2001:db8::1
常见前缀:fe80::/10 是链路本地地址(每块网卡自带,不可路由);服务商通常给你一个 /64 子网。
在 VPS 上启用与配置
先确认服务商是否已分配 IPv6、给的是单个地址还是一个 /64 段、网关是多少。拿到信息后编辑 netplan 配置(在 /etc/netplan/ 下,名字类似 01-netcfg.yaml):
network:
version: 2
ethernets:
eth0:
dhcp4: true
addresses:
- "2001:db8:1234:5678::100/64"
routes:
- to: "::/0"
via: "fe80::1"
把网卡名(eth0)、地址和网关(via)换成服务商给的值。很多服务商的 IPv6 网关就是链路本地地址 fe80::1。保存后应用:
sudo netplan try # 60 秒内确认,配错会自动回滚
sudo netplan apply
如果服务商支持 SLAAC/DHCPv6 自动下发,也可以只写 dhcp6: true 让系统自动获取。
验证连通性
ip -6 addr show eth0 # 应看到你配置的全局地址(scope global)
ip -6 route show # 确认有默认路由 ::/0
ping6 -c 3 2606:4700:4700::1111 # ping 通公网(Cloudflare DNS)
ping6 能通,说明地址、路由、网关都正确。若 ping6 提示 Network is unreachable,多半是网关或默认路由没配好。
给域名加 AAAA 记录
IPv4 用 A 记录,IPv6 用 AAAA 记录。在你的 DNS 服务商控制台新增一条:
类型: AAAA 主机: www 值: 2001:db8:1234:5678::100
验证:
dig AAAA www.example.com +short
双栈(Dual-Stack)
双栈指一台机器同时跑 IPv4 和 IPv6。同一域名可同时有 A 和 AAAA 记录,客户端自动选可用协议(现代系统偏好 IPv6)。这是最平滑的过渡:老用户走 IPv4,纯 IPv6 用户也能访问,互不影响。
常见坑
- 只配地址没配网关:能 ping 通同网段,却出不了公网。务必配好默认路由 ::/0。
- 防火墙要单独放行 IPv6:IPv4 与 IPv6 规则互相独立。iptables 规则对 IPv6 无效,要用 ip6tables;ufw 默认已管两栈,但要确认 /etc/default/ufw 里 IPV6=yes,再放行端口:
sudo ufw allow 443/tcp # 同时对 IPv4/IPv6 生效
sudo ip6tables -L -n # 直接查 IPv6 规则时用这个
- 服务只监听 IPv4:绑在 0.0.0.0 只听 IPv4;改绑 :: 或另开 IPv6 监听。用 ss -6 -tlnp 确认端口在 IPv6 上也开着。
小结
给 VPS 配 IPv6 的核心步骤:确认服务商分配 → 在 netplan 写好地址与网关 → 用 ip -6 addr 和 ping6 验证 → 加 AAAA 记录。记住两条铁律:默认路由别忘、防火墙要单独放行 IPv6。配成双栈后,新老用户都能顺畅访问你的服务。