strongSwan 入门

808 阅读1分钟

旧的 strongSwan 由 ipsec ipsec start 命令控制,然而现在 由 swanctl vici 控制

路由

在 linux 上, strongSwan 默认会将路由配置在 table 220 的表中,路由格式大致如下:


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

IPsec 协议

IPsec 协议主要包括两个部分:

image.png

透明传输模式

image.png

隧道模式

image.png

ESP 包结构

image.png

charon

该守护进程即是 strongSwan 项目中实现了 IKEv2 协议的进程。

      +---------------------------------+       +----------------------------+
      |          Credentials            |       |          Backends          |
      +---------------------------------+       +----------------------------+

       +------------+    +-----------+        +------+            +----------+
       |  receiver  |    |           |        |      |  +------+  | CHILD_SA |
       +----+-------+    | Scheduler |        | IKE- |  | IKE- |--+----------+
            |            |           |        | SA   |--| SA   |  | CHILD_SA |
    +-------+--+         +-----------+        |      |  +------+  +----------+
 <->|  socket  |               |              | Man- |
    +-------+--+         +-----------+        | ager |  +------+  +----------+
            |            |           |        |      |  | IKE- |--| CHILD_SA |
       +----+-------+    | Processor |--------|      |--| SA   |  +----------+
       |   sender   |    |           |        |      |  +------+
       +------------+    +-----------+        +------+

      +---------------------------------+       +----------------------------+
      |               Bus               |       |      Kernel Interface      |
      +---------------------------------+       +----------------------------+
             |                    |                           |
      +-------------+     +-------------+                     V
      | File-Logger |     |  Sys-Logger |                  //////
      +-------------+     +-------------+

该守护进程支持在启动时加载插件

  +-------------------------------------+
  | charon                  +---+ +-----+------+
  |                         |   | |   vici     |
  |                         |   | +-----+------+
  | +-------------+         |   | +-----+------+
  | | bus         |  ---->  | p | |   stroke   |
  | +-------------+         | l | +-----+------+
  | +-------------+  <----  | u | +-----+------+
  | | controller  |         | g | |    sql     |
  | +-------------+  ---->  | i | +-----+------+
  | +-------------+         | n | +-----+------+
  | | credentials |  <----  |   | |  eap_aka   |
  | +-------------+         | l | +-----+------+
  | +-------------+  ---->  | o | +-----+------+
  | | backends    |         | a | |  eap_sim   |
  | +-------------+  <----  | d | +-----+------+
  | +-------------+         | e | +-----+------+
  | | eap         |  ---->  | r | |  eap_md5   |
  | +-------------+         |   | +-----+------+
  |                         |   | +-----+------+
  |                         |   | |eap_identity|
  |                         +---+ +-----+------+
  +-------------------------------------+

There is a growing list of available libcharon plugins.

依赖的内核模块

ah4
ah6
esp4
esp6
xfrm4_tunnel
xfrm6_tunnel
xfrm_user
ip_tunnel
tunnel
tunnel6
xfrm4_mode_tunnel
xfrm6_mode_tunnel

5.2 之前的内核版本,需要明确 enable IPsec, 最好还是使用 5.2 之后的版本。

参考: docs.strongswan.org/docs/5.9/in…

抓包定位参考: - Taking Traffic Dumps

ipv6

image.png

可以看到 site-to-site ipv6 尚未完全支持 IKEv2

docs.strongswan.org/docs/5.9/co…

入门参考: docs.strongswan.org/docs/5.9/ho…