一、机制概述
RFC2766、RFC2765。
2001:2::/96,这个长度为96位的前缀是我们为了NAT-PT操作预定义的前缀,可以自定义,但是长度必须是96bits。
二、NAT-PT配置及原理
2.1 静态NAT-PT
1、静态NAT-PT(单向)
A和B的配置都极其简单
A的配置:
interface FastEthernet0/0
ipv6 route ::/0 2001:1::FFFF
B的配置如下:
interface FastEthernet0/0
ip route 0.0.0.0 0.0.0.0 202.101.100.1
R2的配置如下:
ipv6 unicast-routing
!
interface FastEthernet0/0
!! 连接A的接口
!
interface FastEthernet1/0
!
ipv6 nat prefix 2001:2::/96 !! 是一个为NAT-PT预留的池
ipv6 nat v6v4 source 2001:1::1 202.101.100.100 !! 相当于将2001:1::1这个IPv6的节点,“告知”给IPv4单协议网络中的用户知道,可以以202.101.100.100的方式访问。
在上述配置中,我们将A节点,也就是2001:1::1映射到了IPv4网络,映射到202.101.100.100这个IPv4地址。这样一来B可以主动去访问A,例如B 去ping 202.101.100.100,能够ping通,这个过程如下:
1) 首先B去ping 202.101.100.100,数据包如图所示。
2) 数据包到达R2后,R2本地是已经存在了一个映射:2001:1::1映射到202.101.100.100
由于存在这个映射,因此R2将B发过来的这个数据包的目的地址202.101.100.100替换成2001:1::1,同时B的源地址是个IPv4地址,咋办呢?还记得我们配置了NAT-PT预留的前缀么?也就是2001:2::/96这个玩意儿,R2将B的IPv4地址映射到这个前缀上,构成一个临时的IPv6地址:2001:2:CA65:6402,同时在本地生成一条新的映射条目:2001:2::CA65:6402映射到202.101.100.1,如上图所示。
3) R2将原始的IPv4数据包的包头替换成IPv6的包头,然后转给A。
4) A回包,数据包送给R2,R2由于已经有了2001:2::CA65:6402到202.101.100.1的映射,因此R2将IPv6包头替换成IPv4包头,然后再转发给B。
注意在此时,A是可以去主动访问B的,也就是说A可以主动ping 2001:2::CA65:6402这个临时的地址来达到访问B的目的。但是如果我们在R2上去clear ipv6 nat translation * ,如此2001:2::CA65:6402到202.101.100.1的映射条目就被清空了,A就无法主动访问B了,只能B先主动访问A。
2、静态NAT-PT(双向)
R2的配置如下:
ipv6 unicast-routing
!
interface FastEthernet0/0
!
interface FastEthernet1/0
!
ipv6 nat prefix 2001:2::/96
ipv6 nat v4v6 source 202.101.100.2 2001:2::2
ipv6 nat v6v4 source 2001:1::1 202.101.100.100
如此一来,A主动发起访问连接到B,或者B主动发起访问到A都可以。
NAT-PT#show ipv nat translations
Prot
IPv4 source
IPv6 source
---
---
---
---
202.101.100.100
2001:1::1
---
202.101.100.100
2001:1::1
2.2动态NAT-PT
1、V6可以主动访问V4(使用V4地址池)
R2的配置如下:
ipv6 unicast-routing
!
interface FastEthernet0/0
!
interface FastEthernet1/0
!
Ipv6 access-list ipv6only-network permit 2001:1::/64 any
ipv6 nat prefix 2001:2::/96
ipv6 nat v6v4 pool v6v4-pool 202.101.100.10 202.101.100.20 prefix-length 24
ipv6 nat v6v4 source list ipv6only-network pool v6v4-pool
ipv6 nat v4v6 source 202.101.100.2 2001:2::2
来分解一下关键命令:
Ipv6 access-list ipv6only-network permit 2001:1::/64 any
上面的命令是定义允许被IPv6 nat的源地址,用一个IPv6 ACL进行匹配。
ipv6 nat v6v4 pool v6v4-pool 202.101.100.10 202.101.100.20 prefix-length 24
上面的命令是,创建一个供v6tov4使用的地址池,这个地址池当然是IPv4的地址池,当IPv6 only的用户,如A要访问IPv4 only网络的时候,就从池中取一个空闲的IPv4地址。
ipv6 nat v6v4 source list ipv6only-network pool v6v4-pool
将ACL所允许的IPv6网络与这个v6v4地址池进行关联
ipv6 nat v4v6 source 202.101.100.2 2001:2::2
最后这条命令是将202.101.100.2这个IPv4网络的主机“放进来”到IPv6网络,使得IPv6 only的用户有访问目标,否则,你让IPv6 only的用户用什么目标地址去访问IPv4 only网络?
完成上述配置后,A即可主动发起访问到B了, 使用目标地址 2001:2::2即可访问B
2、V4可以主动访问V6(使用V6地址池)
R2的配置如下:
ipv6 unicast-routing
!
interface FastEthernet0/0
!
interface FastEthernet1/0
!
access-list 1 permit 202.101.100.0 0.0.0.255
ipv6 nat v4v6 pool v4v6-pool 2001:2:: 2001:2::FFFF:FFFF prefix-length 96
ipv6 nat v4v6 source list 1 pool v4v6-pool
ipv6 nat prefix 2001:2::/96
ipv6 nat v6v4 source 2001:1::1 202.101.100.111
思路和V6访问V4是一样的。
这里我们用一个access-list 1 匹配202.101.100.0/24网络,同时将其与v4v6-pool这个IPv6地址池做了捆绑。使得B访问IPv6网络的时候,可以从池中拿IPv6地址。另外,为了让V4网络访问V6网络有目标,还做了一条静态映射,将2001:1::1映射到202.101.100.111,这样,B就能够使用202.101.100.111这个IP来访问IPv6主机A。
3、IPv4-Mapped NAT-PT
ipv6 nat v4v6 source 202.101.100.2 2001:2::2
当然不用,使用IPv4-mapped功能即可,机制非常简单,我们在R2上修改配置,关键配置如下:
ipv6 access-list v4map permit 2001:1::/64 2001:2::/96
ipv6 nat prefix 2001:2::/96 v4-mapped v4map
R2的配置如下:
ipv6 unicast-routing
!
interface FastEthernet0/0
!
interface FastEthernet1/0
!
Ipv6 access-list ipv6only-network permit 2001:1::/64 any
ipv6 nat v6v4 pool v6v4-pool 202.101.100.10 202.101.100.20 prefix-length 24
ipv6 nat v6v4 source list ipv6only-network pool v6v4-pool
ipv6 access-list v4map permit 2001:1::/64 2001:2::/96
ipv6 nat prefix 2001:2::/96 v4-mapped v4map
红茶三杯
网络工程 | 项目管理 | IT服务管理 | CCIE培训
学习 沉淀 成长 分享