在 Linux Kernel 4.20
开发周期中将会实现很多优秀的新特性,包括改进对硬件的支持和其他更改。但据最新消息,在内核主线并未发现期待已久的 WireGuard
项目 —— 安全 VPN 隧道的内核实现。

关于在 Ubuntu 20.04 LTS 中提供对
WireGuard 支持的可能性,目前正在进行早期讨论。开发者认为,可以通过使用现有的
DKMS 内核模块或基于 Linux 5.5 的内核打上 WireGuard
补丁来实现,因为必要的加密 API 变更已纳入 Linux 5.5 内核版本。

安装 Strongswan :Linux 上一个基于 IPsec 的 VPN 工具

IPsec是一个提供网络层安全的标准。它包含认证头(AH)和安全负载封装(ESP)组件。AH提供包的完整性,ESP组件提供包的保密性。IPsec确保了在网络层的安全特性。

  • 保密性
  • 数据包完整性
  • 来源不可抵赖性
  • 重放攻击防护

Strongswan是一个IPsec协议的开源代码实现,Strongswan的意思是强安全广域网(StrongS/WAN)。它支持IPsec的VPN中的两个版本的密钥自动交换(网络密钥交换(IKE)V1和V2)。

图片 1

Strongswan基本上提供了在VPN的两个节点/网关之间自动交换密钥的共享,然后它使用了Linux内核的IPsec(AH和ESP)实现。密钥共享使用了之后用于ESP数据加密的IKE
机制。在IKE阶段,strongswan使用OpenSSL的加密算法(AES,SHA等等)和其他加密类库。无论如何,IPsec中的ESP组件使用的安全算法是由Linux内核实现的。Strongswan的主要特性如下:

  • x.509证书或基于预共享密钥认证
  • 支持IKEv1和IKEv2密钥交换协议
  • 可选的,对于插件和库的内置完整性和加密测试
  • 支持椭圆曲线DH群和ECDSA证书
  • 在智能卡上存储RSA私钥和证书

它能被使用在客户端/服务器(road warrior模式)和网关到网关的情景。

 

WireGuard 是一个 VPN
内核实现,代码行数少,优先考虑性能,配置简单,试图在做到配置简单的同时提供高性能。WireGuard
基于 UDP,数据包在一端加密之后封装在 UDP
包内发送到远程端点,然后解密。此前有消息称,WireGuard
作者已提交 WireGuard 供评审,准备合并到主线。WireGuard 的作者是 Jason
Donenfeld,他在邮件中表示,WireGuard
已被多家大公司使用,并被整合到工具、发行版,移动手机和数据中心,是时候让它合并到内核主线了。

昨天我们曾报道过,由于合并窗口时间的安排,WireGuard 十分遗憾未能加入
Linux 5.5。正因如此,WireGuard 也不幸地错过了 Ubuntu 20.04 LTS
的标记,但它已经在 Linux 5.6 的 net-next 中出现。另外,随着 Linux 5.5
将于1月下旬或2月初发布,几乎肯定是此内核版本将为下一个 Ubuntu
长期支持版本提供支持,因为 Linux 5.6 对于 LTS
发行版来说太接近4月的发布日期了,所以同样是4月发布的 Ubuntu 20.04
来不及使用 Linux 5.6。

如何安装

几乎所有的Linux发行版都支持Strongswan的二进制包。在这个教程,我们会从二进制包安装strongswan,也会从源代码编译带有合适的特性的strongswan。

 

图片 2

从 Ubuntu
近期的邮件列表活动来看,开发团队似乎有兴趣将
WireGuard 添加到 20.04 版本的 Ubuntu 内核中。Canonical
的内核团队正在讨论此事,而 WireGuard 作者兼首席开发者 Jason Donenfeld
也已经表示愿意提供帮助。

使用二进制包

可以使用以下命令安装Strongswan到Ubuntu 14.04 LTS

  1. $ sudo aptitude install strongswan

图片 3

安装strongswan

strongswan的全局配置(strongswan.conf)文件和ipsec配置(ipsec.conf/ipsec.secrets)文件都在/etc/目录下。 

使用 WireGuard 的还有用于 Linux 内核的新的 Zinc 加密
API,它也没有被合并到内核主线。

在 Linux 5.5 具有 WireGuard 的加密 API 位的情况下,如果尚未提供 DKMS WG
模块,则对其内核进行补丁修复应该很简单。我们将看到有望在 Ubuntu 20.04
LTS 上支持此安全 VPN 隧道技术。

strongswan源码编译安装的依赖包

  • GMP(strongswan使用的高精度数学库)
  • OpenSSL(加密算法来自这个库)
  • PKCS(1,7,8,11,12)(证书编码和智能卡集成)

 

令人遗憾的是,即使 Linus Torvalds 本人也在今年早些时候表达了希望尽早将
WireGuard 合并到内核。WireGuard
也获得了许多上游开发商的赞誉,甚至还得到了美国参议员的推荐。但目前看来,下个版本的内核并不会有 WireGuard。

对于希望使用不涉及代码树方法的用户,可通过此 WireGuard.com
文档找到有关在各种 Linux 发行版以及
Windows/macOS/Android/iOS 等操作系统上运行 WireGuard 的详细信息。

步骤

1) 在终端使用下面命令到/usr/src/目录

  1. $ cd /usr/src

2) 用下面命令从strongswan网站下载源代码

  1. $ sudo wget http://download.strongswan.org/strongswan-5.2.1.tar.gz

(strongswan-5.2.1.tar.gz 是当前最新版。)

图片 4

下载软件

3) 用下面命令提取下载的软件,然后进入目录。

  1. $ sudo tar –xvzf strongswan-5.2.1.tar.gz; cd strongswan-5.2.1

4) 使用configure命令配置strongswan每个想要的选项。

  1. $ ./configure --prefix=/usr/local-–enable-pkcs11 -–enable-openssl

图片 5

检查strongswan包

如果GMP库没有安装,配置脚本将会发生下面的错误。

图片 6

GMP library error

因此,首先,使用下面命令安装GMP库然后执行配置脚本。

图片 7

gmp installation

不过,如果GMP已经安装还报上述错误的话,在Ubuntu上使用如下命令,给在路径
/usr/lib,/lib/,/usr/lib/x86_64-linux-gnu/ 下的libgmp.so库创建软连接。

  1. $ sudo ln -s /usr/lib/x86_64-linux-gnu/libgmp.so.10.1.3/usr/lib/x86_64-linux-gnu/libgmp.so

图片 8

softlink of libgmp.so library

创建libgmp.so软连接后,再执行./configure脚本也许就找到gmp库了。然而,如果gmp头文件发生其他错误,像下面这样。

图片 9

GMP header file issu

为解决上面的错误,使用下面命令安装libgmp-dev包

  1. $ sudo aptitude install libgmp-dev

图片 10

Installation of Development library of GMP

安装gmp的开发库后,在运行一遍配置脚本,如果没有发生错误,则将看见下面的这些输出。

图片 11

Output of Configure scirpt

使用下面的命令编译安装strongswan。

  1. $ sudo make ; sudo make install

安装strongswan后,全局配置(strongswan.conf)和ipsec策略/密码配置文件(ipsec.conf/ipsec.secretes)被放在/usr/local/etc目录。

根据我们的安全需要Strongswan可以用作隧道或者传输模式。它提供众所周知的site-2-site模式和road
warrior模式的VPN。它很容易使用在Cisco,Juniper设备上。


via:

作者:nido 译者:wyangsun 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

本文永久更新链接地址:

Strongswan :Linux 上一个基于 IPsec 的 VPN
工具
IPsec是一个提供网络层安全的标准。它包含认证头(AH)和安全负载封装(ESP)组件。AH提供包的…

虽然 WireGuard
暂未进入内核主线,但许多其他的发行版依然可以在没有主线内核的支持下使用 WireGuard
—— 至少有提供用于 WireGuard 的内核代码树之外的包(DKMS)。

(文/开源中国)    

当然,我们希望 WireGuard
将在下一个开发周期中被合并到内核主线,到那时候可以成为更好的 Linux VPN
解决方案。

(文/开源中国)