¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥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. GitHub的安装和第一次上传本地项目

    网站的新用户注册:http://www.github.com 安装:下载之后安装,一路下一步就可以了,安装完成后打开Git Bash,进入bash界面. 邮箱注册: $ git config --gl ...

  2. Python代码混淆和加密技术

    Python进行商业开发时, 需要有一定的安全意识, 为了不被轻易的逆向. 混淆和加密就有所必要了. 为了增加代码阅读的难度, 源代码的混淆非常必要, 一个在线的Python代码混淆网站. http: ...

  3. SqlDataAdapter对象

    https://blog.csdn.net/qq_39657909/article/details/80615465 一.特点介绍 1.表示用于填充 DataSet 和更新 SQL Server 数据 ...

  4. Bugku-CTF加密篇之来自宇宙的信号(银河战队出击)

    来自宇宙的信号 银河战队出击 flag格式 flag{字母小写}    

  5. bugku 点击1000000次

    首先看一下题目发现进入网页之后是这个样的 然后点击一下发现是有变化 然后用F12 然后选择post data 然后输入clicks=1000000 然后就会发现答案 (clicks 是点击的意思)

  6. 【ES6新增语法详述】

    目录 1. 变量的定义 let const 2. 模版字符串 3. 数据解构 4. 函数扩展 设置默认值 箭头函数 5. 类的定义 class 6. 对象的单体模式 "@ ES6新增了关于变 ...

  7. Ubuntu安装MySQL密码初始化问题

    在Ubuntu上使用sudo apt-get install mysql-server mysql-common 命令安装MySQL以后,安装过程中没有提示输入密码.然后使用mysql -u root ...

  8. 树莓派4B踩坑指南 - (11)免费搭建网站(宝塔,花生壳)

    目录 宝塔 安装宝塔面板 登录及初始化设置 安装网站 花生壳 安装花生壳 设置花生壳 测试 问题(未解决但不影响使用) 网站统计 树莓派这么低的功耗,不用来当服务器总感觉有点浪费...完成效果:htt ...

  9. 论STA | 工艺、工具、分析的本与末

    人类从漫长的蒙昧中觉醒之后,不再依靠着奇装异服的巫师通灵来指导生活,巫师进化成了科学家,他们试图对周遭的一切进行概括.分类.抽象,于是有了化学.物理.数学等基科.比如一粒沙,它的化学组成是什么,物理特 ...

  10. Linux双网卡bond、起子接口

    适用场景 服务器两张网卡需要做bond,并且bond后网卡需配置不同网段的地址,用于走不同流量,这个时候就可以采用起子接口的方式. 实验场景 设备 服务器:Server_A 核心交换机:Switch_ ...