我需要添加一个虚拟IPsec适配器吗?


8

我正在尝试使用iproute2从控制台手动设置IPsec连接。我需要的是一个虚拟接口(充其量,一个虚拟IP地址也足够),该接口可以进行IPsec转换(ESP /隧道模式),并将其移交给eth0(在我的系统上称为em1)。在另一组上,对等方从其自己的eth获取数据包,将其解密,然后将其移交给另一侧的虚拟接口。所以我想建立一个“正常”的IPsec隧道。

我对策略和SA没问题,使用传输模式下系统的常规以太网地址进行配置很容易,即

ip xfrm policy add src 198.51.100.1 dst 198.51.100.2 dir out tmpl proto esp
ip xfrm state  add src 198.51.100.1 dst 198.51.100.2 spi 24501 proto esp enc des 0xAABBCCDDEEFF0011
ip xfrm state  add src 198.51.100.2 dst 198.51.100.1 spi 24501 proto esp enc des 0xAABBCCDDEEFF0022

对手上的对手配置效果很好。

现在,我尝试使用以下命令设置虚拟IP和到其他系统的路由

ip address add 10.0.0.0 dev em1
ip route add to 10.0.0.2 via 10.0.0.1

反之亦然。这再次运作良好。然后,我将IPsec策略和SA更改为

ip xfrm policy add src 10.0.0.1 dst 10.0.0.2 dir out tmpl src 198.51.100.1 dst 198.51.100.2 proto esp mode tunnel
ip xfrm state  add src 10.0.0.1 dst 10.0.0.2 spi 24501 proto esp enc des 0xAABBCCDDEEFF0011
ip xfrm state  add src 10.0.0.2 dst 10.0.0.1 spi 24501 proto esp enc des 0xAABBCCDDEEFF0022

现在,当我尝试与tcping对等方联系时,我没有任何答案,并setkey -PD告诉我,从未触发过安全策略。现在,我正在尝试构造一个工作的虚拟接口来处理IPsec隧道,但是我不知道如何将其绑定到物理接口以及如何获取内核以应用安全策略。

对于我而言,至关重要的是我可以使用iproute2解决此问题,因为我最终想从C ++程序中完成此任务,并且我已经拥有了适当的类,可以将Netlink命令删除为与该ip命令相同的样式(我可以使用ip,也可以在我的代码内完成)。实际上,第一部分已经在我的程序中运行了,其余部分我想使用相同的Netlink API函数。

更新 我发现需要使用隧道地址来设置状态,以便正常工作的SA

ip xfrm state  add src 10.0.0.1 dst 10.0.0.2 spi 24501 proto esp enc des 0xAABBCCDDEEFF0011
ip xfrm state  add src 10.0.0.2 dst 10.0.0.1 spi 24501 proto esp enc des 0xAABBCCDDEEFF0022

而政策保持不变。现在该策略已触发,我在嗅探端口上看到一个转换后的数据包。另外,另一台计算机上的iptables阻止了该数据包,我将其禁用以进行测试。

因此,一个方向现在似乎可行,但我仍然没有答案。我也不知道问题是否仍然是转换,路由或接口部分。我更喜欢的解决方案仍然是包括虚拟接口的解决方案,但是我不知道如何将其绑定到物理接口,更不用说转换是否可以那样工作了。

Answers:


1

通常,您使用的是使用创建的隧道ip tunnel add。隧道设备为您提供了一个虚拟设备,该设备将IP数据包封装在其他IP数据包中。然后可以使用IPsec对封装的数据包进行加密。

例如,您可以使用以下方法创建GRE隧道:

ip tunnel add mytunnel mode gre remote 198.51.100.2
ip addr add 10.0.0.1 peer 10.0.0.2/31 dev mytunnel

然后,您可以配置IPSec以加密GRE数据包(一般而言或仅到达该目的地)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.