使用方法
- 「IPv4 地址」输入框默认填 192.168.1.1,接受点分十进制写法,四段之间用英文句点分隔;输入框的占位提示里也写了同一个示例。
- 「输出形式」下拉框列出 IPv4-mapped、IPv4-compatible、6to4 与 NAT64 四种写法,默认 IPv4-mapped;改动选项会立刻重算,已填的地址不会丢。
- 结果区一次给出全部四种形式,当前选中的那张卡片加深底色。它们不必来回切换就能横向比对,因为四者的后 32 位完全相同。
- 「快速填入」下拉框里放了十二个常见内网与公网地址,选中后直接写进输入框并立即转换,省去手打。
- 在 IPv4 地址输入框里直接按回车即开始转换,不必点「转换」按钮。改动地址或下拉框选项都会即时重算。
- 「复制主结果」把当前选中的那一种写法放进剪贴板;下方对照表的「复制对照表」按钮复制制表符表格,「导出 CSV」带 UTF-8 字节序标记,表格软件里不会乱码。对照表默认展开六行,点「加载更多」看全十二行。
这个IPv4转IPv6转换器能解决什么问题
本页解决的是「手上有一个 IPv4 地址,要把它写成能填进 IPv6 配置里的形态」这一件事。防火墙白名单、服务端监听地址、容器网段、hosts 记录,只要目标进程开了 IPv6 监听,同一个来源就可能被记成 IPv6 形态的地址,照抄原来的 IPv4 规则往往匹配不上;把地址按对应前缀写成 IPv6 形态,规则才生效。
先讲清楚一件事:本页不做协议转换。真正的 IPv4 与 IPv6 互通要靠双栈、隧道或协议翻译网关,光改地址的写法不会让网络通起来。本页做的是同一个 32 位地址在四种 IPv6 前缀下的书写形式,四条结果的后半截逐字相同,变的只是前缀。
常见的落地场景有三类。一是核对来源地址:双栈服务端收到的 IPv4 连接常被内核表示成 ::ffff: 开头的地址,日志里看到的和写进配置的并不是一回事。二是写 NAT64 的测试规则:需要把目标 IPv4 套进 64:ff9b:: 前缀。三是搭 6to4 隧道时填端点地址,此时 IPv4 位置当作隧道入口,后面还要补 ::1 表示本机。
IPv4转IPv6转换器把这四种形式摊在同一屏里,还有一个排错上的用处:拿到一个暂时看不懂的地址,按四种前缀各写一遍,就能判断它属于哪一种语义——是操作系统给出的兼容映射,是隧道端点,还是翻译网关背后的真实地址。
IPv4 嵌入 IPv6 的原理与四种前缀
转换只有三步:逐段转两位十六进制、前后两两拼成十六位组、按 IPv6 的书写规则去掉组内前导 0。
- 第一步,四段各转两位十六进制:192 转成 c0,168 转成 a8,第三段 1 转成 01,第四段 1 转成 01,不足两位时左侧补 0。
- 第二步,前两段拼成 g1 等于 c0a8,后两段拼成 g2 等于 0101,拼好的原始十六进制串是 c0a80101。
- 第三步,去掉每组的前导 0:g2 的 0101 压成 101,g1 的 c0a8 首位不是 0,保持不动。
于是后 32 位写成 c0a8:101,四种形式就是给它套上不同前缀:IPv4-mapped 为 ::ffff:c0a8:101,IPv4-compatible 为 ::c0a8:101,6to4 为 2002:c0a8:101::1,NAT64 为 64:ff9b::c0a8:101。
为什么四种形式能共用同一段尾巴。IPv4 的 32 位地址被原样摆进 IPv6 的 128 位低位,高位再补前缀,整个过程没有改动任何一个比特,所以这谈不上「翻译」,只是同一个数放进不同容器时的写法。全部差别集中在前缀:前缀决定了内核与网络设备如何解释这 128 位。
为什么双栈场景看到的多半是 ::ffff:。IPv4-mapped 是操作系统给 socket 用的内部兼容表示:一个监听 IPv6 的 socket 可以同时接收 IPv4 连接,内核把对端的 IPv4 地址补成 ::ffff: 形式交给应用层,程序只需要维护一套地址结构。反过来,IPv4-compatible 的 :: 前缀属于早期方案,已被废弃,现网几乎没有设备转发这类地址,本页保留它只是为了对照。
为什么 6to4 比别人多出一节 ::1。6to4 把 IPv4 地址当作隧道端点来用,2002: 后面紧跟的是端点的公网 IPv4,剩下的一半还要指定隧道里具体哪台主机,::1 就表示端点本机;换成别的编号,指的就是隧道内的另一台设备。NAT64 的 64:ff9b:: 则是协议翻译网关的约定前缀,网关靠它识别「这一段里嵌着一个 IPv4」。两者一个是隧道、一个是翻译,用途完全不同。
为什么压缩只压这两处。IPv6 的标准书写允许两种省略:一是用 :: 代替连续的一个或多个全 0 组,且整个地址里只能出现一次;二是省略每组内部的前导 0。c0a8 的前导字符是 c,无从省略;0101 的前导字符是 0,于是缩成 101。这也是为什么 192.168.0.1 会压出 c0a8:1 这种短尾巴,而 192.168.1.1 压出的是 c0a8:101。
完整示例(数值仅作演示)
默认示例的完整链条是:192.168.1.1 → 逐段十六进制 c0.a8.01.01 → 原始串 c0a80101 → 分组 c0a8:0101 → 压缩 c0a8:101。四种形式如下,均由本页算法当场复算得到:
- IPv4-mapped → ::ffff:c0a8:101
- IPv4-compatible → ::c0a8:101
- 6to4 → 2002:c0a8:101::1
- NAT64 → 64:ff9b::c0a8:101
再举两个公网与环回地址的例子。8.8.8.8 逐段转成 08.08.08.08,原始串是 08080808,g1 与 g2 压缩后都是 808,后 32 位写成 808:808,mapped 形式就是 ::ffff:808:808。127.0.0.1 转成 7f.00.00.01,原始串 7f000001,g2 压缩后只剩 1,后 32 位写成 7f00:1。这两个例子里都出现了被压短的一组,直接按八位十六进制照抄反而写错。
反过来也成立:肉眼看着相似的地址未必撞在一起。1.1.1.1 得到 101:101,而 10.1.1.1 得到 a01:101,两组的切分位置不同,所以不能靠数位点去推算结果。示例数值均为演示,不代表任何现网地址的推荐写法。
常见内网与公网地址对照表
下表列出十二个常见地址的转换结果,第三列是四种形式共用的后 32 位,第四列给出 IPv4-mapped 的完整写法;把第三列套上另外三种前缀,就得到 compatible、6to4 与 NAT64 的结果。
读表要点:开头几位为 0 的组会被压短,10.0.0.1 压成 a00:1,192.168.0.1 压成 c0a8:1;四段都不含前导 0 时,两个组都保持四位,255.255.255.255 因此写成 ffff:ffff。
结果边界、舍入与适用说明
- 地址必须恰好四段,少于或多于四段会给出「请填写 4 段点分十进制地址,例如 192.168.1.1」的提示;写成 192.168.1 也归在这一类。
- 每一段只能是 0 到 255 的十进制数,越界的那一段会被点名;192.168.1.256 会停在第三段之后的提示上,不会默默取余。
- 地址里只允许数字与点,出现空格、字母、冒号或中文标点会给出「IPv4 地址只能包含数字和点」。带端口的写法如 192.168.1.1:8080 不被接受,请先把端口拆出来。
- 输入框为空时给出「请先填写一个 IPv4 地址」,页面不会拿上一次的结果冒充本次输出。
- 本页不处理 CIDR 网段写法(如 192.168.1.0/24)、不解析域名、也不接受 IPv6 输入,这些形式请先摊成单个地址。
- 结果一律小写十六进制,符合 IPv6 的推荐书写;个别系统习惯大写,两种写法等价,可以按场景自行转换。
- 「快速填入」只覆盖地址输入框的内容,不会改动当前选中的输出形式。
- 页面不联网、不写本地存储,刷新后回到默认地址与默认输出形式。
常见问题
四种形式里我该用哪一个?
看场景:给双栈服务端写访问控制或核对日志,用 IPv4-mapped;搭隧道或用现成的 6to4 中继,用 6to4;对着 NAT64 网关写测试目标,用 NAT64。IPv4-compatible 已废弃,留在这里只作对照。
转换出来的地址为什么 ping 不通?
因为本页只改写法,不改承载方式。地址能否连通取决于是否有双栈、隧道或协议翻译网关把它送到目的地;缺了这层机制,写法再正确也不会通。这不是结果出错,是两种问题不在同一个层面。
:: 这种形式为什么几乎见不到?
因为 IPv4-compatible 已被协议废弃,现代操作系统不再自动产生它,现网设备通常也不转发以它为目的地的报文。它在遗产文档与教科书里还常见,实际配置请优先使用 ::ffff: 的 mapped 形式。
日志里的地址和转换结果长得很像,为什么多了方括号?
那是把地址与端口分开的写法,例如 [::ffff:c0a8:101]:8080。方括号只用于书写时的定界,地址本身没有任何变化,去掉方括号与端口后应当与页面结果逐字相同。
能不能一次转整个 192.168.1.0/24 网段?
本页一次处理一个地址。网段请先算出首末地址逐个转换:这一段的转换结果都以 c0a8:1 开头,只有最后一组的两个字符在变。若要按 IPv6 的思路规划网段,那是另一套前缀长度的学问,本页不提供。
6to4 结果后面的 ::1 能改吗?
能,它表示隧道内的主机编号。2002: 之后紧跟的是端点的公网 IPv4,后半段留给隧道里的设备;::1 指端点本机,换成 ::2 之类就是同一端点后的另一台设备。注意这只合法用在 6to4 形式上,mapped 与 NAT64 后面没有这一节。
这个工具免费吗?
免费,无需注册即可使用。
输入的数据安全吗?
安全。计算在当前浏览器本地完成,不会上传输入内容。
相关工具
- Base64 编码解码:把二进制数据转成可打印字符,常用于配置文件与接口传参。
- 数字进制转换器:本页逐段转十六进制的那一小步,用它可单独验算。
- 二进制转文本:按八位一组还原字符,适合核对拼好的比特串。
- URL 编码解码:处理地址里带 IPv6 方括号写法时的转义。
- HTML 实体编码解码:把特殊字符写成实体形式,便于嵌进网页。