问题场景

左边的支部,它的防火墙上联路由器,由于防火墙内部的接口使用的是私网地址,这就导致其无无法在公网上与对端防火墙进行IPsec的隧道建立 。所以必须在AR5上面不是NAT地址转换,由于一般使用的是NAPT,isakmp协议因为是UDP报文,且没有像AH或者ESP那样有对内容进行签名,所以可以正常地协商IKE SA以及IPsec SA,但是AH和ESP就没有那么简单了

 

 AH和ESP的认证范围如图所示,其实说是认证范围本质上来说应该是进行HASH运算的范围,如图所示,AH的签名范围是包括IP首部的,这就导致如若后续的AH报文在AR路由器上进行NAT转换后,目的端接收到该报文并进行hash值校验时会发现hash不匹配,所以将会导致数据包被丢弃。而对于ESP来说,虽然它的签名范围没有包括IP首部,但是如果在NAPT的场景下,也就是有进行端口复用的场景下,这也同样会导致目的端hash校验的不成功,但是在no-pat的场景下时可以的,但是一般不会这么做。所以就需要NAT穿越。

技术原理

说它是NAT穿越其实也是说的好听,其实又是一个套壳的技术,什么意思?如果你是传输模式,那么就是在IP首部和ESP之间再插入一个UDP首部,源目端口为4500,如果是隧道模式那么就是在新IP首部和ESP首部之间插入UDP首部,对于AH来说,因为它的校验范围是整个IP报文,所以它就和NAT无缘了。对于ESP来说,它的主要问题就是在进行NAPT的过程中端口被替换了,所以才会导致校验的时候出现问题,那么通过在IP首部和ESP首部之间插入UDP层来代替ESP里面的运输层首部进行端口替换就可以完美地解决这个问题。

部署场景和部署细节

场景1、一端做NAT,另一端没有做

在这种部署场景下,我大概说一下要部署的内容,首先左边的防火墙需要配置好IPsec的相关内容,要注意在定义ike peer的时候,要在ike peer视图下开启nat 穿越,输入nat traversal即可,同时需要指定好右边防火墙的地址,然后将相关的IPsec policy应用在接口上。AR路由器只要做NAPT转换即可。因为左边的防火墙使用的是NAT地址转换,有着屏蔽内网的作用,所以右边的防火墙可以直接做ipsec policy,此时指定的IP地址是AR路由器的出接口地址,即便如此右边的防火墙也只能被动的接受左边的防火墙的主动协商,因为NAT屏蔽了内网。也可以配置IPsec策略模板,自己不主动,被动接受协商就好了。右边的防火墙也要开启nat 穿越

场景2、两端都做NAT

 在这种两边都做NAT的情况下,我也大概说一下思路。因为在IPsec的协商过程中肯定是要有人主动进行协商的,所以在两边都被NAT屏蔽内网的情况下,肯定要有一端做nat server,否则协商报文过去后因为被NAT屏蔽了内网的缘故,路由器将无法响应该报文从而导致协商失败,所以我们需要在某一端上创建如下的nat server:

nat server protocol udp global 1.1.1.1 500 inside 192.168.0.1 500

上面这个nat server必须在被动接受协商的一端的路由器上配置

nat server protocol udp global 1.1.1.1 4500 inside 192.168.0.1 4500

这个必须在两端的路由器上都进行配置,如果不配置,那么会导致路由器上因为没有相应的NAT映射表从而导致报文的丢失。在没有开启nat keeplive的时候需要,如果不开启nat keeplive就需要在两端配置端口映射

那么为什么第一个不需要创建nat server?

首先因为左边的防火墙是隧道的主动协商者,且它也是处于NAT网关后的设备,所以虽然它的源地址和源端口会被修改,但是目的地址和目的端口都不会改变,也就是说相关协商报文到达右边的防火墙后是会被正常识别,所以右边的防火墙会正常的回复相关的协商报文,因为左边的防火墙主动发起报文,所以在AR路由器会存在相关的NAT表项,所以右边的防火墙回包的时候会被正常地进行地址转换并将报文转发给左边的防火墙,所以在这种情况下是不需要将500端口映射出去的,那么是否需要做第二条nat server呢?感觉要,但是其实不要,主要是防火墙默认开启了nat keeplive,在ipsec隧道建立之后,防火墙会周期性发送那条keeplive报文,这就使得路由器上的nat映射表得到了周期性的刷新,所以相对于做了一个隐形的端口映射,所以即便路由器上没有做4500端口的映射也可以保证流量的正常通信。

第一个nat sever的主要作用就是让路由器可以将响应的协商报文传递给内部的防火墙进行IPsec的隧道协商。第二个nat server的主要作用就是让esp报文可以进行正常的通过

那么两端的防火墙是如何发现存在NAT网关并将端口从500变为4500的呢?

IKE V1情况

因为ike v1不常用所以就大概说一下。在主模式的阶段一的一,二报文,双方会不仅协商ike sa,还会发送是否开启NAT穿越的标识。双方都知晓互相都开启了nat 穿越后,在阶段一的三,四报文中会携带local address and port hash和remote address and port hash,其含义是本地地址和端口的hash值,以及目的地址和端口的hash值,这些值是防火墙在发送的时候就定义在报文中的,如果对端在接收该报文的时候发现local的hash值以及remote的hash值都进行了改变,那么就说明在两个防火墙之间存在两个NAT网关,如果只是local变化了,那么就说明只有对端的防火墙的前面有NAT网关,如果是只有remote的hash值变化了,那么就说明只有本端的前面有NAT网关。防火墙在察觉了存在NAT网关的情况下,会将后续的五,六报文的源目端口修改为4500,同时后续的协商报文会在运输层首部后面多一层udp encapsulation层。

 

IKE V2的情况

在IKE v 2的IKE_SA_INIT报文中会直接携带NAT_DETECTION_SOURCE和NAT_DETECTION_DESTINATION这两个数据载荷,里面包含的值和IKEv1中的local和remote的hash值是一样的。如下图所示: 

 在后续IKE_AUTH的相互协商中同样也会将源目端口从500修改为4500,并在运输层首部后面多加了一层udp encapsulaion层

 

NAT和IPsec之间的冲突

如图所示目的地址和源地址转换是在VPN之前的,这就导致NAT的操作是先于VPN的,如果要进行VPN加密的报文先进行了NAT的地址转换,导致其原本该加密但是却因为地址转换后无法匹配相关感兴趣流,从而导致没有经过加密就将相关数据流发送出去。如果是nat server的情况下还有可能导致因为进行了nat server操作的缘故导致相关加密报文无法传达到防火墙上进行解封。所以在IPsec与NAT之间我们必须保证它们之间的流量没有任何交集。当然我们可以手动的进行合理的流量分离,也可以直接在nat 策略中明确指明要进行加密的流量是不进行nat操作的,且该策略是最优先匹配的,如下所示:

 在nat-policy中指明相关加密流量的action为no-pat即可

 

IPsec的NAT穿越详解相关推荐

  1. IPSec的NAT穿越

    IPSec的NAT穿越 本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途. msn: yfydz_no1@hotmail.c ...

  2. 思科路由器NAT配置详解(转)

    思科路由器NAT配置详解(转) 网络技术 2010-07-11 17:48:14 阅读104 评论0   字号:大中小 订阅 思科路由器NAT配置详解 一.NAT简介: NAT(Network Add ...

  3. IPSec协议抓包详解和IPSec NAT穿越报文解析

    目录 协议概述 2.IPSec作用 3.认证方式 3.1.预共享密钥 3.2.数字证书 4.ESP加密算法 4.1.ESP完整性检测 4.2.ESP防重放 4.3.ESP防窃听 5.IPSec工作原理 ...

  4. IPSec之IKEv1协议详解

    IKE简介 安全联盟SA: 定义: 安全联盟是要建立IPSec 隧道的通信双方对隧道参数的约定,包括隧道两端的IP地址.隧道采用的验证方式.验证算法.验证密钥.加密算法.共享密钥以及生命周期等一系列参 ...

  5. IPSec之IKEv2协议详解

    IKEv2简介 IKEv2介绍: 定义在RFC4306 ,更新与 RFC 5996. 不兼容IKEv1,IKEv1不支持认证,IKEv2支持认证,EAP. 支持NAT穿越. IKEv2支持私密性.完整 ...

  6. NAT技术详解(网络地址转换)

    组织对不起,90年的事我瞒不住了--NAT(网络地址转换) NAT(Network Addresss Translation),网络地址转换,本质上是一种允许在互联网的不同地方重复使用相同的IP地址集 ...

  7. 网络地址转换协议NAT功能详解+NAT配套练习题

    一.NAT定义 NAT(Network Address Translator,网络地址转换)是用于在本地网络中使用私有地址,提供私有地址到公有地址的转换,在连接互联网时转而使用全局 IP 地址的技术. ...

  8. 思科路由器ipsec lan-to-lan综合案例详解

    在IPsecVPN范畴的VPN中,有多种形式的VPN,各形式的VPN因为架构和使用环境的不同而不同,但在IPsecVPN范畴内的各VPN中,都是以IPsec为基础的,在本小节中要讲到的是IPsecVP ...

  9. 桥接模式NAT模式 详解

    NAT模式 和 桥接模式 网络地址转换 NAT : 首先看一下NAT的概念:装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址,这样所有使用本地地址(内部专用地址)的主机在和外 ...

  10. NAT模式详解(进阶篇)

    再说NAT模式之前,我们先来复习一下桥接模式是怎样运行的.(这里我是用VMware来说的) 桥接模式是跟物理机在同一个网段,并且和物理机用的同一个路由器, 1.我们先看物理机的网段,然后再把虚拟机的网 ...

最新文章

  1. boost.asio包装类st_asio_wrapper开发教程(2014.5.23更新)(一)-----转
  2. 【FPGA】单端口RAM的设计(同步读、同步写)
  3. 天涯社区服务器位置,天涯到底怎么了,哪份帖子都打不开,是服务器的问题吗...
  4. 如何在博客园的博客中添加可运行的JS(转载)
  5. 面向对象编程03—封装、继承、重写、MRO、多态
  6. 小师妹学IO系列文章集合-附PDF下载
  7. socketserver 源码浅读
  8. Android成长日记-Android监听事件的方法
  9. 8本前沿技术书,助力这届「青年人」将科幻变成现实
  10. python 图表 web_新手向——制作web图表(基于Python和GooPyCharts)
  11. [CareerCup] 17.2 Tic Tac Toe 井字棋游戏
  12. TensorFlow MNIST 数据集
  13. 使用JMeter进行压力测试
  14. 从零开始 DIY 智能家居 - 基于 ESP32 的智能语音合成播报模块
  15. Vue中路由 (Vue Router)
  16. 编辑图片加文字的软件哪个好?这三个软件还不错
  17. 微信网页端软键盘收起点击事件失效
  18. 解决 /usr/bin/ld:cannot find -lxxx 问题
  19. Windows 10 (Win10) 将绿色免安装软件,添加到动态磁贴
  20. MATLAB 学习笔记(3)MATLAB 矩阵的进阶操作

热门文章

  1. [转载] 实现宿主机和VirtualBox下虚拟机ping相通教程
  2. linux下oracle12C新建数据库,linux环境下手工创建oracle11g数据库(未完)
  3. WIN32汇编列表框的使用
  4. 一般的病毒通过注册表自启动的方式不断完善中。。。。
  5. 谷歌搜索引擎使用语法大全收集
  6. 【考研数学】函数、极限、连续
  7. NI Vision 开发环境
  8. nc windows安装教程
  9. 163Editor 编辑器概览
  10. linux里没有vi编辑器怎么办,如果是linux没有vi、vim等编辑器如何操作