IPv6展开压缩
IPv6 地址展开和压缩。
这个工具能做什么
这个工具做两件互为反向的事:把 IPv6 地址展开成完整的 8 组、每组 4 位十六进制的标准形式,或者把完整地址压缩成带 :: 的简写。IPv6 地址有 128 位,写全了是 39 个字符,日常配置、看路由表、核对防火墙规则时,同一个地址可能出现压缩写法、去掉前导零的写法、大小写混用等好几种样子,肉眼判断两个地址是不是同一个很容易出错。把地址统一成完整形式再逐组比对,或者反过来压成最短写法方便记录,是排查这类问题最省事的办法。整个转换在浏览器本地完成,地址不会上传。
压缩和展开遵循 RFC 4291 和 RFC 5952 的规则。展开时,把 :: 还原成若干组 0000,使总数补足 8 组,再把每组不足 4 位的用前导零补齐,比如 2001:db8::1 展开为 2001:0db8:0000:0000:0000:0000:0000:0001。压缩时反过来走两步:先去掉每组的前导零(0db8 变 db8,0000 变 0),再用 :: 替换掉最长的一段连续全零组。这里有两条硬性约束:一个地址里 :: 只能出现一次,否则无法确定它代表几组零;当有多段等长的全零时,按 RFC 5952 取最靠前的那一段,且单独一组零不建议用 :: 代替。规范写法还要求十六进制字母用小写,这也是本工具输出的默认形式。
实际用得最多的是核对和归一化。比如你在两处配置里分别看到 fe80::1 和 fe80:0000:0000:0000:0000:0000:0000:0001,展开后一眼就能确认是同一个链路本地地址;再比如接口返回或日志里记录的是压缩形式,而 ACL 里写的是完整形式,先都转成完整形式再做字符串比对,就不会漏判。反过来,当你要把一串又长又全的地址填进文档、命令行或聊天窗口时,压缩成 2001:db8::ff00:42:8329 这样的最短写法更好读也更少敲错。写脚本批量比对地址时,先统一成完整形式再比较,能避开写法差异带来的假阴性。
几个容易踩的边界:地址后面常带前缀长度(如 /64)或接口作用域标识(如 %eth0),这些不属于地址本身,转换时应保留原样、不参与压缩;内嵌 IPv4 的写法如 ::ffff:192.168.1.1,其中最后 32 位是点分十进制,展开时要把它并入十六进制表示(::ffff:c0a8:0101)。还要注意 :: 只能表示连续的零组,不能用来省略中间某一位;单个 :: 代表未指定地址(全零),::1 是回环地址,别和压缩规则混淆。本工具只做展开与压缩的形式转换,不校验地址是否可路由、属于哪类地址段,也不做 DNS 解析,如需判断地址类型请另配相应工具。
IPv6展开压缩是一个免费的在线工具,打开网页就能用,不用下载也不用注册。平时大家搜的“ipv6展开”、“ipv6压缩”、“ipv6简写”,说的都是这个。
常见使用场景
- 核对两处配置里的地址是否为同一个
- 把日志里的压缩地址还原成完整形式再比对
- 将超长地址压成最短写法填进文档
- 统一地址写法后写进防火墙 ACL
- 确认 fe80:: 链路本地地址的完整形式
使用方法
- 把内容粘贴到输入框(生成类工具直接设置选项)。
- 按需要选择选项,点操作按钮。
- 结果出现在下方,点「复制结果」即可带走。