首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在两个网关之间使用IPsec传输模式

如何在两个网关之间使用IPsec传输模式
EN

Security用户
提问于 2018-08-30 16:31:50
回答 1查看 941关注 0票数 2

我读过许多关于IPsec传输和隧道模式的比较,并且有一个明确的理解,当两个网关交换路由流量时,他们应该使用隧道模式。换句话说,传输模式应该只在两个主机之间使用(或者两个网关之间通信,而不是路由通信)。我试图理解的是,是否可以在网关到网关的设置中使用传输模式,即使不推荐。

我的背景如下:

LAN1 <-> GW1 <-> GW2 <-> LAN2

在我的例子中,我想保护GW1和GW2之间的链接(包含从LAN1到LAN2的IP通信量)。这是一个直接连接,不涉及路由,没有NAT,什么都没有。推荐隧道模式的所有原因(以及传输模式不适用)都不适用于我的情况--我可以不加密IP报头等等。我想节省开销字节,所以我想使用传输模式,即使在这种情况下不推荐使用传输模式。

我使用的Ubuntu与Strongswan软件包和IPsec在ESP模式下。

我的问题是:这有可能吗?

是否有一个“基本”的原因使它不可能,或只是“不推荐/通常不做/不在思科手册”,但可行?

有人有能工作的配置文件吗?

EN

回答 1

Security用户

发布于 2018-08-31 16:12:24

问题是如何透明地应用IPsec。

用于标识安全关联( SA )的SPIs并不是全局唯一的,它们由接收主机分配,因此为了唯一地标识安全关联数据库(SAD)中的SA,使用元组SPI、协议(ESP或AH)和目标IP地址。这也是主机处理入站IPsec数据包的方式,默认情况下,它只是使用一个元组搜索SAD条目,以匹配接收到的数据包中的数据(还可以首先检查目标地址是否是本地地址,然后使用RFC 4301第5.2节描述的协议在SAD中进行查找)。

然而,在所描述的场景中,目的地不是主机本地的一个已知IP地址(就像隧道模式和主机到主机传输模式中的情况一样),相反,它可能需要整个范围的值,因为它可能是接收网关后面任何主机的地址。因此,无法使用默认查找。

所需的是忽略目标地址的查找(如果网关后面的主机使用IPsec并分配相同的SPI,可能会导致不匹配),或者对IP地址进行某种子网/范围匹配。

现在,就Linux内核而言,这两个选项都不可用。搜索SAD条目以查找入站IPsec数据包(__xfrm_state_lookup)的代码坚持匹配存储在SAD条目中的目标地址。因此,除非以改变目标地址处理方式的方式修改内核的源代码,否则不能避免使用隧道模式。

对于每个网关后面的单个IP地址,都存在所谓的甜菜模式,Linux内核(和strongSwan)支持这种模式。在这种模式下,数据包以传输模式(在网关地址之间)发送,但在处理之前/之后,IP报头中的地址将根据映射地址进行更改(协商的单地址通信选择器,详见草稿-nikander-esp-甜菜模式 )。

附带注意:在Linux内核中,实际上有一个名为XFRM_STATE_WILDRECV的SAs标志,它确实允许对IPv6进行一些通配符地址匹配,但仅通过一个单独的查找函数用于移动IPv6 (似乎是用来处理带有目的地选项和Type 2路由扩展报头的数据包)。

票数 2
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/192739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档