IPv6域名配置:A记录vs AAAA记录
一、问题
网站配置DNS的三大困惑:
- A记录和AAAA记录有什么区别?
- 我的网站需要配置IPv6吗?
- 配置错了会导致网站无法访问吗?
核心疑问:什么时候用A记录,什么时候用AAAA记录?
二、方案
DNS记录类型对比:
记录类型
用途
地址格式
示例
A记录
IPv4地址
32位(4段)
192.0.2.1
AAAA记录
IPv6地址
128位(8段)
2001:db8::1
生活比喻:
- A记录:像老式门牌号(1-255号)
- AAAA记录:像新式门牌号(可以有几万亿个)
三、A记录详解
3.1 什么是A记录
定义:将域名映射到IPv4地址
配置示例:
类型: A
主机记录: www
记录值: 192.0.2.1
TTL: 600
解析结果:
$ dig www.example.com A
www.example.com. 600 IN A 192.0.2.1
3.2 IPv4地址格式
结构:4段,每段0-255
192.0.2.1
↓ ↓ ↓ ↓
第1段 第2段 第3段 第4段
总数:2^32 = 42亿个地址
问题:地址不够用,已分配完
四、AAAA记录详解
4.1 什么是AAAA记录
定义:将域名映射到IPv6地址
配置示例:
类型: AAAA
主机记录: www
记录值: 2001:db8::1
TTL: 600
解析结果:
$ dig www.example.com AAAA
www.example.com. 600 IN AAAA 2001:db8::1
4.2 IPv6地址格式
结构:8段,每段4位十六进制
2001:0db8:0000:0000:0000:0000:0000:0001
简写规则:
1. 省略前导0:0db8 → db8
2. 连续的0用::代替(只能用一次)
简写示例:
完整: 2001:0db8:0000:0000:0000:0000:0000:0001
简写: 2001:db8::1
总数:2^128 = 340万亿亿亿亿个地址
五、连接行为
5.1 客户端优先级
现代操作系统:优先使用IPv6
连接流程:
1. 查询DNS
├─ 有AAAA记录? → 尝试IPv6连接
│ ├─ 成功 → 使用IPv6
│ └─ 失败 → 回退到IPv4
└─ 无AAAA记录 → 直接使用IPv4
5.2 回退机制
Happy Eyeballs算法:
同时发起IPv6和IPv4连接
↓
IPv6优先250ms
↓
谁先成功用谁
结果:
- IPv6可用:用IPv6(更快)
- IPv6不可用:自动回退IPv4
六、配置建议
6.1 纯IPv4网站
场景:服务器只有IPv4地址
配置:
# 只配置A记录
www A 192.0.2.1
结果:所有用户通过IPv4访问
6.2 双栈网站
场景:服务器同时支持IPv4和IPv6
配置:
# 同时配置A和AAAA记录
www A 192.0.2.1
www AAAA 2001:db8::1
结果:
- 支持IPv6的用户 → 用IPv6
- 不支持IPv6的用户 → 用IPv4
6.3 强制IPv4
场景:服务器有IPv6地址,但不想启用
配置:
# 只配置A记录,不配置AAAA
www A 192.0.2.1
结果:所有用户强制使用IPv4
七、常见问题
7.1 配置了AAAA但无法访问
原因:服务器IPv6地址不可达
排查:
# 测试IPv6连通性
ping6 2001:db8::1
# 测试HTTP访问
curl -6 https://www.example.com
解决:
1. 检查服务器防火墙是否允许IPv6
2. 检查云服务商是否开启IPv6
3. 如果不支持IPv6,删除AAAA记录
7.2 如何查看网站是否配置AAAA
方法1:dig命令
dig www.example.com AAAA
方法2:在线工具
- https://dnschecker.org/
- 输入域名,选择AAAA记录
7.3 CDN如何处理IPv6
Cloudflare:
- 自动提供IPv6地址
- 即使源站只有IPv4,CDN也提供IPv6接入
配置:
# 源站只有IPv4
origin A 192.0.2.1
# CDN自动提供IPv6
www CNAME example.cdn.cloudflare.net
结果:用户访问www时,CDN返回IPv6地址
八、小结
核心要点:
1. A记录 → IPv4地址(32位)
2. AAAA记录 → IPv6地址(128位)
3. 客户端优先使用IPv6,失败自动回退IPv4
4. 只有服务器支持IPv6时才配置AAAA记录
配置决策树:
服务器是否支持IPv6?
├─ 是 → 配置A + AAAA(双栈)
└─ 否 → 只配置A记录
检查命令:
# 查看A记录
dig example.com A
# 查看AAAA记录
dig example.com AAAA
# 测试IPv6连通性
curl -6 https://example.com
参考资料:
- RFC 3596: DNS Extensions to Support IPv6
- Cloudflare IPv6文档
- Google IPv6统计数据