searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

strongswan+iptables 搭建ipsec穿越NAT测试环境

2023-06-20 08:41:47
693
0

引言

IPsec隧道穿越NAT是IPsec应用的重要场景,也是更改IPsec功能后需要进行回归的基本功能之一。由于该场景测试至少需要三台设备(测试IPsec设备-NAT设备--对照IPsec设备),开发者设备一般比较紧缺,可能会因此忽略该场景的功能回归,留下功能隐患。

本文记录使用strongswan + iptables搭建IPsec穿越NAT场景,方便开发者验证功能问题。

1. 组网场景

简单组网场景如图1所示,CentOS上部署iptables充当NAT网关, CentOS上部署strongswan充当对照IPsec设备, NAT网关和IPsec对照设备可以部署在同一PC上的虚拟机上,因此该组网中只需要一台被测设备。当然如果被测试设备支持虚机形式,整个组网在一台PC上就可以完成,极大的简化了所需要的设备。

2. 配置信息

测试设备的IPsec配置根据设备实际情况配置,在此不做展开。

对Centos先进行相关环境配置,包括关闭防火墙、SELINUX等配置,设置iptables规则,并打开IP转发功能。

打开ip转发功能:

关闭Linux防火墙

关闭SELINUX

因为是测试环境,iptables放行所有流量。

IPsec对照设备采用开源strongswan,这个网络上介绍很多,也不做展开,我们主要说明下如何使用iptables模拟NAT网关。

 

通过IKE/IPsec协议可知,在穿越NAT场景下,不管是IKE协商报文还是ipsec数据报文,只会有两种形式的UDP报文,一种是源、目的端口为500,一种源、目的端口为4500,因此我们只需要在充当NAT网关设备的Centos上增加两条iptables规则就可以。

将源IP 192.168.31.44 源端口为500的UDP报文转换为IP 1.1.1.24,源端口为5000;将源IP 192.168.31.44 源端口为4500的UDP报文转换为IP 1.1.1.24,源端口为5017,有了这两条iptables规则,就产生了一个仅对IKE/IPsec协议生效的NAT网关。

通过更改这两条iptables规则,可以模拟NAT会话变化,进而观察测试设备的IPsec功能是否正常。我们可以更改转换后的端口,也可以更改转换后的IP地址。下图示例是更新了转换后的UDP端口。

需要注意的是,如果有ipsec报文匹配了iptables规则并产生了会话后,更改规则并不会立刻更新会话,也就是说更改后的iptables规则不会立即生效。这两条UDP会话存在默认的老化时间,当没有相关报文且会话到达老化时间后,新的规则才会生效。

  如果想要规则立即生效,可以使用conntrack -D命令删除相关udp会话。

 我们也可以更改iptables规则,让被测设备处于NAT外侧,非常灵活。

0条评论
作者已关闭评论
燃烧的蔬菜
3文章数
0粉丝数
燃烧的蔬菜
3 文章 | 0 粉丝
燃烧的蔬菜
3文章数
0粉丝数
燃烧的蔬菜
3 文章 | 0 粉丝
原创

strongswan+iptables 搭建ipsec穿越NAT测试环境

2023-06-20 08:41:47
693
0

引言

IPsec隧道穿越NAT是IPsec应用的重要场景,也是更改IPsec功能后需要进行回归的基本功能之一。由于该场景测试至少需要三台设备(测试IPsec设备-NAT设备--对照IPsec设备),开发者设备一般比较紧缺,可能会因此忽略该场景的功能回归,留下功能隐患。

本文记录使用strongswan + iptables搭建IPsec穿越NAT场景,方便开发者验证功能问题。

1. 组网场景

简单组网场景如图1所示,CentOS上部署iptables充当NAT网关, CentOS上部署strongswan充当对照IPsec设备, NAT网关和IPsec对照设备可以部署在同一PC上的虚拟机上,因此该组网中只需要一台被测设备。当然如果被测试设备支持虚机形式,整个组网在一台PC上就可以完成,极大的简化了所需要的设备。

2. 配置信息

测试设备的IPsec配置根据设备实际情况配置,在此不做展开。

对Centos先进行相关环境配置,包括关闭防火墙、SELINUX等配置,设置iptables规则,并打开IP转发功能。

打开ip转发功能:

关闭Linux防火墙

关闭SELINUX

因为是测试环境,iptables放行所有流量。

IPsec对照设备采用开源strongswan,这个网络上介绍很多,也不做展开,我们主要说明下如何使用iptables模拟NAT网关。

 

通过IKE/IPsec协议可知,在穿越NAT场景下,不管是IKE协商报文还是ipsec数据报文,只会有两种形式的UDP报文,一种是源、目的端口为500,一种源、目的端口为4500,因此我们只需要在充当NAT网关设备的Centos上增加两条iptables规则就可以。

将源IP 192.168.31.44 源端口为500的UDP报文转换为IP 1.1.1.24,源端口为5000;将源IP 192.168.31.44 源端口为4500的UDP报文转换为IP 1.1.1.24,源端口为5017,有了这两条iptables规则,就产生了一个仅对IKE/IPsec协议生效的NAT网关。

通过更改这两条iptables规则,可以模拟NAT会话变化,进而观察测试设备的IPsec功能是否正常。我们可以更改转换后的端口,也可以更改转换后的IP地址。下图示例是更新了转换后的UDP端口。

需要注意的是,如果有ipsec报文匹配了iptables规则并产生了会话后,更改规则并不会立刻更新会话,也就是说更改后的iptables规则不会立即生效。这两条UDP会话存在默认的老化时间,当没有相关报文且会话到达老化时间后,新的规则才会生效。

  如果想要规则立即生效,可以使用conntrack -D命令删除相关udp会话。

 我们也可以更改iptables规则,让被测设备处于NAT外侧,非常灵活。

文章来自个人专栏
ipsec穿越NAT
1 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0