VPP集成StrongSwan以使用IPsec
  Pq37jUF4UeqZ 2023年11月02日 48 0

Author basilguo@163.com

Date Aug. 03, 2023

Description VPP集成StrongSwan以使用IPsec。

1. 背景

根据List of Internet exchange points by size,目前IXP的最大吞吐是Brazil Internet Exchange的28030Gbps(平均为15830Gbps,于2023年3月15日更新),然后是Equinix Exchange的19600Gbps(平均9900Gbps,于2020年8月5日更新)。这样感觉1.89Tbps大概能覆盖大部分的IXP流量了。那域间ipsec应该还算可以吧。

不过这里提到目前互联网最大速率已经到了 319 Terabits per second (Tb/s),那就远远不如了。只是这个速度貌似并不是互联网域间的。Anyway,就先搞搞VPP和StrongSwan的结合吧。

本文参考Intel的FD.io VPP-SSwan and Linux-CP - Integrate StrongSwan with World’s First Open Sourced 1.89 Tb IPsec Solution。不过我目前也用不到docker,所以就打算参照它搞到物理机上来,虽然目前还没搞定。

2. 环境

2.1. 版本

$ sudo vppctl # 或者make run
DBGvpp# show version
vpp v23.06-release built by XXX on XXX at 2023-08-02T07:37:51

$ lsb_release -r
Release:        20.04

2.2. 拓扑

IKE的设置是需要至少两端的。所以我在H3和H5上装了vpp_sswan以及StrongSwan,H4用来查看数据包的。H3、H4、H5都配置了frr-bgpd,以用来接通路由。也可以指定路由,或许会更加简单一点。

+--------+   +--------+   +--------+
|   H3   |---|   H4   |---|   H5   |
+--------+   +--------+   +--------+
# H3
sudo ip addr add 192.168.34.3/24 dev eth2
## 以下可选的,如果使用了FRR,配置好bpg就行
sudo ip route add 192.168.45.0/24 via 192.168.34.4 dev eth2

# H4
## H4->H3
sudo ip addr add 192.168.34.4/24 dev eth3
## H4->H5
sudo ip addr add 192.168.45.4/24 dev eth2

# H5
sudo ip addr add 192.168.45.5/24 dev eth2
## 以下可选的,如果使用了FRR,配置好bpg就行
sudo ip route add 192.168.34.0/24 via 192.168.45.4 dev eth2

3. 编译安装

有关VPP或FRR的配置,这里不再详述。可以参考另一篇博文

我们选择的这个版本中已经包含了vpp_swan插件了,只是需要自己进一步的编译安装以及StrongSwan。

Intel给的那个文档,需要结合官方的安装vpp_sswan

不过Intel给的并没有错,如果编译出问题,例如报错找不到<daemon.h>或者找不到<plugins/plugin.h>或者其它错误,那么就老老实实的使用make -j1吧,多个任务之间有依赖关系,不能这样使用。所以要么修改Makefile,要么就老老实实使用make -j1,再或者就自己手动编译。

需要先安装两个依赖,这样才能继续后续的编译安装操作。

sudo apt install -y gperf libsystemd-dev

3.1. all-in-one

alias make=/usr/bin/make -j1
VPP_HOME=/usr/local/src/vpp
cd ${VPP_HOME}/extras/strongswan/vpp_sswan
# 最简单的方式是使用,它会干三件事情:pull-swan, install-swan以及make $(TARGET)
# 这个TARGET是 libstrongswan-kernel-vpp.so
make all

# 这个安装也做两件事:拷贝TARGET到插件目录($(PREFIX)/lib/ipsec/plugins),
# 以及拷贝conf文件到PREFIX_SYS_CONF=/etc;PLUGINCONF=$(PREFIX_SYS_CONF)/strongswan.d/charon/
sudo make install

这样编译就搞定了。如果不行,那么就一步步来。

3.2. step-by-step

如果上面成功就不需要再搞这个了。成功标志就是有没有生成 libstrongswan-kernel-vpp.so。即便是这里,也推荐使用make -j1,出现奇怪问题就回退这个。

alias make=/usr/bin/make -j1
VPP_HOME=/usr/local/src/vpp

# 下载StrongSwan
## 如果执行过make all那个,大概率已经下载好了,可以直接用。
## 使用strongswan 5.9.5或者5.9.6,这是官方推荐的。因为只有这两个版本测试过了可行。
## VPP23.06自己给下载的就是5.9.6版本
cd ${VPP_HOME}/build/external/downloads
if [ -z strongswan-5.9.6.tar.gz ]
then
    wget https://github.com/strongswan/strongswan/releases/download/5.9.6/strongswan-5.9.6.tar.gz
fi

# 这里vpp_sswan官方和intel文档有些冲突,以官方为准吧,实际上就是一层目录的区别。
# 把上述下载的代码解压并拷贝。代码错没错不知道,自行检查吧。
# 大概意思是对了,因为我用的`make -j1 all`。
tar -xzvf ${VPP_HOME}/build/external/downloads/strongswan-5.9.6.tar.gz .
cp -r strongswan-5.9.6 ${VPP_HOME}/build-root/build-vpp-native/external/sswan

# 编译以及安装
./autogen.sh
# 官方也是这样给的,改不改看需求
# 如果要改,就看下`./configure -h`是怎么提示的吧
# 大概也就是为了代码的整齐,改下前两个,尤其是/etc,有些坑哦,建议更改为/etc/strongswan
# 不过我这里就这样吧,把/etc污染了[Lol]
./configure --prefix=/usr --sysconfdir=/etc --enable-libipsec --enable-systemd --enable-swanctl --disable-gmp --enable-openssl
make
sudo make install

# 还得把这里也给搞一下,不过就不要用make命令了,不然还是相当于make all。把上面手动执行的
# 通过 make pull-swan 和 make install-swan 重新执行一下。
cd ${VPP_HOME}/extras/strongswan/vpp_sswan/
sudo make install

成功的标志和上面一样,也都是如果没有报错就是成功了的。libstrongswan-kernel-vpp.so这个是一定要有的。

StrongSwan安装完毕后已经由systemd来管理了,可以使用systemctl控制开闭。

4. 测试

有关测试我不想使用docker,所以还在摸索strongswan中。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

Pq37jUF4UeqZ