如何使用SoftEther设置多协议VPN服务器
介绍
本文介绍如何使用 SoftEther 包安装和配置多协议 VPN 服务器。 我们在 Linux 上启用和配置 OpenVPN 和 L2TP over IPSec 和 SSTP VPN 服务器。
什么是 SoftEther
SoftEther VPN 是世界上功能最强大且易于使用的多协议 VPN 软件之一,由日本筑波大学的好人制作。 它在 Windows、Linux、Mac、FreeBSD 和 Solaris 上运行,并且是免费软件和开源的。 您可以免费将 SoftEther 用于任何个人或商业用途。
步骤 1:创建虚拟服务器
首先,您需要创建一个 DigitalOcean Droplet。 如 SoftEther 的网站所述,SoftEther 几乎可以在所有内核 v2.4 或更高版本的 Linux 发行版上运行; 但是建议选择以下发行版之一:CentOS、Fedora 或 Red Hat Enterprise Linux。
我个人在 Ubuntu、CentOS 和 Fedora(32 位和 64 位版本)上尝试过它,并且运行良好。
第 2 步:更新您的服务器软件
使用以下命令,将您的服务器软件包更新并升级到最新版本:
Debian / Ubuntu:
apt-get update && apt-get upgrade
CentOS / Fedora:
yum upgrade
第 3 步:下载 SoftEther
您可以从他们的网站下载适用于 Linux 的最新 SoftEther 服务器包:
不幸的是,目前无法通过包管理器(甚至使用单个 url)获取最新版本。 因此,您必须使用桌面浏览器浏览他们的网站才能下载该软件包。 有几种处理方法:首先,在您自己的计算机上浏览他们的网站,然后根据您的服务器配置(操作系统、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/
此页面包含所有可用的 SoftEther 版本。 选择您想要的版本(在本教程中我们使用 v2.00-9387-rtm-2013.09.16),然后按 Enter 转到链接。 现在选择 Linux 并在下一页中选择 SoftEther VPN Server。 根据你的服务器硬件架构,选择一个包; 32bit - Intel x86 和 64bit - Intel 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,必须在您的服务器上安装以下工具和软件包:
make, gccbinutils (gcc), libc (glibc), zlib, openssl, readline 和 ncurses
确保已安装这些。 您可以使用以下命令安装构建 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 将要求您阅读并同意其许可协议。 选择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 服务器现已安装并配置为在启动时运行。 最后,我们必须检查 VPN 服务器是否正常工作:
cd /usr/local/vpnserver ./vpncmd
现在按3选择使用VPN工具然后输入:
check
如果所有检查均通过,则您的服务器已准备好成为 SoftEther VPN 服务器,您可以继续下一步。 输入“exit”退出VPN Tools。
有两种配置 SoftEther VPN 服务器的方法:您可以使用基于 Windows 的服务器管理器远程管理和配置任意数量的 SoftEther VPN 服务器; 或使用内置的 vpncmd 工具来配置您的服务器。
您可以使用他们的网站下载适用于 Windows 的 SoftEther 服务器管理器,并使用它提供的 GUI 进行配置,如果您是 Windows 用户,这是一种更好的方式。
这里我们使用 vpncmd 来配置我们的 VPN 服务器。
第 5 步:更改管理员密码
现在您已经安装了 SoftEther VPN 服务器,您必须分配一个管理员密码才能与 SoftEther 一起使用。 您可以使用 vpncmd 这是 SoftEther 的基于命令行的管理工具:
./vpncmd
按 1 选择“VPN Server 或 VPN Bridge 的管理”,然后在不输入任何内容的情况下按 Enter 连接到 localhost 服务器,然后在不输入任何内容的情况下再次按 Enter 以通过服务器管理员模式连接到服务器。
然后使用以下命令更改管理员密码:
ServerPasswordSet
第 6 步:创建虚拟 HUB
要使用 SoftEther,我们必须首先创建一个虚拟 HUB。 这里作为示例,我们创建一个名为 VPN 的集线器,以便在 vpncmd 工具中输入以下命令:
HubCreate VPN
接下来,您将被要求输入集线器的管理员密码。 只要您没有以 server admin 模式登录,并且您想管理该特定集线器,就会使用此密码。
现在选择您使用此命令创建的虚拟 HUB:
Hub VPN
第 7 步:启用 SecureNAT
将集线器连接到服务器网络有两种方法:使用本地网桥连接或使用 SecureNAT 功能。
您可以单独使用每一个,但同时使用这两个会导致问题。
在这里,我们使用 SecureNAT,它非常容易设置并且在大多数情况下都能很好地工作。 您也可以使用本地网桥,但您也必须安装和配置 DHCP 服务器。
SecureNAT 是虚拟 NAT 和 DHCP 服务器功能的组合。 您可以使用以下命令启用 SecureNAT:
SecureNatEnable
第 8 步:创建和管理用户
现在我们必须为我们的虚拟 HUB 创建用户以使用 VPN。 我们可以使用命令 UserCreate 为我们的虚拟 HUB 创建用户,并通过 UserList 查看当前用户列表。 用户可以添加到组中,甚至可以有不同类型的身份验证模式(包括:密码、证书、RADIUS、NTLM 等)。
通过使用命令 UserCreate 我们创建了一个名为“test”的用户:
UserCreate test
默认的身份验证类型是密码,但我们可以使用以下命令将其更改为不同的类型:
UserNTLMSet
用于 NT 域认证
UserPasswordSet
用于密码验证
UserAnonymousSet
匿名认证
UserRadiusSet
用于 RADIUS 身份验证
UserCertSet
用于个人证书认证
UserSignedSet
用于签名证书认证
在本教程中,我们使用 Password 作为 test 用户的用户身份验证模式,因此使用此命令为用户 test 设置密码:
UserPasswordSet test
第 9 步:设置 L2TP/IPSec
要启用 L2TP/IPsec VPN 服务器,您可以使用以下命令:
IPsecEnable
输入此命令后,将要求您配置 L2TP 服务器功能:
启用L2TP over IPsec 服务器功能:选择是 启用L2TP VPN over IPSec 并使用预共享密钥加密。 现在,您可以使用 iPhone、Android、Windows 和 Mac OS X 设备与此服务器建立 VPN 连接。
启用原始 L2TP 服务器功能:这将为没有 IPSec 加密的客户端启用 L2TP VPN。
启用EtherIP / L2TPv3 over IPsec服务器功能:兼容EtherIP / L2TPv3 over IPsec的路由器可以通过启用此功能连接到该服务器。
IPsec 的预共享密钥:输入与 L2TP VPN 一起使用的预共享密钥。
在用户名上省略HUB的情况下默认虚拟HUB:用户必须在连接时使用用户名@TargetHubName作为他们的用户名来指定他们尝试连接的虚拟HUB。 如果用户不提供此类信息,此选项指定要使用的虚拟 HUB。 在我们的例子中,输入 VPN。
第 10 步:设置 SSTP/OpenVPN
SoftEther 可以克隆 Microsoft SSTP VPN Server 和 OpenVPN Server 的功能。 但是在我们启用这些之前,我们必须为我们的服务器生成一个自签名 SSL 证书。 您可以使用 openssl 或 SoftEther 自己的命令来生成 SSL 证书。
这里我们使用 SoftEther 的 ServerCertRegenerate 命令为我们的服务器生成和注册一个自签名 SSL 证书。 传递给命令的参数是 CN(通用名称),并且必须设置为您的主机名 (FQDN) 或 IP 地址:
ServerCertRegenerate [CN]
注1: SoftEther 还内置了 Dynamic DNS 功能,可以为您的服务器分配唯一且永久的主机名。 您可以使用此功能分配的主机名来创建 SSL 证书并连接到您的服务器。
注2:如果你已经有SSL证书或者你使用openssl创建了一个,可以使用命令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 配置文件并将其保存到 my_openvpn_config.zip:
OpenVpnMakeConfig ~/my_openvpn_config.zip
然后您可以使用任何 SFTP 客户端(例如 FileZilla)下载它并将其应用到您的 OpenVPN 客户端。
SoftEther 还为 Windows 和 Linux 提供专用的 VPN 客户端软件。 它支持 SoftEther 特定协议,称为 Ethernet over HTTPS 或 SSL-VPN,非常强大。 它使用 HTTPS 协议和端口 443 来建立 VPN 隧道,并且由于这个端口是众所周知的,几乎所有的防火墙、代理服务器和 NAT 都可以通过数据包。 为了使用 SSL-VPN 协议,您必须下载并安装 SoftEther VPN 客户端,可以从他们的网站获得。
第 11 步:连接到 SoftEther VPN 服务器(客户端配置)
由于 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。 现在根据您系统的硬件架构,选择一个包(32bit - Intel x86 和 64bit - Intel x64 或 AMD64 适用于 DigitalOcean 32bit 或 64bit 液滴)。 最后按链接上的“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 成为可执行文件(确保您在客户端安装了 Step 4 中提到的开发工具):
cd vpnclient make
在要求阅读并接受许可协议时输入 1 三次,然后将文件移动到另一个目录并更改权限:
cd .. mv vpnclient /usr/local cd /usr/local/vpnclient/ chmod 600 * chmod 700 vpnclient chmod 700 vpncmd
然后使用以下命令启动 VPN 客户端服务:
./vpnclient start
要配置我们的客户端,我们将使用 vpncmd
。 当您在 vpnclient 目录中时,输入此命令以运行 vpncmd
工具:
./vpncmd
选择2进入VPN客户端管理模式,然后回车即可连接并管理刚刚安装的本地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
注意: 您也可以输入服务器的完全限定域名 (FQDN),而不是 IP 地址。
现在输入您在服务器上尝试连接的虚拟 HUB 的名称。 在我们的例子中,它被命名为 VPN:
Destination Virtual Hub Name: VPN
然后输入您在服务器中创建的用户的用户名。 我们创建了一个名为 test 的用户:
Connecting User Name: test
最后输入您刚刚创建的虚拟 HUB 的名称:
Used Virtual Network Adapter Name: myadapter
现在我们的 VPN 连接已经创建,可以连接了。 最后一步是将身份验证模式更改为 Password,因为这是我们在服务器中配置用户身份验证模式的方式:
AccountPasswordSet myconnection
当被要求时,输入 standard 作为密码验证方法:
Specify standard or radius: standard
最后我们可以连接我们的连接——使用这个命令来做到这一点:
AccountConnect myconnection
您可以使用以下命令查看连接状态:
AccountStatusGet myconnection
注意:为了使您与服务器的连接更加安全,防止中间人攻击,最好使用SSL证书来识别您的服务器。 这可以使用 SoftEther 轻松完成。 为此,首先您必须按照 Step 10 中的说明将证书文件下载到您的客户端,然后使用 CertAdd 将其添加到客户端的受信任证书中。 然后,使用命令 AccountServerCertEnable
为您的 VPN 连接启用证书验证。
整理起来
在本文中,我们介绍了使用 SoftEther 提供的命令行管理实用程序 vpncmd 设置 SoftEther VPN 服务器的过程。 在这里完成的所有事情也可以使用 SoftEther Server Manager for Windows 来完成,使用该工具设置 SoftEther VPN 服务器更加容易。 因此,如果您有 Windows 机器,我建议您使用它。
就是这样。 我们已经使用 SoftEther 成功安装和配置了多协议 VPN 服务器。 现在客户端可以使用 L2TP、IPSec、SSTP、OpenVPN 等连接到我们的服务器。