vpnserver 设置
如何使用SoftEther设置多协议VPN服务器
介绍
本文介绍了如何使用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服务器软件包:
不幸的是,目前无法通过程序包管理器获取最新版本(甚至使用单个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/
此页面包含可用的所有版本的SoftEther。选择所需的版本(在本教程中,我们使用v2.00-9387-rtm-2013.09.16),然后按Enter键转到链接。现在选择Linux,然后在下一页中选择SoftEther VPN Server。根据您的服务器硬件架构,选择一个程序包;在32位-英特尔的x86和64位-英特尔的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 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 x86和64位-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
要配置我们的客户端,我们将使用vpncmd
。在vpnclient目录中时,输入以下命令以运行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/