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

相关推荐
zzzsde1 分钟前
【Linux】进程(4):进程优先级&&调度队列
linux·运维·服务器
半壶清水9 分钟前
[软考网规考点笔记]-软件开发、项目管理与知识产权核心知识与真题解析
网络·笔记·压力测试
凡人叶枫12 分钟前
C++中智能指针详解(Linux实战版)| 彻底解决内存泄漏,新手也能吃透
java·linux·c语言·开发语言·c++·嵌入式开发
JMchen12327 分钟前
Android后台服务与网络保活:WorkManager的实战应用
android·java·网络·kotlin·php·android-studio
yuanmenghao34 分钟前
Linux 性能实战 | 第 7 篇 CPU 核心负载与调度器概念
linux·网络·性能优化·unix
那就回到过去37 分钟前
MPLS多协议标签交换
网络·网络协议·hcip·mpls·ensp
qq_297574671 小时前
Linux 服务器 Java 开发环境搭建保姆级教程
java·linux·服务器
70asunflower1 小时前
Emulation,Simulation,Virtualization,Imitation 的区别?
linux·docker
那就回到过去2 小时前
VRRP协议
网络·华为·智能路由器·ensp·vrrp协议·网络hcip
神梦流2 小时前
ops-math 算子库的扩展能力:高精度与复数运算的硬件映射策略
服务器·数据库