¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥NAT-T技术介绍¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥

为什么TCP和UDP不能穿越:
TCP和UDP有一个IP头的尾部校验(校验头部和负载,IP尾部(SIP,DIP,协议号));而IP只是校验IP头部。
穿过NAT的时候,IP头部的地址变了,那么校验结果也就改变了,这样就不行了。数据在传输层就丢掉了。  
Cisco的IOS 12.3之后支持,NAT-T的解决问题的思路是:
这项技术用来将ESP数据包封装到UDP数据包中(在原ESP头部和外层IP头部之间,插入一个UDP 4500的头部),使得NAT设备
 按照处理一个普通的UDP数据包的方式对它处理,这样就可以穿越PAT了。

下面是NAT-T的封装示意图:

下面是NAT-T协商的介绍:
协商3步骤:
                                           

1、主要用于判断IPSec双方是否都支持NAT-T技术,若任何一方不支持就会失败,那IPSec VPN就会使用ESP封装数据包。主要是通过IKE中的版本ID来看
2、判断两个peer之间是否有存在地址转换(NAT,PAT)——两个peer之间必须存在地址转换,不管是NAT或是PAT,才会使用NAT-T技术封装数据。NAT-D也叫做hash负载。对源地址hash,对源端口hash,目的也是如此。看是否过了NAT。                                             
3、在1中两个peer都支持NAT-T技术,在2中peer之间确实存在地址转换,那么从上图中第一阶段IKE5-6包开始,后面的所有数据都会使用NAT-T技术进行封装。
命令: crypto ISAKMP nat-traversal
靠参考文档:https://max.book118.com/html/2017/0818/128588311.shtm
接下来验证一下PAT在中间网络的情况:

R1:
hostname R1
!
crypto isakmp policy 10
 authentication pre-share
crypto isakmp key cisco address 23.1.1.3//因为这里通过R3做了PAT,所以peer地址应该是23.1.1.3
!
!
crypto ipsec transform-set trans esp-des esp-md5-hmac
!
crypto map cisco 10 ipsec-isakmp
 set peer 23.1.1.3
 set transform-set trans
 match address vpn
!
!
interface Loopback0
 ip address 1.1.1.1 255.255.255.0
interface FastEthernet1/0
 ip address 12.1.1.1 255.255.255.0
 duplex auto
 speed auto
 crypto map cisco
 !
ip route 0.0.0.0 0.0.0.0 12.1.1.2
!
ip access-list extended vpn
 permit ip 1.1.1.0 0.0.0.255 4.4.4.0 0.0.0.255
R2:
hostname R2
!
interface FastEthernet1/0
 ip address 12.1.1.2 255.255.255.0
 duplex auto
 speed auto
 !
!
interface FastEthernet1/1
 ip address 23.1.1.2 255.255.255.0
 duplex auto
 speed auto
R3:
hostname R3
interface FastEthernet1/0
 ip address 23.1.1.3 255.255.255.0
 ip nat outside
 ip virtual-reassembly
 duplex auto
 speed auto
 !
!
interface FastEthernet1/1
 ip address 34.1.1.3 255.255.255.0
 ip nat inside
 ip virtual-reassembly
 duplex auto
 speed auto
ip nat inside source list PAT interface FastEthernet1/0 overload
ip route 0.0.0.0 0.0.0.0 23.1.1.2
!
ip access-list extended PAT
 permit ip any any
R4:
hostname R4
!
crypto isakmp policy 10
 authentication pre-share
crypto isakmp key cisco address 12.1.1.1
!
!
crypto ipsec transform-set trans esp-des esp-md5-hmac
!
crypto map cisco 10 ipsec-isakmp
 set peer 12.1.1.1
 set transform-set trans
 match address vpn
interface Loopback0
 ip address 4.4.4.4 255.255.255.0
 !
interface FastEthernet1/0
 ip address 34.1.1.4 255.255.255.0
 duplex auto
 speed auto
 crypto map cisco
 !
ip route 0.0.0.0 0.0.0.0 34.1.1.3
!
ip access-list extended vpn
 permit ip 4.4.4.0 0.0.0.255 1.1.1.0 0.0.0.255
现在可以在R3的两个接口抓包,具体情况如下:
R3-R4:

R3-R2:

可以看到明显是经过了PAT了,
R3#sho ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
udp 23.1.1.3:500       34.1.1.4:500       12.1.1.1:500       12.1.1.1:500
udp 23.1.1.3:4500      34.1.1.4:4500      12.1.1.1:4500      12.1.1.1:4500
这是PAT之前的校验和:

这是PAT之后的校验和:

这也就验证前面所说的在穿越NAT设备的时候,UDP或者TCP会校验IP头尾部,IP变了,那么校验出的结果就改变了。而这里穿越的是PAT,那么就需要使用源IP和源端口,然后这里的端口是被ESP封装的,所以不能实现通信。

这里也可以看到源和目的端口启用了NAT-T技术,使用UDP 4500端口。那么我们将NAT-T技术关闭(Cisco IOS的NAT-T技术是默认打开的):
R3(config)#no crypto ipsec nat-transparency udp-encapsulation

观察现在的R4—R1的IPSec VPN情况:由于实验的IOS的问题,所以这里还是通的,但是正确的应该是关闭NAT-T技术,就是不通的,所以,NAT-T的关键就是在新的IP头部和ESP头部之间封装一个NAT-T使用的UDP 4500端口。来实现通信的。

NAT-T和PAT(IPSec)的更多相关文章

  1. P2P技术详解(一):NAT详解——详细原理、P2P简介

    1. IPv4协议和NAT的由来 今天,无数快乐的互联网用户在尽情享受Internet带来的乐趣.他们浏览新闻,搜索资料,下载软件,广交新朋,分享信息,甚至于足不出户获取一切日用所需.企业利用互联网发 ...

  2. NAT详解:基本原理、穿越技术(P2P打洞)、端口老化等

    这是一篇介绍NAT技术要点的精华文章,来自华3通信官方资料库,文中对NAT技术原理的介绍很全面也很权威,对网络应用的应用层开发人员而言有很高的参考价值. 学习交流 移动端即时通讯学习交流: 21589 ...

  3. NAT技术详解

    一.IPv4协议和NAT的由来 1.IPv4协议介绍 2011年2月3日,IANA宣布:IPv4地址空间最后5个地址块已经被分配给下属的5个地区委员会.2011年4月15日,亚太区委员会APNIC对外 ...

  4. Juniper SRX防火墙-NAT学习笔记!

    Junos NAT第一部分:SRX NAT介绍第二部分:Source NAT:Interface NAT第三部分:Source NAT:Address Pools第四部分:Destination NA ...

  5. Nat网络地址转换

    Nat中的术语 -------------------------------------------------------------------------------------------- ...

  6. ASA IPSEC VPN配置

    ASA-1配置 : Saved:ASA Version 8.0(2) !hostname ASA-1enable password 8Ry2YjIyt7RRXU24 encryptednames!in ...

  7. [转] OpenStack IPSec VPNaaS

    OpenStack IPSec VPNaaS ( by quqi99 ) 作者:张华  发表于:2013-08-03版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声 ...

  8. ipsec原理(转载)

    IPSec VPN是目前VPN技术中点击率非常高的一种技术,同时提供VPN和信息加密两项技术,这一期专栏就来介绍一下IPSec VPN的原理.IPSec VPN应用场景 IPSec VPN的应用场景分 ...

  9. 实验17:NAT

    实验14-1:静态NAT 配置 Ø    实验目的通过本实验可以掌握(1)静态NAT 的特征(2)静态NAT 基本配置和调试 Ø    拓扑结构 实验步骤n    步骤1:配置路由器R1 提供NAT ...

  10. Pfsense2.34中文版

    Pfsense2.34中文版 来源  https://forum.netgate.com/topic/112076/pfsense2-34%E4%B8%AD%E6%96%87%E7%89%88-%E8 ...

随机推荐

  1. 一些常用的css

    不换行  white-space:nowrap table纵向合并的单元格垂直居中 display:table-cell; vertical-align:middle; table合并横向单元格  c ...

  2. curl模板----php发送post,get请求

    function _grab($curl,$ip='',$referer='',$postInfo='',$cookie=''){ $ch = curl_init(); curl_setopt($ch ...

  3. arcgis中的Join(合并连接)和Relate(关联连接)

    arcgis中的Join(合并连接)和Relate(关联连接) 一.区别 1.连接关系不一样. Relate(关联连接)方式连接的两个表之间的记录可以是“一对一”.“多对一”.“一对多”的关系 Joi ...

  4. opencv编译静态库时选择MD模式无效的原因

    在Cmake-gui上看到的明明是MD运行库依赖,生成MS项目时却变成了MT运行库依赖. 原因在于编译静态库时内部做了自动替换.

  5. JQuery中的DOM操作(转载)

    原文链接:http://www.cnblogs.com/ILYljhl/archive/2013/07/10/3182414.html jQuery封装了大量DOM操作的API,极大提高了操作DOM节 ...

  6. Hibernate第三天-Hibernate主配置信息

    今天是学习Hibernate的第三天,主要分析一下Hibernate的配置文件中的信息 Hibernate中的配置文件有两种,第一种是主配置文件hibernate.cfg.xml,第二种是映射配置文件 ...

  7. C语言当中int,float,double,char这四个有什么区别?

    区别在以下方面: 一.定义方面: 1.int为整数型,用于定义整数类型的数据 . 2.float为单精度浮点型,能准确到小数点后六位 . 3.double为双精度浮点型,能准确到小数点都十二位 . 4 ...

  8. 每天进步一点点------FPGA 静态时序分析模型——reg2reg

    2. 应用背景 静态时序分析简称STA,它是一种穷尽的分析方法,它按照同步电路设计的要求,根据电路网表的拓扑结构,计算并检查电路中每一个DFF(触发器)的建立和保持时间以及其他基于路径的时延要求是否满 ...

  9. Linux03——磁盘分区和挂载

    Windows下的磁盘分区: 常用的两种磁盘分区类型 mbr: 操作系统安装在主分区 只支持4个主分区 拓展分区占一个主分区 gpt(win7 64位之后) 无限主分区 支持超大硬盘3T以上 查看所有 ...

  10. 安卓开发:Android Studio自动import

    我只想说,真好用!哈哈,提高效率的好东西. 参考: [https://blog.csdn.net/pjdd123/article/details/80953669] [https://www.cnbl ...