IPv6 是什么意思:地址结构、优点与国内现状
IPv6 是第 6 版互联网协议(Internet Protocol version 6),是 IPv4 的后继者。它把地址从 32 位扩展到 128 位,多到每个网段都可以固定用 /64,从根本上解决了 IPv4 地址耗尽、不得不层层 NAT 的问题;代价是与 IPv4 不能直接互通,两者要长期并存。
IPv6 是什么意思:它是互联网协议(Internet Protocol)的第 6 版,由 IETF 制定,用来接替今天仍在大量使用的第 4 版 IPv4。核心规范最早是 1998 年的 RFC 2460,2017 年由 RFC 8200 取代并成为正式的互联网标准。IPv6 最直接的变化是地址长度:IPv4 是 32 位,约 43 亿个地址;IPv6 是 128 位,地址总数是 2^128,约 3.4 × 10^38 个,完整写法是 8 组用冒号分隔的十六进制数,通常压缩成 2001:db8:1a2b:10::25 这样的形式。它要解决的核心问题是 IPv4 地址不够用,顺带简化了报头、取消了广播和 ARP、内置了地址自动配置。示例地址使用文档专用前缀 2001:db8::/32。
IPv6 要解决什么问题:IPv4 地址不够用了
43 亿个 IPv4 地址,在互联网设计之初看起来用不完,到了每人一部手机、每台服务器若干个地址的年代就远远不够。几个时间点:
| 时间 | 事件 |
|---|---|
| 2011 年 2 月 | IANA 把最后 5 个 /8 地址块分给五个地区互联网注册机构,全球公共地址池分配完毕 |
| 2011 年 4 月 | 负责亚太地区的 APNIC 开始分配最后一个 /8,此后每个新会员只能申请到很少量的地址 |
| 此后 | 各地区注册机构陆续耗尽,新增 IPv4 地址主要靠转让和租用,地址本身成了要花钱买的资源 |
IPv4 世界的应对办法是 NAT:家里的路由器把一个公网地址分给全家设备共用,运营商再在更大范围内做一层运营商级 NAT,让许多宽带用户共用一个公网地址。NAT 缓解了地址短缺,但也带来了副作用:外部无法主动连到 NAT 后面的设备,远程访问、点对点通信都要绕路;日志里的地址不再对应一台设备,溯源要同时拿到地址、端口和时间;NAT 设备要为每条连接维护状态,自己成了瓶颈和故障点。
IPv6 的思路是从根上解决:地址多到不必再省,每台设备都分配全局唯一的地址,网络重新回到“端到端可达”,不再需要 NAT。
IPv6 地址长什么样:128 位怎么分层
128 位地址写成 8 组、每组 4 个十六进制数,可以省略每组的前导零,并用一次 :: 代替连续的全零组。比书写规则更重要的是分层:IPv6 地址按前缀长度逐级分配,机房和企业拿到的是一个大前缀,再往下切。以机房为例:
| 层级 | 前缀长度 | 例子 | 含义 | 往下一层能分出多少 |
|---|---|---|---|---|
| 地址持有者 | /32 | 2001:db8::/32 | 运营商或大型机构从注册机构拿到的段 | 65,536 个 /48 |
| 站点 | /48 | 2001:db8:1a2b::/48 | 一个机房或一个企业 | 65,536 个 /64 |
| 网段 | /64 | 2001:db8:1a2b:10::/64 | 一个 VLAN,或分给一台服务器 | 2^64 个接口地址 |
| 接口 | /128 | 2001:db8:1a2b:10::25 | 一块网卡上的一个地址 | — |
一个 /48 能切出 65,536 个 /64,而一个 /64 里有 2^64 个地址,是整个 IPv4 地址总数的约 43 亿倍。所以 IPv6 里没有人去算“这个段能放几台主机”:局域网段统一用 /64,地址的后 64 位是接口标识,无状态地址自动配置(SLAAC)正是靠这 64 位让主机自己生成地址。点对点的设备互联链路可以用 /127,这是 RFC 6164 专门允许的例外。
和 IPv4 相比,还有一个习惯要改:一块网卡通常同时有好几个 IPv6 地址。fe80 开头的链路本地地址每块启用了 IPv6 的网卡都有,只在本链路内有效,用于邻居发现和找网关;2 或 3 开头的全局单播地址才能上公网;此外还可能有 fd 开头的唯一本地地址(类似 IPv4 私网地址)和定期更换的临时地址。IPv6 也没有广播,原来靠广播完成的事改用组播(ff 开头)。
IPv6 和 IPv4 的主要差异
| 对比项 | IPv4 | IPv6 |
|---|---|---|
| 地址长度 | 32 位 | 128 位 |
| 写法 | 点分十进制,如 192.0.2.10 | 冒号十六进制,如 2001:db8::10 |
| 子网表示 | 子网掩码或前缀长度,段的大小各不相同 | 只用前缀长度,局域网段统一 /64 |
| 基本报头 | 20–60 字节,长度可变,带报头校验和 | 固定 40 字节,取消报头校验和,可选功能放进扩展报头 |
| 分片 | 发送方和沿途路由器都可以分片 | 只有发送方分片,路由器不分片,依赖路径 MTU 发现;链路 MTU 最小 1280 字节 |
| 地址解析 | ARP,广播查询 | 邻居发现协议 NDP,用 ICMPv6 组播 |
| 广播 | 有 | 没有,用组播代替 |
| 地址配置 | 手工配置或 DHCP | 手工配置、SLAAC 无状态自动配置、DHCPv6 |
| NAT | 普遍使用 | 设计上不需要 |
| 一块网卡的地址数 | 通常 1 个 | 通常多个 |
| DNS 记录类型 | A | AAAA |
| 反向解析域 | in-addr.arpa | ip6.arpa |
这张表里,对运维影响最大的是三行:没有 ARP,绑定和防欺骗要针对 NDP 重新做;路由器不分片,ICMPv6 不能随便拦;一块网卡多个地址,排查时要先分清看的是哪一个。
IPv6 的优点,以及它没解决的问题
IPv6 的优点要具体看,以下几条是实打实的:
- 地址充足。服务器、容器、物联网设备都能拿到全局地址,规划时不必再为省地址把网段切得很碎;机房可以给每台服务器一整个 /64,而不是按个出售 IPv4。
- 端到端可达。不需要端口映射,日志里记录的地址就是真实来源,溯源不用再去翻 NAT 设备的转换记录。
- 自动配置。主机根据路由器通告的前缀自己生成地址,接上网线即可使用。
- 前缀规整,便于汇总。地址按层级分配,一个运营商或机房对外通常只需宣告少量前缀。
- 报头简化。基本报头定长、不做校验和,路由器逐跳处理的工作更少。
同样要说清楚它没解决的问题:
- 与 IPv4 不兼容。过渡期主要靠双栈并行,运维对象随之翻倍:两套地址、两套路由、两套防火墙规则。
- 安全不会自动变好。IPsec 曾在 RFC 4294 里被列为 IPv6 节点必须支持,2011 年的 RFC 6434 改成了“应当”支持,不能把加密当成 IPv6 自带。邻居发现和 ARP 一样没有认证,存在 NDP 欺骗和伪造路由器通告的攻击,交换机上要开启 RA Guard 一类的防护。
- 速度不一定更快。快慢取决于路径和对端,与协议版本关系不大。
国内 IPv6 推进到了哪一步
国内的 IPv6 部署由政策推动。2017 年 11 月,中共中央办公厅、国务院办公厅印发《推进互联网协议第六版(IPv6)规模部署行动计划》,对运营商网络、数据中心、云服务、内容分发网络以及政府和重点网站应用提出了分阶段的改造要求。2021 年 7 月,工业和信息化部、中央网信办印发《IPv6 流量提升三年专项行动计划(2021—2023 年)》,把重点放在提升 IPv6 的实际流量上,原因很直接:用户拿到了 IPv6 地址,不等于流量就走 IPv6,服务端没有 AAAA 记录,连接仍然走 IPv4。
经过这几年,三家基础运营商的手机网络和许多地区的家庭宽带已经普遍下发 IPv6 地址,主流云平台的云服务器、负载均衡和 CDN 都提供 IPv6 选项,政府网站和大型互联网应用陆续完成了改造。活跃用户数、流量占比等最新数字,以国家 IPv6 发展监测平台定期发布的数据为准。
对 IDC 来说,变化会从客户那里传过来:政企客户的网站有 IPv6 改造要求,托管它们的机房就要能提供 IPv6 地址、双栈网关和对应的防护;租服务器的客户也越来越多地问“能不能给 IPv6”。机房需要提前准备的,是向上游申请 IPv6 段、让网关和交换机支持双栈,以及一份能管住 IPv6 分配的台账。
第一次接触 IPv6,运维先改掉这几个习惯
一、防火墙不是一套,是两套。 iptables 只管 IPv4,IPv6 的规则在 ip6tables 里。服务器拿到公网 IPv6 地址后,如果只写了 iptables 规则,服务在 IPv6 上就等于完全敞开。firewalld 的区域规则对两者同时生效;ufw 在 /etc/default/ufw 里 IPV6=yes 时也会同时管理;直接手写 iptables 脚本的服务器最容易漏。检查方法:
# 只列出 IPv6 上的监听端口;本地地址显示为 [::] 或 * 的,表示在所有地址上监听
ss -6 -tlnp
# 分别查看 IPv4 和 IPv6 的入站规则;ip6tables 为空且默认策略是 ACCEPT,说明 IPv6 没有任何过滤
iptables -S INPUT
ip6tables -S INPUT
二、不要整类封掉 ICMPv6。 IPv4 时代有人习惯把 ICMP 全部禁掉,在 IPv6 上这样做会直接断网。RFC 4890 对 ICMPv6 的过滤给了详细建议,至少下面这些要放行:
| 类型 | 名称 | 为什么不能拦 |
|---|---|---|
| 1 | 目的不可达 | 连接失败时及时告知,而不是傻等超时 |
| 2 | 数据包过大 | 路由器不分片,路径 MTU 发现全靠它,拦掉后大包会卡住 |
| 3 | 超时 | traceroute 依赖它 |
| 4 | 参数问题 | 报头出错时的反馈 |
| 133–136 | 路由器请求、路由器通告、邻居请求、邻居通告 | 地址自动配置、找网关、查邻居 MAC 都靠它们,相当于 IPv4 的 ARP 加上一部分 DHCP |
| 128、129 | 回显请求、回显应答 | ping 用,可以限速放行 |
三、不要为了“省地址”把网段切得比 /64 小。 给服务器配 /120、/112 这种前缀,会让 SLAAC 等依赖 64 位接口标识的功能失效。地址不缺,局域网段一律 /64,需要给客户更多地址就给 /56 或 /48。
四、封禁和限速按 /64 考虑。 一台主机在自己的 /64 里可以随时换地址,按单个地址封禁,对方换一个地址就绕过去了。防火墙黑名单、接口限流、白名单都应该以 /64 为单位思考。
五、加 AAAA 记录之前,确认 IPv6 真的通。 按 RFC 6724 的默认规则,系统通常优先使用 IPv6。浏览器有快速回退机制,很多程序和脚本却没有:域名一旦有了 AAAA 记录而服务器的 IPv6 不通,这些客户端就会卡在连接超时上。上线前从一台有 IPv6 的外部机器测一遍:
# 加记录前:绕过 DNS,直接连服务器的 IPv6 地址,能返回 HTTP 状态行才算通
curl -6 -sI --resolve www.example.com:443:[2001:db8:1a2b:10::25] https://www.example.com/ | head -1
# 加记录后:确认 AAAA 已生效,再用域名测一次
dig AAAA www.example.com +short
curl -6 -sI https://www.example.com/ | head -1
在机房里怎么落地
IPv6 的规划比 IPv4 简单,难点在于跟踪:从上游拿到一个 /48 或更大的段,切成 /64 分给服务器、切成 /56 分给大客户,几年下来哪些子段分给了谁,没有台账很快就理不清。
Toplink DCIM 的 IP 地址管理对 IPv6 原生支持:IPv6 段和 IPv4 一样按 CIDR 录入,可以按掩码拆成更小的子段;给服务器分配时系统自动切出合适的子段,也可以为服务器批量分配 IPv6 段,或在某个地址块内生成指定数量的地址。IPv4 和 IPv6 地址段集中登记在同一个系统里,哪个子段分给了哪台服务器,查台账即可。
常见问题
只有 IPv6 的服务器能访问 IPv4 网站吗?
不能直接访问。除了改成双栈,还可以用 NAT64 加 DNS64:DNS64 给只有 A 记录的域名合成一个 AAAA 地址(常用前缀 64:ff9b::/96),NAT64 网关再把流量转换成 IPv4。云平台是否提供这类网关,以平台文档为准。
为什么没有 IPv5?
版本号 5 早年分给了实验性的 Internet Stream Protocol(ST 及后来的 ST2),用于传输实时音视频流,从来不是 IPv4 的替代方案。5 已被占用,所以下一代 IP 用了 6。
家里有了 IPv6,外网就能直接访问家里的设备吗?
地址上可以,全局 IPv6 地址本身是端到端可达的。但不少家用路由器和光猫默认拦截外部主动发起的 IPv6 连接,需要手动放行;运营商下发的前缀也可能在重新拨号后变化,长期访问还要配合动态域名。