【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资源

相关推荐
贾修行2 小时前
Kestrel:.NET 的高性能 Web 服务器探秘
服务器·前端·kestrel·.net·net core·web-server·asp.net-core
深信达沙箱2 小时前
如何选择源代码加密软件?应关注哪些核心技术要素
linux·服务器·网络·加密·软件·源代码·沙盒
alex18012 小时前
ubuntu查看目录文件夹大小
linux·运维·ubuntu
那我掉的头发算什么2 小时前
【Spring MVC】手动做出小网页的最后一步——学会SpringMVC响应
java·服务器·后端·spring·mvc
游戏开发爱好者82 小时前
在 Linux 环境通过命令行上传 IPA 到 App Store,iOS自动化构建与发布
android·linux·ios·小程序·uni-app·自动化·iphone
周公挚友2 小时前
centos 7.9 nvm 安装nodejs
linux·运维·centos
济6172 小时前
linux 系统移植(第十二期)---Linux 内核移植(1)--- Ubuntu20.04
linux
EverydayJoy^v^2 小时前
RH134学习进程——六.管理SELinux安全
linux·学习·安全·selinux
小手智联老徐2 小时前
漫谈 Linux 声卡驱动开发的设备树与 I2S
linux·运维·驱动开发