IPsec NAT-T说明和环境搭建
阅读原文时间:2023年07月08日阅读:3

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)。

关于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

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