2025-12-26 · 架构
32
架构 · 2025-12-26

IPv6域名配置:A记录vs AAAA记录

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:0db8db8
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统计数据

目录 最新
← 左侧翻上一屏 · 右侧翻下一屏 · 中间唤出菜单