1. IPsec与NAT的关系

NAT作为一个IPV4的地址转换协议,它最初的目的是用来最解决IPv4地址不足的问题。通过NAT协议,局域网内的多个主机可以共同使用一个公网地址,这在很大程度上减轻了IPV4地址短缺的问题。但是随着NAT的发展,它也用来实现屏蔽一个公司或者企业的内部网络,从而可以对外隐藏真实的内部IP地址,从而降低被攻击的风险,如果从这方面考虑,就算互联网已经过渡到IPV6时代,NAT可能还是会存在的。广义的NAT设备根据转换的对象不同可以分为两种:NAT和NAPT。

1.1 狭义NAT:只转换IP地址

根据转换的地址的不同又可以分为:

  • 源NAT::只转换源IP地址。一般说来源NAT主要用在报文接入互联网时,将本地私网地址转换为公网地址;
  • 目的NAT:只转换目的IP地址。一般说来目的NAT用在报文从公网进入私网地址时,将目的地址由公网地址转换为本地私网地址。
  • 双向NAT:同时转换源IP和目的IP地址。

1.2 NAPT:转换IP地址和端口

NAPT与上述的几种类型的NAT最主要的区别就是把报文中的端口也做映射(转换),这种应用也是比较常见的。转换端口的主要原因,个人认为为了通过端口来实现多路分解和复用,后面会对这种情景做一个详细的描述。

1.3 IPsec与NAT

在RFC3715中,已经比较详细的说明了IPSec与NAT存在的问题。这里做一个简单的描述:
IPsec的封装协议包括AH(认证头协议)ESP(封装安全载荷协议)

  • AH协议由于对整个IP报文进行完整性检验,而通过NAT设备时会修改IP地址(可能还有端口),因此修改后的报文在对端解析时会产生错误,从而导致协商失败,这种矛盾是不可调和的;
  • ESP协议制作IP数据部分做加密和完整性检验,而不包括IP头部信息,因此ESP协议可以应用在NAT环境中,但是也存在其他的问题:例如传输模式下计算传输层校验和时需要伪头部,这是需要真实的IP地址等,这些问题可以通过特定的方式来解决和克服,后来就出现了一个解决方案:NAT穿越(简称NAT-T)。

2. NAT-T环境搭建

关于NAT-T环境的搭建,下面只做原理性介绍,不做具体的配置操作。
下面的拓扑中,两台隧道节点均位于NAT设备之后:FW1作为发起端

上述拓扑中,防火墙FW1和FW2分别位于两个不同的网络中,并且都位于企业的NAT网关之后,用来保护不同的子网,通过IPSec协议创建的隧道用来实现主机10.151.18.14和主机172.17.144.129之间的通信。
通讯点:10.151.18.14 和 172.17.144.129
加密点: FW1和FW2

2.1 FW1配置说明

  • 首先由于通信点和加密点位于不同的设备上,因此我们使用隧道模式进行通信
  • IPsec隧道参数:
    对端IP为:103.22.254.200
    本段IP为:172.21.1.1

    说明: 一般情况下通过互联网建立IPsec隧道,对端的IP地址应该为对端的公网IP地址,私网地址我们是无法得知的(这边是NAT用来保护内部网络地址的情景)。对端的设备可能为隧道的一个节点,也可能为一个NAT设备,它在收到报文后通过目的NAT将报文目的地址由公网地址(比如102.22.254.200)转换为私网地址(如10.28.1.2),这样FW2便可以收到并处理响应的IPsec报文。
  • 添加到103.22.254.0/24的静态路由,下一跳为172.21.1.2; 否则由于缺少下一跳导致报文无法成功发送

2.2 FW2配置说明

FW2的配置于FW1相类似,只是隧道节点不同:

  • 首先由于通信点和加密点位于不同的设备上,因此我们使用隧道模式进行通信
  • IPsec隧道参数:
    对端IP为:10.28.1.1
    本段IP为:103.22.254.1
  • 添加到103.22.254.0/24的静态路由,下一跳为10.28.1.1。 否则由于缺少下一跳导致报文无法成功发送

2.3 NAT网关1配置说明

如果只考虑FW1作为隧道的发起端,那么只需要配置一个源NAT转换即可:

操作 源IP 目的IP
转换前 172.21.1.1 103.22.254.200
转换后 103.22.254.1 102.22.254.200

2.4 NAT网关2配置说明

如果只考虑FW1作为隧道的发起端,那么只需要配置一个目的NAT转换即可:

操作 源IP 目的IP
转换前 103.22.254.1 102.22.254.200
转换后 103.22.254.1 10.28.1.2

3. NAT-T环境小结

上述NAT-T环境中虽然两台FW设备IPsec隧道节点信息配置完全不同,但是通过NAT转换后就会完成FW1与FW2隧道的建立,这便是NAT存在的结果。关于NAT-T的其他知识后续继续更新,其中包括端口滑动、NAT-T类型、openswan中NAT-T的协商流程等

IPsec NAT-T说明和环境搭建的更多相关文章

  1. hadoop环境搭建之关于NAT模式静态IP的设置 ---VMware12+CentOs7

    很久没有更新了,主要是没有时间,今天挤出时间验证了一下,果然还是有些问题的,不过已经解决了,就发上来吧. PS:小豆腐看仔细了哦~ 关于hadoop环境搭建,从单机模式,到伪分布式,再到完全分布式,我 ...

  2. openswan源码ubantu下编译、安装、基本环境搭建

    openswan的编译过程 文章目录 openswan的编译过程 1. 下载源码: 2. 在虚拟机上解压后编译: 2.1 查看INSTALL文件 2.2 查看文件buildlin.sh文件 3. 查看 ...

  3. Hadoop学习笔记—22.Hadoop2.x环境搭建与配置

    自从2015年花了2个多月时间把Hadoop1.x的学习教程学习了一遍,对Hadoop这个神奇的小象有了一个初步的了解,还对每次学习的内容进行了总结,也形成了我的一个博文系列<Hadoop学习笔 ...

  4. Linux环境搭建-在虚拟机中安装Centos7.0

    最近在空闲时间学习Linux环境中各种服务的安装与配置,都属于入门级别的,这里把所有的学习过程记录下来,和大家一起分享. 我的电脑系统是win7,所以我需要在win7上安装一个虚拟机-VMware,然 ...

  5. node.js之开发环境搭建

    一.安装linux系统 (已安装linux可跳此步骤) 虚拟机推荐选择:VirtualBox 或者 Vmware (专业版永久激活码:5A02H-AU243-TZJ49-GTC7K-3C61N) 我这 ...

  6. Linux交叉开发环境搭建 —— 效率之源

    楼主今天终于把所有Linux开发环境需要的软件下载完毕了.虽然以前也是搭建过的,时间久了又折腾了一晚上. 交叉环境: Windows.Linux文件共享 SecureCRT 连接虚拟机终端 工具: V ...

  7. Hadoop基础教程之分布式环境搭建

    前面,我们已经在单机上把Hadoop运行起来了,但我们知道Hadoop支持分布式的,而它的优点就是在分布上突出的,所以我们得搭个环境模拟一下. 在这里,我们采用这样的策略来模拟环境,我们使用3台ubu ...

  8. Hadoop学习笔记(3)——分布式环境搭建

    Hadoop学习笔记(3) ——分布式环境搭建 前面,我们已经在单机上把Hadoop运行起来了,但我们知道Hadoop支持分布式的,而它的优点就是在分布上突出的,所以我们得搭个环境模拟一下. 在这里, ...

  9. Unix/Linux环境C编程入门教程(9) unbntu CCPP开发环境搭建

    1.      首先启动VMware,如果没有安装,请查看前面VMware的安装视频 2 启动虚拟机向导,选择自定义 3 单击下一步 4 选择稍后安装操作系统 5 .选择unbntu 64linux ...

随机推荐

  1. CRC校验原理和verilog实现方法(三)

    1 代码生成 verilog实现CRC校验,可以充分发挥FPGA的硬件特性,即并行运算的能力. 具体实现方式,可以参考我上一篇博客,关键是用线性反馈移位寄存器表示出多项式,另外注意校验数据高位在先.然 ...

  2. 优秀Android开发简历都是这么写,你学会也可以进大厂

    最近收了很多程序员的简历,工作经验从1年到十几年不等.发现一个问题,工作经验范围差不多的程序员,简历看起来也差不多... 为啥程序员的简历如此统一?正好最近看到一个分享也分析了这个问题,结合我个人的一 ...

  3. 985硕艰难转行Android之路 加面经分享

    个人情况介绍 本人为某末流985工科硕士,说来令人感慨,我的考研之路异常曲折,每次都觉得自己能十拿九稳,结果每次都阴差阳错,失之交臂,第一次因为那年目标院校大幅度提升初试线,导致差一分未过线,第二次换 ...

  4. Python入门:ChainMap 有效管理多个上下文

    摘要: Python的ChainMap从collections模块提供用于管理多个词典作为单个的有效工具. 本文分享自华为云社区<从零开始学python | ChainMap 有效管理多个上下文 ...

  5. Use w3m as Web Browser

    Installation: apt-get install w3m. use "a" to input text, "tab" to jump between ...

  6. MySQL全面瓦解27:主从复制(原理 + 实践)

    概念 主从复制,是指建立一个和主数据库完全一样的数据库环境(称为从数据库),并将主库的操作行为进行复制的过程:将主数据库的DDL和DML的操作日志同步到从数据库上, 然后在从数据库上对这些日志进行重新 ...

  7. MyBatis学习01(初识MyBatis和CRUD操作实现)

    1.初识MyBatis 环境说明: jdk 8 + MySQL 5.7.19 maven-3.6.1 IDEA 学习前需要掌握: JDBC MySQL Java 基础 Maven Junit 什么是M ...

  8. [数据库系列之MySQL] Mysql整体架构浅析一

    一.引言 平时我们在做Java系统时,一般情况下都会连接到一个MySQL数据库上去,执行各种增删改查的语句.大部分的Java工程师对MySQL的了解和掌握程度,大致就停留在这么一个阶段:对MySQL可 ...

  9. efcore分表下"完美"实现

    ShardingCore 如何呈现"完美"分表 这篇文章是我针对efcore的分表的简单介绍,如果您有以下需求那么可以自己选择是否使用本框架,本框架将一直持续更新下去,并且免费开源 ...

  10. ☕【Java技术指南】「编译器专题」重塑认识Java编译器的执行过程(常量优化机制)!

    问题概括 静态常量可以再编译器确定字面量,但常量并不一定在编译期就确定了, 也可以在运行时确定,所以Java针对某些情况制定了常量优化机制. 常量优化机制 给一个变量赋值,如果等于号的右边是常量的表达 ...