IPv4 ⇄ IPv6

四种 IPv6 写法互转、映射地址与反向解析域名一并给出。

附反向解析域名IPv6 用最短写法附 32 位十六进制
输入
输出

这里做的是纯文本表示转换与结构解码:IPv4 在 32 位整数与点分、十六进制(0xC0000201 式)、二进制写法之间换算,并按 RFC 4291 给出 ::ffff: 映射形式;IPv6 用 BigInt 拆成 8 组 16 位,同时给出完整展开与 RFC 5952 最短写法两行并列对照。5952 的四条硬规则都实现了:十六进制一律小写、前导零省略、:: 压缩最长的一段连续全 0(等长时取最靠左的一段)、单个 0 组不许用 :: 压缩。

畸形输入一律拒绝并写明原因:组数不是 8、:: 出现两次、内嵌 IPv4 不在地址末尾、分组超过 4 位十六进制、IPv4 八位组带前导零(避免与八进制写法混淆)。唯一的宽容处理是区域标识:fe80::1%eth0 会剥掉 %eth0 照常计算,并在表格里注明——链路本地地址离开区域标识本来就不具唯一性,这是协议语义,不是输入错误。

IPv4 ⇄ IPv6怎么用

  • 写防火墙规则前对齐写法:把日志里看到的缩写形式贴进来,对照「完整展开」行确认每一组十六进制,避免按 :: 压缩形式做字符串匹配时漏掉同一地址的其他合法写法。
  • 隧道地址速检:贴 2002 或 2001::/32 开头的地址,直接读出内嵌的 6to4/Teredo 公网 IPv4,判断隧道两端是谁。
  • 生成反向解析记录:打开「附反向解析域名」,IPv4 得到 x.y.z.w.in-addr.arpa、IPv6 得到 32 个半字节倒序的 ip6.arpa 名,复制进区域文件即可。
  • 特殊前缀的结构解码:落在特殊前缀里的地址会顺手做结构解码:2002: 开头解出 6to4 内嵌 IPv4(该机制已被 RFC 7528 废弃,输出里会注明),2001::/32 解出 Teredo 的服务器、标志位与客户端地址(客户端按 RFC 4380 规则取按位取反还原),ff00::/8 解析组播标志和 scope 半字节(接口本地/节点本地/全球等),fe80::/10 标注链路本地、fc00::/7 标注唯一本地地址。反向解析域名按 in-addr.arpa 八位组倒序、ip6.arpa 半字节倒序生成,可直接抄进 PTR 配置。

常见问题

::1 和 127.0.0.1 是什么关系?

它们是两套协议栈上各自的环回地址:127.0.0.1/8 属于 IPv4(RFC 1127),::1 属于 IPv6(RFC 4291),谁也不是谁的「转换结果」——本页的映射形式 ::ffff:127.0.0.1 表达的是「用 IPv6 地址表示的 IPv4 环回」,与 ::1 不同义。发往环回地址的包不出本机;注意 127.0.0.2 等其他 127/8 地址同样环回,并非只有 .1。

为什么 IPv6 一定要小写?

RFC 5952 把「十六进制字符必须小写」列为 MUST:同一地址 2001:DB8::1 与 2001:db8::1 语法等价,但字符串比对不等价。日志检索、ACL 条目、配置文件里大小写混用时,程序按精确字符串比较就会漏匹配。统一小写、去前导零、:: 压缩最长段,是让「规范形式」唯一化的办法,本工具的压缩行就是这个唯一形式。

fe80:: 开头的地址为什么每台网卡都不一样?

因为它是链路本地地址(fe80::/10,RFC 4291):前 64 位固定是 fe80::/64,后 64 位接口标识传统上由 MAC 地址按 EUI-64 插入 0xff:0xfe 生成(现代系统多用 RFC 4941 的随机临时地址防跟踪)。它只在本网段有效,不能跨路由,所以必须配区域标识才知道走哪张卡——Windows 的 fe80::1%12、Linux 的 fe80::1%eth0 就是这个用途。本工具会剥离 % 部分并注明,正因为这地址离开区域名就不唯一。

对应功能编号 #65无需安装,手机端同样可用按 Ctrl + K 换工具