strongSwan
是一个完整的IPSec
解决方案,为服务器和客户端提供加密和身份验证。用于保护与远程网络的通信安全。
使用strongSwan
需要掌握一些必要的知识:
如果没有此类知识储备,请选择提供远程IPSec
访问的即用型设备。
配置文件
配置strongSwan
的推荐方法是使用vici
控制接口和swanctl
命令行工具。
swanctl
使用swanctl.conf
配置文件,与证书和相应的私钥一起存储在swanctl
目录中。
strongSwan
全局配置以及插件的配置在strongswan.conf
中定义。
或者,使用旧的stroke
控制接口和ipsec
命令行工具可以与已弃用的ipsec.conf
河ipsec.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 charon
由systemd
控制;
对于旧版本,strongSwan
由ipsec
命令控制,其中ipsec start
将启动程序和守护进程。
swanctl.conf
中定义的IKE
连接和子SA
可以通过三种不同的方式启动:
流量触发
如果使用
start_action=trap
,将安装已配置流量(通过local_ts/remote_ts
定义)的IPsec
策略,并且与这些策略匹配的琉璃那个将触发守护程序建立所需的IKE/IPsec SA
。即通过流量触发
IPsec
隧道的建立。这也用于
passthrough/drop
的IPsec
策略,以允许特定流量绕过其他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_SA
或CHILD_SAs
每当swanctl.conf
文件或swanctl
目录中的凭据发生更改时,都可以使用不同的swanctl --load...
命令重新加载。已建立的连接不受这些命令的影响(除非使用start_action = start
)。 如果需要配置更新,则必须重新启动SA
甚至守护程序。
使用不同的swanctl --list-...
命令将提供有关加载或缓存的证书、支持的算法和加载的插件信息。
日志记录和监控
如果遇到问题,提高日志级别可能有助于了解到底出了什么问题。
不同的日志记录选项在单独的文档或strongswan.conf
手册页中进行了描述。可在此处找到用于调试问题的推荐日志设置。
在linux
上,iproute2
软件包提供ip xfrm state
和ip xfrm policy
命令,以请求内核中安装的IPsec SA
和策略的详细信息。添加-s
选项将显示更广泛的信息,例如传输或无效的包的数量。在其他平台上,ipsec-tools
包中的setkey
命令提供了类似的信息。
tcpdump
和wireshark
通常也可用于调试问题。
使用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
在该示例中,本地IP
为10.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机制的
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/8707.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~