无状态NAT64、NAT46配置.note

noteId: WEB74bae5e80b8105d5a0c17213d3aab8f0 · 原始路径:/ALL/网络 - C模块/NAT64/无状态NAT64、NAT46配置.note · 图片:10 · 附件待处理:0

 
 
 
无状态NAT64和有状态NAT64不同,不维护转换的任何信息
 
 
 
·拓扑图:
 
 
一、无状态 NAT46 配置:
使用 nat64 prefix stateless 定义前缀的都是无状态化转换
使用 nat64 prefix stateful 定义前缀的都是有状态化转换
1、静态一对一转换:
将 136.136.136.136/32 转换为 2001:abcd::8888:8888/128
136.136.136.136 是8888:8888这个 16进制转换后的十进制 ,必须要配置这种能转换的,才能映射成功
(访问136.136.136.136就能够访问到Inside的 Loop0接口)
 
转换:
136(十进制) -> 88(十六进制)
136.136(十进制) -> 8888(十六进制)
136.136.136.136 -> 8888:8888
 
# NAT64设备:
ipv6 un
 
int g0/0
 no sh

 ip address 1.1.1.2 255.255.255.0



 nat64 enable
 
int g0/1
 no sh
 ipv6 enable
 ipv6 address 2001:DB8::1/64
 nat64 enable
 exit
 
# Inside 设备:
ipv6 un
 
int g0/0
 no sh
 ipv6 enable
 ipv6 address autoconfig
 ## 仅开启接口,通过slaac自动获取一个地址
 
int loop 0
 no sh
 ipv6 address 2001:ABCD::8888:8888/128
 
# 配置 NAT64:
# 指定无状态nat64前缀(内部被转换的ipv6地址必须要包含在该前缀中):
nat64 prefix stateless 2001:ABCD::/96
 
 # 将外部ipv4地址引入nat64中,g0/0表示该路由通过g0/0进行转发

nat64 route 136.136.136.136/32 GigabitEthernet0/1
 
# 配置路由(这里在NAT64机器和Inside机器上配置OSPFv3):
## NAT64:
ipv6 access-list NAT64

 permit ipv6 2001:ABCD::/96 any    //匹配nat64前缀并将它通告给Inside
 permit ipv6 64:ff9b::/96 any    //匹配nat64自动生成的前缀,将其通告
 
route-map NAT64 permit 10

 match ipv6 address NAT64
 
router ospfv3 1

 router-id 1.1.1.2    //因为ospfv3必须要有一个router-id才能运行,我们随便写一个即可


 address-family ipv6 unicast

 redistribute static rotue-map NAT64    //仅重分发nat64前缀
 
int g0/1
 ospfv3 1 ipv6 area 0

 ospfv3 1 ipv6 network point-to-point
 
## Inside:
router ospfv3 1

 router-id 2.2.2.2


 address-family ipv6 unicast
 
int g0/0
 ospfv3 1 ipv6 area 0

 ospfv3 1 ipv6 network point-to-point
 
int loop 0
 ospfv3 1 ipv6 area 0

 ospfv3 1 ipv6 network point-to-point
 
 
nat64设备上路由:
64:ff9b::/96 是配置nat64之后自动生成的路由
2001:ABCD::/96 是 nat64 prefix stateless 2001:ABCD::/96命令生成的路由
 
Inside设备路由:
 
#(如果不配置动态路由,这里也可以配置静态路由比较好理解一点)
nat64设备:
ipv6 route 2001:abcd::8888:8888/128 g0/1
Inside:
2001:abcd::/96 g0/0
 
 
在Outside上 ping 136.136.136.136 进行测试:
 
 
 
2、动态转换:(网段转换)
内部被映射的ipv6地址,必须是 nat64 prefix stateless 定义的前缀 + nat64 route [ipv4地址网段] 定义的范围。
例如,前缀是 6666:6666::/96,地址范围是 200.1.1.0/24,内部的ipv6网段就必须是 6666:6666::200.1.1.0/120(转换成ipv6地址就是:6666:6666::c801:100/120)因为末尾的 00 刚好能嵌入一个 /24位的ipv4地址段。
 
这样,访问 200.1.1.1 时,就会内部访问到 6666:6666::c801:101 IPv6地址
200.1.1.1 —— 6666:6666::c801:101
200.1.1.2 —— 6666:6666::c801:102
...
2001.1.1.254 —— 6666:6666::c801:1fe
2001.1.1.255 —— 6666:6666::c801:1ff
以此类推
 
拓扑:
Inside:
 
Client1:
 
Client2:
 
 
# NAT64机器:
ipv6 un
 
int g0/1
 ipv6 enable
 nat64 enable    //需要在接口启用nat64
 ipv6 address 2001:db8::fffe/64
 
int g0/0
 ip address 23.23.23.254/24 255.255.255.0
 nat64 enable
 
# 指定无状态nat64前缀(内部被转换的ipv6地址必须要包含在该前缀中): 
nat64 prefix stateless 6666:6666::/96
 
# 将外部ipv4地址引入nat64中,g0/0表示该路由通过g0/0进行转发
nat64 route 200.1.1.0/24 g0/0
 
# 配置去往内部ipv6地址的路由,也可以配置动态路由,只要有路由能到达即可(注意对端需要有回程路由)
## 静态路由最好指定下一跳,否则有时无法生效
ipv6 route 6666:6666::CB01:0100/120 g0/0 2001:db8::1   // 注意:6666:6666::C801:0100/120 这个还是一个网段,因为最后一位为0,且掩码不是 /128,如果是 6666:6666::C801:0100/128,那么就是一个IP地址
## CB01:0100 是 200.1.1.0 转换为十六进制的值
## 当然如果不想转换为十六进制,也可以这样写:ipv6 route 6666:6666::200.1.1.0/120 g0/0 2001:db8::1    // (系统会自动将其转换为十六进制)
 
## Inside机器:
ipv6 route 6666:6666::/96 g0/0 2001:db8::254    //配置一条去往NAT64设备的nat前缀路由,否则路由无法通信(这条配置动态路由也可以)
 
测试:
注意,Outside需要有去往 200.1.1.0/24 的路由
ip route 200.1.1.0 255.255.255.0 23.23.23.254