首页 > 技术文章 > vpnserver 设置

yanzi2020 2021-05-07 19:38 原文

如何使用SoftEther设置多协议VPN服务器

的Ubuntu安全联网

介绍

本文介绍了如何使用SoftEther软件包安装和配置多协议VPN服务器。我们在Linux上通过IPSec和SSTP VPN服务器启用和配置OpenVPN和L2TP。

什么是SoftEther

SoftEther VPN是世界上功能最强大,易于使用的多协议VPN软件之一,由日本筑波大学的好伙伴开发。它可以在Windows,Linux,Mac,FreeBSD和Solaris上运行,并且是免费软件和开放源代码。您可以免费将SoftEther用于任何个人或商业用途。

步骤1:创建虚拟服务器

首先,您需要创建一个DigitalOcean Droplet。如SoftEther的网站所述,SoftEther将在内核v2.4或更高版本的几乎所有Linux发行版上运行;但是,建议选择以下发行版之一:CentOS,Fedora或Red Hat Enterprise Linux。

我个人曾在32位和64位版本的Ubuntu,CentOS和Fedora上进行过尝试,并且运行良好。

步骤2:更新伺服器软体

使用以下命令,将服务器软件包更新和升级到最新版本:

Debian / Ubuntu:

apt-get update && apt-get upgrade

CentOS / Fedora:

yum upgrade

步骤3:下载SoftEther

您可以从他们的网站下载最新的Linux版SoftEther服务器软件包:

下载SoftEther

不幸的是,目前无法通过程序包管理器获取最新版本(甚至使用单个URL)。因此,您必须使用桌面浏览器浏览他们的网站以下载软件包。有两种处理方法:首先,在您自己的计算机上浏览其网站,然后根据您的服务器配置(OS,x86 / x64等)找到相应软件包的链接,然后使用wget下载该软件包。打包到您的服务器。或者,您可以使用基于终端的Web浏览器(例如lynx)来浏览SoftEther网站并下载正确的软件包。

使用lynx的方法如下:

首先在您的服务器上安装lynx:

Debian / Ubuntu:

apt-get install lynx -y

CentOS / Fedora:

yum install lynx -y

现在,使用下面的命令浏览SoftEther下载网页:

lynx http://www.softether-download.com/files/softether/

使用Lynx浏览SoftEther文件列表

此页面包含可用的所有版本的SoftEther。选择所需的版本(在本教程中,我们使用v2.00-9387-rtm-2013.09.16),然后按Enter键转到链接。现在选择Linux,然后在下一页中选择SoftEther VPN Server根据您的服务器硬件架构,选择一个程序包;32位-英特尔的x8664位-英特尔的x64或者AMD64为DigitalOcean 32位或64位微滴的工作。最后,通过按链接上的“ D”键从下一页下载tar文件,并在Lynx询问时选择“保存到磁盘”。保存文件后,我们可以按“ Q”退出Lynx并继续进行安装。

步骤4:安装和配置SoftEther

现在,我们必须提取从SoftEther下载页面收到的软件包并进行编译。本教程中使用的软件包名为softether-vpnserver-v2.00-9387-rtm-2013.09.16-linux-x86-32bit.tar.gz,因此我们将使用以下命令将其提取:

 tar xzvf softether-vpnserver-v2.00-9387-rtm-2013.09.16-linux-x86-32bit.tar.gz

解压缩后,将在工作文件夹中创建一个名为vpnserver的目录。为了编译SoftEther,必须在服务器上安装以下工具和软件包:

makegccbinutils(gcc)libc(glibc)zlibopensslreadlinencurses

确保已安装这些。您可以使用以下命令安装构建SoftEther所需的所有软件包:

Debian / Ubuntu:

apt-get install build-essential -y

CentOS / Fedora:

yum groupinstall "Development Tools"

注意:在Fedora上,我发现没有使用上述命令安装gcc软件包,因此您必须使用yum install gcc手动安装它

现在,我们已经安装了所有必需的软件包,我们可以使用以下命令来编译SoftEther:

首先“ cd”进入vpnserver目录:

cd vpnserver

现在运行“ make”将SoftEther编译为可执行文件:

make

SoftEther许可协议

SoftEther将要求您阅读并同意其许可协议。选择1以阅读协议,再次确认已阅读,最后选择同意许可协议。

现在,SoftEther已编译并制成可执行文件(vpnserver和vpncmd)。如果该过程失败,请检查是否已安装所有需求包。

现在已经编译了SoftEther,我们可以将vpnserver目录移动到其他地方,在这里我们将其移动到usr / local

cd ..
mv vpnserver /usr/local
cd /usr/local/vpnserver/

然后更改文件权限以保护它们:

chmod 600 *
chmod 700 vpnserver
chmod 700 vpncmd

如果您希望SoftEther在启动时作为服务启动,请/etc/init.d目录中创建一个名为vpnserver的文件并将其更改为以下内容:

首先使用vi创建并打开文件nano

vi /etc/init.d/vpnserver

并将以下内容粘贴到文件中:

#!/bin/sh
# chkconfig: 2345 99 01
# description: SoftEther VPN Server
DAEMON=/usr/local/vpnserver/vpnserver
LOCK=/var/lock/subsys/vpnserver
test -x $DAEMON || exit 0
case "$1" in
start)
$DAEMON start
touch $LOCK
;;
stop)
$DAEMON stop
rm $LOCK
;;
restart)
$DAEMON stop
sleep 3
$DAEMON start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0

最后,按esc并键入:wq以关闭vim,以保存并关闭文件

如果一个目录不存在,我们必须在/ var / lock / subsys中建立一个目录

mkdir /var/lock/subsys

现在,更改启动脚本的权限,并使用以下命令启动vpnserver

chmod 755 /etc/init.d/vpnserver && /etc/init.d/vpnserver start

使用以下命令使其在启动时运行:

Debian / Ubuntu:

update-rc.d vpnserver defaults

CentOS / Fedora:

chkconfig --add vpnserver 

现在已安装SoftEther VPN Server,并将其配置为在启动时运行。最后,我们必须检查VPN服务器是否正常工作:

cd /usr/local/vpnserver
./vpncmd

现在按3选择“使用VPN工具”,然后键入:

check

如果所有检查均通过,则您的服务器已准备好成为SoftEther VPN服务器,您可以继续下一步。输入“ exit”退出VPN Tools

有两种方法可以配置SoftEther VPN服务器:您可以使用基于Windows的服务器管理器从远程管理和配置任意数量的SoftEther VPN服务器。或使用内置的vpncmd工具配置服务器。

您可以使用他们的网站下载适用于Windows的SoftEther Server Manager,并使用其提供的GUI进行配置,如果您是Windows用户,这是一种更好的选择。

在这里,我们使用vpncmd来配置我们的VPN服务器。

步骤5:更改管理员密码

现在,您已经安装了SoftEther VPN服务器,您必须分配管理员密码才能与SoftEther一起使用。您可以使用vpncmd进行此操作,vpncmd是SoftEther的基于命令行的管理工具:

./vpncmd

1选择“ VPN Server或VPN Bridge的管理”,然后按Enter而不输入任何内容以连接到localhost服务器,再按Enter而不输入任何内容以通过服务器管理模式连接到服务器。

然后使用以下命令更改管理员密码:

ServerPasswordSet

步骤6:创建虚拟集线器

要使用SoftEther,我们必须首先创建一个虚拟集线器。在此,作为示例,我们创建一个名为VPN的集线器,以在vpncmd工具中输入以下命令

HubCreate VPN

接下来,将要求您输入集线器的管理员密码。每当您未以服务器管理员模式登录并且要管理该特定集线器时,都将使用此密码

现在,选择使用此命令创建的虚拟集线器:

Hub VPN

步骤7:启用SecureNAT

有两种将集线器连接到服务器网络的方法:使用本地网桥连接或使用SecureNAT功能。

您可以单独使用每个,但是同时使用这两个会导致问题。

在这里,我们使用SecureNAT,它非常容易设置,并且在大多数情况下都可以很好地工作。您也可以使用Local Bridge,但随后也必须安装和配置DHCP服务器。

SecureNAT是虚拟NAT和DHCP服务器功能的组合。您可以使用以下命令启用SecureNAT:

SecureNatEnable

步骤8:创建和管理用户

现在,我们必须为虚拟集线器创建用户才能使用VPN。我们可以使用UserCreate命令为Virtual Hub创建用户,并通过UserList查看当前用户的列表可以将用户添加到组,甚至可以具有不同类型的身份验证模式(包括:密码,证书,RADIUS,NTLM等)。

通过使用UserCreate命令,我们创建一个名为“ test”的用户:

UserCreate test

身份验证的默认类型是密码,但是我们可以使用以下命令将其更改为其他类型:

UserNTLMSet 用于NT域验证

UserPasswordSet 用于密码验证

UserAnonymousSet 用于匿名身份验证

UserRadiusSet 用于RADIUS身份验证

UserCertSet 用于个人证书认证

UserSignedSet 用于签名证书认证

在本教程中,我们使用密码作为测试用户的用户身份验证模式,因此使用此命令为用户测试设置密码

UserPasswordSet test

步骤9:设定L2TP / IPSec

要启用L2TP / IPsec VPN服务器,可以使用以下命令:

IPsecEnable

输入此命令后,将要求您配置L2TP服务器功能:

启用IPsec服务器上的L2TP功能:选择“是”以启用具有预共享密钥加密的IPSec上的L2TP VPN。现在,您可以使用iPhone,Android,Windows和Mac OS X设备与该服务器建立VPN连接。

启用原始L2TP服务器功能:这将为没有IPSec加密的客户端启用L2TP VPN。

通过IPsec服务器启用EtherIP / L2TPv3功能:与通过IPsec兼容EtherIP / L2TPv3的路由器可以通过启用此功能连接到该服务器。

IPsec的预共享密钥:输入要与L2TP VPN一起使用的预共享密钥。

如果省略用户名上的HUB,则为默认虚拟HUB:连接时,用户必须使用Username @ TargetHubName作为用户名来指定要尝试连接的虚拟HUB 如果用户不提供此类信息,则此选项指定要使用的虚拟集线器。在我们的例子中,输入VPN

步骤10:设定SSTP / OpenVPN

SoftEther可以克隆Microsoft SSTP VPN服务器和OpenVPN服务器的功能。但是在启用这些功能之前,我们必须为服务器生成一个自签名SSL证书。您可以使用openssl或SoftEther自己的命令来生成SSL证书。

在这里,我们使用SoftEther的ServerCertRegenerate命令为我们的服务器生成并注册一个自签名SSL证书。传递给命令的参数是CN(通用名称),并且必须设置为您的主机名(FQDN)或IP地址:

ServerCertRegenerate [CN]

注意1: SoftEther还带有内置的动态DNS功能,可以为您的服务器分配唯一的永久主机名。您可以使用此功能分配的主机名来创建SSL证书并连接到服务器。

注2:如果您已经具有SSL证书,或者已使用openssl创建了一个SSL证书,则可以使用将该证书添加到服务器中ServerCertSet

现在,我们已经创建了证书,我们必须将证书下载到我们的客户并将其添加为受信任的客户。使用以下命令,我们将服务器证书保存到名为cert.cer的文件中

ServerCertGet ~/cert.cer

现在,您可以使用FileZilla或任何其他SFTP客户端将证书下载到客户端。

若要使证书在Windows中受信任,必须将其安装在“受信任的根证书颁发机构”存储中。这是一篇介绍操作方法的文章(请阅读“安装证书链”部分):

安装证书链

现在我们已经为服务器创建并注册了SSL证书,我们可以使用以下命令启用SSTP功能:

SstpEnable yes

并启用OpenVPN:

OpenVpnEnable yes /PORTS:1194

注意: OpenVPN的默认端口是1194,但是您可以通过将上面命令/ PORTS:1194部分更改为所需的一个或多个端口,将其更改为所需的任何端口(是的,它支持多个端口)。

启用OpenVPN后,您可以下载OpenVPN客户端的示例配置文件。在这里,我们创建一个示例OpenVPN配置文件,并将其保存到我的openvpn config.zip中

OpenVpnMakeConfig ~/my_openvpn_config.zip

然后,您可以使用任何SFTP客户端(例如FileZilla)下载它,并将其应用于您的OpenVPN客户端。

SoftEther还为Windows和Linux提供了专用的VPN客户端软件。它支持功能非常强大的称为“基于HTTPS的以太网”SSL-VPN的SoftEther特定协议它使用HTTPS协议和端口443来建立VPN隧道,并且由于该端口是众所周知的,几乎所有的防火墙,代理服务器和NAT都可以传递数据包。为了使用SSL-VPN协议,您必须下载并安装SoftEther VPN Client,可以从其网站获得。

步骤11:连接到SoftEther VPN Server(客户端配置)

由于SoftEther是多协议VPN服务器,因此有许多方法可以作为客户端连接到它。您可以选择任何协议来建立与服务器的安全连接,包括L2TP,SSTP,OpenVPN和SoftEther协议专有的SSL-VPN。

根据客户端操作系统和配置,您可以使用任何上述协议。但是,我更喜欢使用SSL-VPN,因为它既安全又快速,并且如上所述,因为它使用了一个通用的知名端口(443或https-port),它可以穿透大多数防火墙。

在这里,我们使用SoftEther自己的VPN客户端软件连接到我们的服务器:

首先从SoftEther的网站下载适用于Linux的SoftEther VPN客户端。我们可以使用lynx浏览器下载它输入以下命令以打开SoftEther的下载页面:

lynx http://www.softether-download.com/files/softether/

然后,就像下载服务器软件时一样,选择最新版本(此处使用v2.00-9387-rtm-2013.09.16)。现在选择Linux,然后在下一页中选择SoftEther VPN Client现在,根据系统的硬件体系结构,选择一个程序包(32位-Intel x8664位-Intel x64或AMD64适用于DigitalOcean 32位或64位Droplet)。最后,通过按链接上的“ D”键从下一页下载tar文件,并在Lynx询问时选择“保存到磁盘”保存文件后,按“ Q”退出Lynx。

使用以下命令解压缩刚刚下载的tar文件:

tar xzvf softether-vpnclient-v2.00-9387-rtm-2013.09.16-linux-x86-32bit.tar.gz

注意:更改softether-vpnclient-v2.00-9387-rtm-2013.09.16-linux-x86-32bit.tar.gz为下载文件的名称。

现在,就像处理服务器一样,我们必须通过运行以下命令来编译vpnclient并使之成为可执行文件(确保在客户端上安装第4步中提到的开发工具):

cd vpnclient
make

当要求阅读并接受许可协议时,请输入3次,然后输入1,然后将文件移动到另一个目录并更改权限:

cd ..
mv vpnclient /usr/local
cd /usr/local/vpnclient/
chmod 600 *
chmod 700 vpnclient
chmod 700 vpncmd

然后使用以下命令启动VPN客户端服务:

./vpnclient start

要配置我们的客户端,我们将使用vpncmdvpnclient目录中时,输入以下命令以运行vpncmd工具:

./vpncmd

选择2进入“管理VPN客户端”模式,然后按Enter键连接到并管理您刚安装的本地VPN客户端。

SoftEther使用虚拟适配器建立与我们的VPN服务器的连接,使用此命令创建一个名为myadapter的虚拟适配器

NicCreate myadapter

现在使用此命令,创建一个名为myconnection的新VPN连接

AccountCreate myconnection

然后输入您的SoftEther VPN服务器的IP和端口号。该端口号可以是您在服务器上设置为侦听的任何端口。默认情况下,SoftEther侦听以下四个端口:443、992、1194、5555。在下面的示例中,我们使用端口443:

Destination VPN Server Host Name and Port Number: [VPN Server IP Address]:443

注意:除了输入IP地址,您还可以输入服务器的标准域名(FQDN)。

现在,输入您要在服务器上尝试连接的虚拟集线器的名称。在我们的例子中,它被命名为VPN

Destination Virtual Hub Name: VPN

然后输入您在服务器中创建的用户的用户名。我们创建了一个名为test的用户

Connecting User Name: test

最后输入您刚刚创建的虚拟集线器的名称:

Used Virtual Network Adapter Name: myadapter

现在我们的VPN连接已创建,可以连接了。最后一步是将身份验证模式更改为密码,因为这是我们在服务器中配置用户身份验证模式的方式:

AccountPasswordSet myconnection

当要求输入标准作为密码验证方法时:

Specify standard or radius: standard

最后,我们可以连接我们的连接–使用此命令可以做到这一点:

AccountConnect myconnection

您可以使用以下命令查看连接状态:

AccountStatusGet myconnection

注意:为了使与服务器的连接更加安全并防止中间人攻击,最好使用SSL证书来标识服务器。使用SoftEther可以很容易地做到这一点。为此,首先必须按照步骤10中的说明将证书文件下载到客户端,然后使用CertAdd将其添加到客户端的受信任证书中。然后,使用命令AccountServerCertEnable为您的VPN连接启用证书验证。

整理起来

在本文中,我们介绍了使用vpncmd设置SoftEther VPN服务器的过程,vpncmd是SoftEther提供的命令行管理实用程序。使用Windows的SoftEther Server Manager也可以完成此处所做的所有事情,并且使用该工具设置SoftEther VPN Server甚至更加容易。因此,如果您有Windows计算机,我建议您使用它。

就是这样。我们已经使用SoftEther成功安装并配置了多协议VPN服务器。现在,客户端可以使用L2TP,IPSec,SSTP,OpenVPN等连接到我们的服务器。

 

 

 

 

 

 

 

 

 

 

 

 

参考地址  http://blog.dengxj.com/archives/9/

推荐阅读