admin管理员组

文章数量:1530844

2024年7月26日发(作者:)

系统维护与管理

Syste

m

M

m

anement

C

m

oe

a

n

g

t

实现基于开源软件strongSwan

的IKEv2 VPN服务器一键安装

■ 江苏 郭亚锋

随着企业信息化技术的发展,VPN技术逐步被广泛应用并且日益成为网络管理

员维护的常见的基础网络服务之一。笔者在工作实践中,由于经常需要安装和配置

VPN服务,因此针对常见的VPN开源软件strongSwan的安装配置,编写了此篇快速

一键安装的脚本,帮助读者们在实际的工作应用中提高工作效率。

2020.02

87

System Management

系统维护与管理

责任编辑:季莹 投稿信箱:

netadmin@

安装环境及准备工作

由于strongSwan是

开源软件,通过源码编译

可以支持几乎所有Linux

平台,但在日常的网络运

维管理中,更多采用RPM

或者deb格式的

二级制发布安装

包直接安装,近几

年Linux社区中

流行的使用“源”

的安装方式,即包

管理系统,如apt、

yum和dnf等工

具,它们可以方便

图1 配置命令相关信息

表1 脚本执行环境

植到其他Linux发行版本需

要做相应的修改。

打开IP路由转发功能

IP路由转发功能是

VPN正常工作的

基础,默认Linux

系统不会开启,

可以通过修改

/etc/sysctl.

conf文件,添加

_

forward = 1就

可以,但是需要

执行sysyctl -p

例如,本脚本中使用

user_name、user_password、

dns1和dns2等变量保存安

装配置中初始化客户端的用

户名和密码和DNS地址信息,

同样有些参数如主机的IP

地址和网络适配器名称,在

配置命令中常常需要使用,

命令生效。

有的资料会使用修改/

proc/sys/net/ipv4/ip_

forward文件实现同样效果,

虽然不需要执行sysctl -p

命令,但是重启系统后将恢

复以前的设置,因此这里使

用前者方式。

echo "_

forward = 1" >> $sysctl

echo ".

ding=1" >>

$sysctl

sysctl -p

#从以上修改的配置文

解决复杂的包依

赖的问题,因此本文选择使

用高效方便的yum工具作为

安装方式安装。

本脚本从实际需求出发,

针对的Linux发行版本是

CentOS 7.X版本设计,具体

安装环境如表1所示。

脚本初始化工作

为了提高脚本对安装环

境的自适应性,可以把脚本

配置中根据不同机器和使用

场景经常需要修改的参数使

用变量的方式在脚本的开头

进行配置。

并且可以使用Linux控制台

命令自动获得相关信息,具

体如图1所示。

需要注意的是本地IP地

址获取和本地网络适配器名

称的获取都是按照CentOS中

bash脚本测试编写的,如果移

88

2020.02

责任编辑:季莹 投稿信箱:

netadmin@

系统维护与管理

System Management

件加载内核参数

services epel-

release

防火墙的处理

在网络系统

运维中安全问题

受到重视,配置防火墙也是

VPN服务配置的关键,这里采

用了Linux操作系统中经典

的iptables服务,用于保证

操作系统的网络准入安全和

VPN的路由配置。

由于CentOS 7.0以后的

版本默认安装了firewalld

防火墙,虽然经过适当的配

置也能支持VPN服务的安装

和配置工作,但是iptables

服务更节省主机内存,因此

在完成同样功能且没有特殊

需求的情况下,笔者选用了

iptables服务。

以下脚本实现关闭禁用

firewalld服务:

systemctl stop

firewalld

图2 脚本中变量的实现

#使用yum安装

systemctl

enable iptables

#打开开机启动

systemctl start iptab

les

#启动防火墙(iptables

正确安装iptables后,

需要添加防火墙配置。以下

的脚本依次实现了开启必要

的防火墙端口,增加NAT地

址转换,路由转发策略等。

其中,$net_addr和

#关闭防火墙(fire wal

ld)

systemctl disable

firewalld

#关闭开机启动

禁用firewalld防火墙

后还需要安装iptables服

务,可以使用如下命令快速

在线安装。

命令中需要说明的是,

其中epel-release是Extra

Packages for Enterprise

Linux软件包第三方扩展源,

在后期安装strongSwan软

件需要使用,所以这里合并

到iptbales的安装命令中

一起安装。

yum -y install

iptables iptables-

$adapter变量分别是VPN配

置的内部网络IP地址段(如

10.10.10.0/24)和网络适配

器名称,由于配置脚本可能

用于不同的主机环境,这些

参数经常需要修改,因此这

里在脚本中使用变量动态实

现,如图2所示。

strongSwan自动配置

随着iOS系统全面废弃

了PPTP不安全的远程接入

方式而使用IKEv2技术,使

strongSwan成为了网络管理

工作中常见的VPN服务实现

工具。

网站(strongswan.

org/)下载源

软件安装

strongSwan是开源软

件,所以可以直接从其官方

码进行编译安装。CentOS扩

展源已经包含了编译好的版

本,在脚本中可以使用yum

2020.02

89

System Management

系统维护与管理

责任编辑:季莹 投稿信箱:

netadmin@

工具安装,安装脚

本如下:

yum -y

install

strongswan

过程中,至少需要

用到以下五项文

件:①CA的私钥;

②CA证书;③服

务器私钥;④服

务器公钥;⑤服

#安装

systemctl

enable

图3 密钥和证书生成的脚本实现

务器证书。

其中CA证书

在客户端和服务

器连接前必须首先安装到客

户端,也就是建立对CA的信

任。

以上描述中的密钥和证

书生成可以使用如图3所示

的脚本实现。

strongswan

通信。为了让客户端正确的

获得服务器的公钥,可以使

用服务器证书,通过证书技

术,让CA机构实现对公钥的

可信认证。

因此,strongSwan安装

#设置自启动

systemctl start

strongswan

#启动服务

安装后,脚本中使

用systemctl enbale和

systemctl start命令分别

实现了服务的自启动和启动

服务,另外如果需要重启服

务,还可以使用restart代

替以上命令中的start就可

以了。

密钥及证书

IPsec通信过程中,客户

端和服务器端协商加密密钥

是整个安全通信的关键。为

了安全实现这个目标,在交

互过程中使用了非对称加密

技术予以实现。简单的说就

是客户端使用服务器的公

钥,服务器使用私钥,双方使

用非对称加密技术进行安全

图4 IPSec配置

90

2020.02

责任编辑:季莹 投稿信箱:

netadmin@

系统维护与管理

System Management

图3脚本中org,cn和

net_local等脚本变量分别

是证书机构,证书名称和本

地IP地址等信息,可以参看

脚本初始化部分。脚本最后

将生成的5个文件复制到对

应的工作目录中。

注意:由于配置文件中配

置小节需要使用前导空格符

号,但是echo命令不能直接输

出空格,所以需要使用“”进

行转义输出。

账户配置

strongSwan用户配置

在s文件中

设定,脚本配置如下,其中

$user_name、$user_pass和

$serects分别是用户名、密

IKE额外选项配置

/etc/strongswan/

码和配置文件路径,这些在

脚本初始化部分都已经配

置。脚本中

是服务器私钥文件名,其中

EAP和XAUTH是认证方式,

可以根据客户端有选择的配

置。

echo ": RSA server.

" >> $secrects

echo "$user_name :

EAP "$user_pass"" >>

$secrects

echo "$user_name :

IPSec配置

strongSwan是基于

strongswan.d/

文件中包含了IKE密钥交换

的一些配置选择,本脚本仅

需要改变其中的DNS配置,

具体脚本如下:

其中$charon是charon.

conf文件路径的变量,在脚

本初始化部分已经设定。

sed - "s/# dns1

=/dns1 = $dns1/g" $charon

IPSec实现的,因此可以通

过/etc/strongswan/ipsec.

conf配置文件对各功能和项

目进行设置,具体配置项目

及功能可以参考官方配置说

明,这里仅给出脚本中实现

的配置,这个配置可以满足

大多数应用场景。

其中经常需要修改的部

分都使用了脚本变量代替,

如图4所示。

sed - "s/# dns2

=/dns2 = $dns2/g" $charon

XAUTH "$user_pass"" >>

$secrects

客户端配置

strongSwan支持多中

客户端配置,这里主要使用

IEKv2方式。下面就常见的

客户端系统介绍配置方式。

将配置安装过程中CA根

证书安装到iOS中,具体方

法可以采用Web邮件附件的

方式给自己发送一封包含证

书(本例中使用的是server.

修改为crt扩展名。然后在

Saferi浏览器中打开这个证

书文件,按照向导进行安装

即可。

特别需要注意的是iOS系

统需要在“通用”“描述文件与

设备管理”界面中做安全设置,

iOS环境客户端配置

1.证书安装

)的邮件,需要注

意的是附件中的文件名需要

2020.02

91

System Management

系统维护与管理

责任编辑:季莹 投稿信箱:

netadmin@

否则无法生效。

络连接对话框,然后选择刚

新建的连接,并单击右键选

择属性菜单,打开如图7所

示界面,双击打开“Internet

协议版本4”项目,在打开的

界面继续打开“高级”按钮,

最后在打开的界面中勾选

“在远程网络上使用默认网

图5 证书安装

配置

在iOS系统中打开VPN

添加窗口,选择类型IKEv2,

服务器和远程ID都填写

服务器IP地址,用户名和

密码填写服务器配置文件

secrects中的用户名和密

码。这样就能完成iOS中的

VPN客户端配置。

关”选项。

特别需要注意的是,如果

完成以上所有设置后,连接VPN

Windows 10环境客户端配置

1.证书安装

将strongSwan安装过程

中生成的ca证书,.

pem下载到桌面,并修改扩展

名为crt,如。

然后,双击打开证书,点

击左上角“安装证书”按钮,

依据向导完成安装即可。

需要注意的是安装过程中

需要选择证书的安装位置,如

图5所示需要选择“受信任的

根证书颁发机构”位置存储。

图6 VPN设置

后还是不能正常上网,可以尝

试将此界面中“接口跃点数”

手动设置一个较小的数值。

Android环境客户端配置

1.证书导入

将CA证书,

修改扩展名位crt后复制到

Android系统中,并打开,按

照系统提示导入。

2.下载客户端软件

Android环境下可以通

过安装“strongSwan App”

客户端实现连接到服务器。

具体可以从以下地址下

载:

/Android/?C=M;

O=D。

图7 VPN适配器设置

2.新建连接

打开“网络和Internet”

设置,并选择“VPN”,如图6

所示界面中,选择“添加VPN

连接”,然后在界面中填写相

关信息。

特别需要注意的是VPN类

型选择IKEv2,用户名密码使用

安装strongSwan脚本中新建

用户所使用的。

然后在开始运行对话框

中输入“”打开网

下载安装后,使用配置相

对较简单,只需将服务器地

址,用户名和密码填写正确

即可。

【下转第92页】

92

2020.02

责任编辑:季莹 投稿信箱:

netadmin@

系统维护与管理

System Management

Linux启用BFQ I/O调度器实例

■ 陕西 解宝琦 薛民华

Gnu/linux

内核

编者按:I/O调度器(I/O Scheduler)是操作系统用来

为Linux内核的

默认I/O调度

自4.12

决定块设备上I/O操作提交顺序的方法。然而I/O吞吐

kernel开始加

入了新的实施

预算公平排队

量和I/O响应时间往往是矛盾的,为了尽量平衡这两者,

器。据称采用

I/O调度器提供了多种调度算法来适应不同的I/O请求

场景。本文将介绍一个调度实例,供读者们参考。

BFQ调度器可以

提高系统的响

(BFQ)和储存 I/O 调度器。

近日,在Chromebook切换到

BFQ和其他发行版权衡此I/

O调度程序以获得更好地响

应,同时保持良好的吞吐量

功能之后,Fedora 31开始

也将使用BFQ I/O调度器作

应速度和吞吐量。此BFQ I/

O调度器默认适用于SATA和

SCSI设备,通常在没有内核

I/O调度程序的情况下运行

【上接第93页】

配置总结及脚本清单

1.自动配置脚本总结

通过以上介绍,相信读者已经了解了脚本的主要原理,其本质上就是通过bash脚本调用yum

工具实现自动安装必要的软件,然后再使用Linux系统中强大的命令,如sed,awk等,实现自动

化的修改配置文件。通过脚本化的操作,不但提高了服务器软件安装效率,也降低了安装中出现

的错误,例如安装过程中多处使用到证书文件,如果人工安装配置,只要写错一个文件名就会造

成服务无法正常运行,而使用脚本却没有这类问题。

脚本测试环境是CentOS basic安装系统,已经安装好了ifconfig,sed,和awk等常见

Linux命令的环境下运行的,整体的系统非常简洁,通过yum管理需要安装的程序包,另外使用

iptables代替firewalld服务也可以节约系统内存的使用。

本脚本具有代码简单易于理解,功能全面和运行稳定的特点。

2.脚本清单

为了方便读者使用本脚本,这里给出全部脚本清单,限于篇幅限制,这里给出脚本百度网盘

链接,下载到Linux系统中后,修改可执行权限即可运行。

链接:/s/1hRhUkqDg6LAtJSbzVv8z5w

提取码:19lo

2020.02

93

本文标签: 脚本安装配置使用需要