16
2024
12
13:52:54

strongSwan概述

strongSwan是一个完整的IPSec解决方案,为服务器和客户端提供加密和身份验证。用于保护与远程网络的通信安全。

使用strongSwan需要掌握一些必要的知识:

  1. 了解网络原理,从配置IP地址和DNS服务器到防火墙

  2. 掌握基于公钥加密和公钥基础设施public-key infrastructure(PKI)的身份验证概念

  3. 知道如何安装二进制软件包或按照说明编译源代码

  4. 精通控制台consolelinux

如果没有此类知识储备,请选择提供远程IPSec访问的即用型设备。

配置文件

配置strongSwan的推荐方法是使用vici控制接口和swanctl命令行工具。

swanctl使用swanctl.conf配置文件,与证书和相应的私钥一起存储在swanctl目录中。

strongSwan全局配置以及插件的配置在strongswan.conf中定义。

或者,使用旧的stroke控制接口和ipsec命令行工具可以与已弃用的ipsec.confipsec.secrets配置文件一起使用。

  • strongswan.conf 通常路径是/etc/strongswan.conf,用来定义全局配置以及插件的配置

  • strongswan.d 包含所有已启用和已安装插件的配置片段

  • swanctl.conf 为swanctl --load-...命令提供了 连接、加密和IP地址池。

  • swanctl 配置目录(通常为/etc/swanctl)包含 swanctl.conf 和一组预定义的子目录,这些子目录提供基于文件的凭据,例如由 swanctl --load-creds命令读取的私钥和证书。

其他配置方法

配置也可以从SQL数据库加载,也可以由自定义的插件提供。

使用charon-nm守护进程,可以使NetworkManager用于管理VPN连接。

调用和维护

strongSwan通常使用swanctl命令进行管理;

IKE charonsystemd控制;

对于旧版本,strongSwanipsec命令控制,其中ipsec start将启动程序和守护进程。

swanctl.conf中定义的IKE连接和子SA可以通过三种不同的方式启动:

  1. 流量触发

  • 如果使用start_action=trap,将安装已配置流量(通过local_ts/remote_ts定义)的IPsec策略,并且与这些策略匹配的琉璃那个将触发守护程序建立所需的IKE/IPsec SA

  • 即通过流量触发IPsec隧道的建立。

  • 这也用于 passthrough/dropIPsec策略,以允许特定流量绕过其他policy/SA或完全丢弃。

2. 服务启动时自动建立

  • CHILD_SAs配置start_action = start将在服务启动时自动建立; 因为某些原因隧道断开后,他们不会自动重新启动。

  • 需要指定其他配置设置dpd_action and/or close_action才能自动重新启动隧道建立。即使这样设置也不是万无一失,并且可能泄漏数据包。

  • 鼓励使用start_action=trap策略并阅读安全建议以解决任何问题。

3. 手动建立

  • 不使用start_action的连接必须使用swanctl --initiate手动建立,或者被动等待peer/roadwarrior发起的连接。

  • 根据配置,也可以使用swanctl --install手动安装此类连接的策略,因为start_action = trap会在启动时执行此操作。

SA建立后,可以使用swanctl --terminate来拆除IKE_SACHILD_SAs

每当swanctl.conf文件或swanctl目录中的凭据发生更改时,都可以使用不同的swanctl --load...命令重新加载。已建立的连接不受这些命令的影响(除非使用start_action = start)。 如果需要配置更新,则必须重新启动SA甚至守护程序。

使用不同的swanctl --list-...命令将提供有关加载或缓存的证书、支持的算法和加载的插件信息。

日志记录和监控

如果遇到问题,提高日志级别可能有助于了解到底出了什么问题。

不同的日志记录选项在单独的文档或strongswan.conf手册页中进行了描述。可在此处找到用于调试问题的推荐日志设置。

日志配置 strongswan.conf手册 获取帮助

linux上,iproute2软件包提供ip xfrm stateip xfrm policy命令,以请求内核中安装的IPsec SA和策略的详细信息。添加-s选项将显示更广泛的信息,例如传输或无效的包的数量。在其他平台上,ipsec-tools包中的setkey命令提供了类似的信息。

tcpdumpwireshark通常也可用于调试问题。

使用ping测试连接时,请确保选择本地流量选择器中包含的源IP地址(使用-l选项)

路由

linux上,strongSwan默认将路由安装到路由表220中,因此要求内核支持基于策略的路由

可以让charon守护程序将路由安装到任何表中,也可以完全禁用它们。为此,可以使用strongswan.conf中的charon.install_routes、charon.routing_table、charon.routing_table_prio设置。

在两个子网之间建立隧道时,charon会尝试在隧道本地子网中查找本地IP。此类IP必须配置为全局才能进行查找。如果找到有效的IP地址,charon将安装指向远程子网的路由,其中源IP地址设置为找到的IP。 将产生类似如下的路由

10.1.0.0/24 via 10.2.0.1 src 10.2.0.2

在该示例中,本地IP10.2.0.2,远程子网为10.1.0.0/24,这样使用正确的源IP发送到远程子网数据包将被IPSec策略匹配,从本地计算机到远程子网的流量将由IPSec保护。

为了避免与这些路由发生冲突(尤其是在使用虚拟IP 地址的情况下),内核网络链接插件在发送 IKE数据包时手动解析主机的路由表以确定合适的源地址。在具有(非常)大量路由的主机上,这是非常低效的。在这种情况下,建议在strongswan.conf中设置charon.plugins.kernel-netlink.fwmark,因为它将允许使用更有效的源地址查找。

Remote Access Configurations

由于移动客户端很可能从未知IP 地址进行连接,因此网关将使用remote_addrs = %any来接受来自任何位置的连接。为了简化将流量路由回客户端的过程,并且由于移动客户端 通常位于一个或多个 NAT设备后面,因此必须使用虚拟IP 地址。

移动终端 是将所有流量发送到网关还是使用拆分隧道,即仅通过隧道发送特定目的地的流量,也是需要考虑的事情。转发和拆分隧道中对此进行了更详细的说明。该文档还介绍了如何将流量转发到网关后面的主机。

更多详细资料阅读官方文档


来自互联网的资料

[strongswan] strongswan是如何实现与xfrm之间的trap机制的




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/8707.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: