【HCIE-08】NAT64

  • IPv4 访问 IPv6 所需的具体配置;
  • 为何 IPv6→IPv4 转换必须显式关联 IPv4 地址,而 IPv4→IPv6 看似无需关联(实际是通过 NAT64 前缀隐藏了 IPv4 地址嵌入);
  • NAT64 地址的合法格式(如不能写 2001:1.1.1.1,需用 2002::1.1.1.1 这类规范格式);
  • 静态 1:1 映射可行但 NAT64 协议强制要求地址包含 IPv4 信息的底层原因(协议设计、回包路径、扩展性)。

核心逻辑(回答"为什么必须包含 IPv4 地址")

  1. IPv6→IPv4 必须显式关联 IPv4 地址:IPv6 地址空间(128 位)远大于 IPv4(32 位),是 "多对少" 的压缩转换,必须指定真实可用的 IPv4 地址(或地址池),否则 IPv4 侧无法识别和回包;
  2. IPv4→IPv6 看似无关联实则隐藏 :不是不需要 IPv4 地址,而是通过2002::/96前缀将 IPv4 地址嵌入 IPv6 地址(如2002::1.1.1.1),设备会自动剥离前缀还原 IPv4 地址,本质仍依赖 IPv4 地址关联;
  3. 为何不能用2001:1.1.1.1 :IPv6 语法规定仅最后一组可替换为 IPv4 格式,且需满足 96 位前缀 + 32 位 IPv4 的结构,2001:1.1.1.1长度和格式均不合法,设备无法识别。

1. 合法的 NAT64 嵌入格式

NAT64 前缀是 2002::/96,后面 32 位正好用来放 IPv4 地址。

  • 比如 IPv4 地址 1.1.1.1 会被嵌入成:2002::101:101(十六进制)或2002:0:0:0:0:0:1.1.1.1(标准 IPv6 双冒号压缩后)
  • 这种地址是完全合法的,也是 NAT64 协议规定的格式。

2. 为什么 2001:1.1.1.1 不合法

  • IPv6 地址由 8 组 16 进制数组成,用冒号分隔。
  • 只有在最后一组,才能用 IPv4 地址格式(x.x.x.x)来替代两组 16 进制数,而且必须满足前缀长度要求。
  • 2001:1.1.1.1 不符合这个规则,它的结构是 2001 + 1.1.1.1,长度不足,会被设备识别为无效地址。

压缩后可以变为2002::1.1.1.1


静态 NAT64 配置

复制代码
# 全局前缀
nat64 prefix 2002:: 96

# 接口启用
interface GigabitEthernet 1/0/0  # IPv6侧接口
 nat64 enable


# 静态映射:2001::1(IPv6主机)→1.1.1.6(IPv4映射地址)
nat64 static 2001::1 1.1.1.6 unr-route

nat64 enable必须写在v6这一端 v4那边端口则无需

  1. unr-route 用于自动生成回包路由,是静态映射必加参数。

当nat64前缀设置为2002后2002的地址默认被识别为nat64

所以将该目标地址直接使用nat64转化为v4访问

一开始的前缀是将 目的地址翻译过去 然后源地址靠手工指定 nat64 static

然后就可以成功通信

动态nat

地址池创建后

使用natpolicy 动作源nat绑定地址池

出发回归流程

以AR1为纯IPv6主机、NAT64网关用标准前缀64:ff9b::/96、有状态转换为例,完整流程如下(含源/目的地址与端口转换)。

一、前提与环境

• AR1(IPv6):2001:db8::100,源端口50000

• NAT64网关:IPv6侧2001:db8:64::1;IPv4侧198.51.100.1(地址池);合成前缀64:ff9b::/96

• IPv4服务器:203.0.113.10,目的端口80

• DNS64:将IPv4地址合成IPv6地址(如203.0.113.10→64:ff9b::203.0.113.10)

二、正向发包(AR1→NAT64→IPv4服务器)

  1. AR1发起请求

◦ 源:2001:db8::100:50000

◦ 目的:64:ff9b::203.0.113.10:80(DNS64合成)

◦ 路由指向NAT64网关

  1. NAT64网关处理(核心转换)

◦ 检查目的地址前缀匹配64:ff9b::/96,触发NAT64

◦ 提取内嵌IPv4:64:ff9b::203.0.113.10 → 203.0.113.10

◦ 分配网关IPv4:198.51.100.1:30000(地址池+端口转换)

◦ 创建会话表:记录(2001:db8::100:50000, 64:ff9b::203.0.113.10:80) ↔ (198.51.100.1:30000, 203.0.113.10:80)

◦ 封装IPv4报文:源198.51.100.1:30000,目的203.0.113.10:80,转发到IPv4网络

  1. IPv4服务器接收

◦ 收到IPv4包:源198.51.100.1:30000,目的203.0.113.10:80

三、反向回包(IPv4服务器→NAT64→AR1)

  1. 服务器回包

◦ 源:203.0.113.10:80

◦ 目的:198.51.100.1:30000,发送到NAT64网关

  1. NAT64网关反向转换

◦ 接收IPv4包,查会话表匹配目的198.51.100.1:30000

◦ 地址/端口回换:目的→2001:db8::100:50000;源→64:ff9b::203.0.113.10:80

◦ 封装IPv6报文:源64:ff9b::203.0.113.10:80,目的2001:db8::100:50000,转发到IPv6侧

  1. AR1接收

◦ 收到IPv6包:源64:ff9b::203.0.113.10:80,目的2001:db8::100:50000,完成通信

四、关键总结

• 正向:IPv6→IPv4,做源SNAT+目的地址提取+协议转换,建立会话表

• 反向:IPv4→IPv6,基于会话表逆向转换,保证原路返回

• 核心依赖:DNS64合成地址+NAT64会话表+有状态转换,实现纯IPv6主机访问纯IPv4资源

相关推荐
小Tomkk4 分钟前
数据库 变更和版本控制管理工具 --Bytebase 安装部署(linux 安装篇)
linux·运维·数据库·ci/cd·bytebase
赌博羊4 分钟前
ImportError: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32‘ not found
linux·运维·gnu
木卫二号Coding6 分钟前
第七十九篇-E5-2680V4+V100-32G+llama-cpp编译运行+Qwen3-Next-80B
linux·llama
getapi15 分钟前
Ubuntu 22.04 服务器的系统架构是否为 amd64 x86_64
linux·服务器·ubuntu
消失的旧时光-194332 分钟前
Linux 入门核心命令清单(工程版)
linux·运维·服务器
艾莉丝努力练剑39 分钟前
【Linux:文件】Ext系列文件系统(初阶)
大数据·linux·运维·服务器·c++·人工智能·算法
Trouvaille ~1 小时前
【Linux】TCP Socket编程实战(一):API详解与单连接Echo Server
linux·运维·服务器·网络·c++·tcp/ip·socket
liann1191 小时前
3.1_网络——基础
网络·安全·web安全·http·网络安全
独行soc1 小时前
2026年渗透测试面试题总结-17(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
辣香牛肉面1 小时前
Wireshark v4.6.2 开源免费网络嗅探抓包工具中文便携版
网络·测试工具·wireshark