6.4 NAT-PT
(1)NAT-PT和NAT的差别
①NAT-PT(附带协议转换的网络地址转换)技术秉承NAT技术的思想,但在原理方面大有不同。
②NAT-PT和NAT本质的区别在于应用场合的不同。NAT是IPv4网络中公网、私网地址的相互转换,它是为了解决IPv4公网地址缺乏问题;而NAT-PT则是IPv6和IPv4地址的相互转换,它是为了解决两者互通问题。在IPv4网络完全过渡到IPv6网络之间,两种类型之间直接通信可以通过NAT-PT来实现。
③NAT-PT作用于IPv4和IPv6网络边缘设备上,所有的地址转换都在该设备上实现,对于IPv4和IPv6网络来说是透明的,即用户不必改变目前的IPv4网络中主机的配置就可以实现IPv6网络与IPv4网络的通信。
(2)NAT-PT和隧道的差别
①首先报文转换和转发方式不同:NAT-PT是对报文的网络层内容进行转换修改,剥离原先的报文头,替换为转换之后的报文头(如IPv4→IPv6或IPv6→IPv4),而隧道技术是对初始报文作另一层报文的封装。
②NAT-PT会检查并且可以更改报文中的端口号;而隧道技术从来不会检查报文中的传输层内容。
③NAT-PT一般适用于IPv4和IPv6不同网络中主机互相访问的环境中;而隧道技术一般用于实现一种网络协议跨越另一种网络协议之间的通信。所以NAT-PT的环境只需有一台可以进行NAT-PT转换的设备即可,而构造一种隧道的环境必须有两台设备形成一个隧道。
(3)NAT-PT分类
①静态NAT-PT
A.提供一对一的IPv6地址和IPv4地址的映射。
B.IPv6单协议网络内的节点要访问IPv4单协议网络内的每一个IPv4地址都必须在NAT-PT设备中配置。
C.每一个目的IPv4在NAT-PT设备中被映射成一个具有预定义NAT-PT前缀的IPv6地址。在这种模式下,每一个IPv6映射到IPv4地址,需要IPv4地址可以双方发起连接。
②动态NAT-PT
A.NAT-PT网关向IPv6网络通告一个96位的地址前缀,并结合32位主机IPv4地址作为对IPv4网络中的主机的标识。
B.从IPv6网络中的主机向IPv4网络发送的报文,其地址前缀与NAT-PT发布的地址前缀相同,这些报文都被路由到NAT-PT网关,由NAT-PT网关对报文头进行修改,取出其中的IPv4地址信息来替换目的地址,同时会修改端口号。
C.同时,NAT-PT网关定义了IPv4地址池,它从地址池中取出一个地址来替换IPv6报文的源地址,从而完成从IPv6地址到IPv4地址的转换。
D.由于动态NAT-PT只能由IPv6一侧首先发起连接,路由器把IPv6地址转换为IPv4地址后,IPv4主机才知道使用哪一个IPv4地址来标识IPv6主机。若从IPv4端首先发起连接,IPv4主机并不知道IPv6主机的IPv4地址,因为这个地址是NAT-PT网关从地址池中随机选择的,连接无法进行。
(4)实战:配置静态NAT-PT
①路由器配置(并不是所有的路由器都支持NAT-PT,本例采用思科unzip-c3640-js-mz.124-10.bin)
//R1路由器 R1#conf t R1(config)#interface fastEthernet 0/0 R1(config-if)#ip address 192.168.10.10 255.255.255.0 R1(config-if)#no sh R1(config-if)#exit R1(config)#interface serial 2/0 R1(config-if)#clock rate 64000 R1(config-if)#ip address 131.107.0.1 255.255.255.0 R1(config-if)#no sh R1(config-if)#exit R1(config)#ip route 12.10.12.0 255.255.255.0 131.107.0.2 //添加到12.10.12.0网段的路由 R1(config)#exit //R2路由器(NAT-PT路由器) R2#conf t R2(config)#ipv6 unicast-routing R2(config)#interface serial 2/0 R2(config-if)#ip address 131.107.0.2 255.255.255.0 R2(config-if)#ipv6 nat //启用该接口的IPv6 Nat功能 R2(config-if)#no sh R2(config-if)#exit R2(config)#interface serial 2/1 R2(config-if)#clock rate 64000 R2(config-if)#ipv6 address 2001:2::1/64 R2(config-if)#ipv6 nat //启用该接口的IPv6 Nat功能 R2(config-if)#no sh R2(config-if)#exit R2(config)#ip route 192.168.10.0 255.255.255.0 131.107.0.1 //添加到192.168.10.0/24的路由 R2(config)#ipv6 route 2001:1::/64 2001:2::2 //添加到2001:1::/64网段的路由 //将v6映射成v4,从而能在ipv4网络中可以访问到ipv6主机。 R2(config)#ipv6 nat v6v4 source 2001:1::2 12.10.12.12 //配置静态NAT-PT映射,将源IPv6映射为IPv4地址 //将v4映射成v6,从而能在ipv6网络中可以访问到ipv4主机。 R2(config)#ipv6 nat v4v6 source 192.168.10.20 2001:3::122 //配置静态NAT-PT映射,将源IPv4映射为IPv6地址 R2(config)#ipv6 nat prefix 2001:3::/96 //IPv6前缀,定义将IPv4网络映射到IPv6的2001:3::/96网段 R2(config)#exit R2# //R3路由器 R3#conf t R3(config)#ipv6 unicast-routing //启用IPv6路由转发功能 R3(config)#interface serial 2/1 R3(config-if)#ipv6 address 2001:2::2/64 R3(config-if)#no sh R3(config-if)#exit R3(config)#interface fastEthernet 0/0 R3(config-if)#ipv6 address 2001:1::1/64 R3(config-if)#no sh R3(config-if)#exit R3(config)#ipv6 route 2001:3::/64 2001:2::1 //添加到2001:3::/64网段的路由 R3(config)#exit R3#
②Win7虚拟机:放入VMnet1网络,IPv4为192.168.10.20/24,默认网关192.168.10.10。Win8虚拟机:放入VMnet8网络,IPv6设置为2001:1::2/64,默认网关为2001:1::1。
③测试:在R2上打开IPv6 nat调试开关(R2# debug IPv6 nat)。然后让Win7虚拟机ping 12.10.12.12或Win8虚拟机ping 2001:3::122,并观察IPv6 nat的调试输出(注意观察源和目标地址的变化)
//跟踪NAT调试结果 R2#debug ipv6 nat //打开IPv6 nat调试开关(关闭时用no debug ipv6 nat) IPv6 NAT-PT debugging is on R2# *Mar 1 00:51:40.363: IPv6 NAT: src (192.168.10.20) -> (2001:3::122), dst (12.10.12.12) -> (2001:1::2) *Mar 1 00:51:40.431: IPv6 NAT: icmp src (2001:1::2) -> (12.10.12.12), dst (2001:3::122) -> (192.168.10.20) R2# *Mar 1 00:51:41.371: IPv6 NAT: src (192.168.10.20) -> (2001:3::122), dst (12.10.12.12) -> (2001:1::2) *Mar 1 00:51:41.431: IPv6 NAT: icmp src (2001:1::2) -> (12.10.12.12), dst (2001:3::122) -> (192.168.10.20)
(5)实战:配置动态NAT-PT
①路由器配置
//R1路由器 R1#conf t R1(config)#interface fastEthernet 0/0 R1(config-if)#ip address 192.168.10.10 255.255.255.0 R1(config-if)#no sh R1(config-if)#exit R1(config)#interface serial 2/0 R1(config-if)#clock rate 64000 R1(config-if)#ip address 131.107.0.1 255.255.255.0 R1(config-if)#no sh R1(config-if)#exit R1(config)#ip route 12.10.12.0 255.255.255.0 131.107.0.2 //指定到12.10.12.0/24网段的路由 //R2路由器 R2#conf t R2(config)#ipv6 unicast-routing R2(config)#interface serial 2/0 R2(config-if)#ip address 131.107.0.2 255.255.255.0 R2(config-if)#no sh R2(config-if)#exit R2(config)#interface serial 2/1 R2(config-if)#clock rate 64000 R2(config-if)#ipv6 address 2001:2::1/64 R2(config-if)#no sh R2(config-if)#exit R2(config)#ip route 192.168.10.0 255.255.255.0 131.107.0.1 R2(config)#ipv6 route 2001:1::/64 2001:2::2 R2(config)#interface serial 2/0 //在R2的接口用ipv6的nat R2(config-if)#ipv6 nat //启用IPv6地址转换 R2(config-if)#exit R2(config)#interface serial 2/1 R2(config-if)#ipv6 nat R2(config-if)#exit R2(config)#ipv6 access-list v4map permit 2001:1::/64 any //定义访问控制列表 R2(config)#ipv6 access-list v6list permit 2001:1::/64 any //定义允许访问IPv4网络的IPv6网段 R2(config)#ipv6 nat prefix 2001:3::/96 v4-mapped v4map //定义IPv4充当的IPv6网段 (前缀) R2(config)#ipv6 nat v6v4 pool v4pool 12.10.12.10 12.10.12.100 prefix-length 24 //定义IPv4地址池(名为v4pool) R2(config)#ipv6 nat v6v4 source list v6list pool v4pool //配置动态映射 R2(config)#exit //R3路由器 R3#conf t R3(config)#ipv6 unicast-routing R3(config)#interface serial 2/1 R3(config-if)#ipv6 address 2001:2::2/64 R3(config-if)#no sh R3(config-if)#exit R3(config)#interface fastEthernet 0/0 R3(config-if)#ipv6 address 2001:1::1/64 R3(config-if)#no sh R3(config-if)#exit R3(config)#ipv6 route 2001:3::/64 2001:2::1 R3(config)#exit
②测试:Win7A和Win7B虚拟机IP设置与上例相同。让Win7B虚拟机ping 2001:3::c0a8:0a14(即,2001:3::192.168.10.20,注意只能从IPv6主动访问IPv4网络)。同时,可以在R2#debug ipv6 nat进行跟踪。
//查看NAT调试结果 R2#debug ipv6 nat IPv6 NAT-PT debugging is on R2# *Mar 1 00:05:30.223: IPv6 NAT: icmp src (2001:1::2) -> (12.10.12.10), dst (2001:3::C0A8:A14) -> (192.168.10.20) *Mar 1 00:05:30.291: IPv6 NAT: src (192.168.10.20) -> (2001:3::C0A8:A14), dst (12.10.12.10) -> (2001:1::2) R2# *Mar 1 00:05:31.423: IPv6 NAT: icmp src (2001:1::2) -> (12.10.12.10), dst (2001:3::C0A8:A14) -> (192.168.10.20) *Mar 1 00:05:31.535: IPv6 NAT: src (192.168.10.20) -> (2001:3::C0A8:A14), dst (12.10.12.10) -> (2001:1::2)