引言
无论您是希望能够远程连接到企业网络,还是构建两个远程点之间的虚拟网络(通过不安全的网络,例如互联网),您都需要使用VPN(虚拟专用网络)。VPN允许您通过互联网或不受信任的网络安全地连接到远程局域网(LAN)。
SoftEther是一个开源VPN服务器,是OpenVPN的替代方案。它被认为是世界上最强大且易于使用的多协议VPN软件。本文将介绍如何在Ubuntu Xenial Xerus Linux上设置SoftEther。
您将需要的东西
- Ubuntu 16.04 Xenial Xerus Linux
- 推荐30GB的可用磁盘空间
- 根权限
请注意,本文所用的二进制文件是x64架构。如果您的机器不是x64,您需要选择适合的二进制文件。
约定
-
#
– 需要以根用户身份或使用sudo
命令执行的Linux命令。 -
$
– 需要作为常规非特权用户执行的Linux命令。 -
>
– 需要从vpncmd命令行界面执行的命令。
准备服务器
升级系统
bash
$ sudo apt update
$ sudo apt upgrade
安装编译工具
如果尚未安装,请安装build-essential
:
bash
$ sudo apt install build-essential
安装SoftEther
获取SoftEther源代码
我们将获取SoftEther源代码(最新版本为2016年11月27日发布的4.22版本):
bash
$ wget http://www.softether-download.com/files/softether/v4.22-9634-beta-2016.11.27-tree/Linux/SoftEther_VPN_Server/64bit_-_Intel_x64_or_AMD64/softether-vpnserver-v4.22-9634-beta-2016.11.27-linux-x64-64bit.tar.gz
解压源代码
bash
$ tar xzf softether-vpnserver-v4.22-9634-beta-2016.11.27-linux-x64-64bit.tar.gz
解压成功后,我们会在当前目录中找到一个名为vpnserver
的文件夹。
从源代码安装
bash
$ cd vpnserver
$ sudo make
在安装过程中,我们需要输入1
来阅读许可协议,输入1
确认我们已阅读许可协议,最后输入1
同意许可协议。
安装完成后,我们可以通过以下命令从安装文件夹运行VPN服务器:
bash
$ sudo ./vpnserver start
为了更好地管理,我们将其配置为守护进程。
配置为守护进程
按照以下步骤将VPN服务器配置为守护进程:
移动安装文件夹到/usr/local
bash
$ cd ..
$ sudo mv vpnserver /usr/local
赋予文件适当的权限
bash
$ cd /usr/local/vpnserver/
$ sudo chmod 600 *
$ sudo chmod 700 vpnserver
$ sudo chmod 700 vpncmd
在继续之前,让我们检查VPN服务器是否能正常运行。确保在启动vpnserver之前进行此检查。
运行vpncmd命令
输入3
,然后输入check
:
bash
$ cd /usr/local/vpnserver/
$ sudo ./vpncmd
如果一切正常,我们应该在操作结束时看到“All checks passed”的消息。
创建systemd服务
创建文件/lib/systemd/system/vpnserver.service
:
bash
$ sudo vi /lib/systemd/system/vpnserver.service
并在其中放入以下内容:
``` [Unit] Description=SoftEther VPN Server After=network.target
[Service] Type=forking ExecStart=/usr/local/vpnserver/vpnserver start ExecStop=/usr/local/vpnserver/vpnserver stop
[Install] WantedBy=multi-user.target ```
现在VPN服务器在启动时会自动启动,我们可以使用systemctl
管理vpnserver。
准备SoftEther VPN服务器以供使用
SoftEther提供了多种使用案例:临时VPN、远程访问LAN、LAN到LAN桥接等。本文将其配置为“远程访问LAN”的使用。
我们将首先创建一个虚拟集线器,然后将该虚拟集线器与服务器网络(企业LAN)连接。
为vpncmd设置管理员密码
出于显而易见的原因,建议在VPN服务器安装后立即为vpncmd设置管理员密码。这可以通过vpncmd工具完成:
bash
$ cd /usr/local/vpnserver/
$ sudo ./vpncmd
如上图所示,选择1
进行“VPN服务器或VPN桥接的管理”,然后按Enter键回答后续问题,直到出现VPN Server>
提示。在命令提示符下,输入ServerPasswordSet
。
创建虚拟集线器
使用vpncmd,我们将创建一个名为“myFirstHUB”的虚拟集线器:
```bash $ cd /usr/local/vpnserver/ $ sudo ./vpncmd
HubCreate myFirstHUB ```
将虚拟集线器连接到服务器网络
为了允许客户端访问服务器网络,我们需要将虚拟集线器与LAN连接。这可以通过本地桥接连接或使用SecureNAT功能来完成。
在我们的案例中,将使用SecureNAT功能。SecureNAT功能允许使用VPN服务器作为简单网络网关、DHCP服务器或远程访问远程站点的简单网关。
让我们选择我们的虚拟集线器并启用SecureNAT功能:
```bash $ cd /usr/local/vpnserver/ $ sudo ./vpncmd
Hub myFirstHUB SecureNatEnable ```
创建用户
创建用户的命令为:UserCreate
。用户创建后,我们需要设置密码。请注意,可以使用其他身份验证方法:NTLM、RADIUS等。默认的身份验证方法是“密码”。
设置密码的命令为:UserPasswordSet
。
客户端配置
SoftEther为许多操作系统提供客户端,包括Linux。
下载客户端
我们将使用wget命令下载客户端:
bash
$ wget http://www.softether-download.com/files/softether/v4.22-9634-beta-2016.11.27-tree/Linux/SoftEther_VPN_Client/64bit_-_Intel_x64_or_AMD64/softether-vpnclient-v4.22-9634-beta-2016.11.27-linux-x64-64bit.tar.gz
解压源代码
bash
$ tar xzf softether-vpnclient-v4.22-9634-beta-2016.11.27-linux-x64-64bit.tar.gz
从源代码安装
客户端的编译与服务器类似:
bash
$ cd vpnclient
$ sudo make
安装后更改文件权限如下:
bash
$ sudo chmod 600 *
$ sudo chmod 700 vpnclient
$ sudo chmod 700 vpncmd
现在我们可以启动VPN客户端并进行必要的配置以连接到服务器。
bash
$ sudo ./vpnclient start
$ sudo ./vpncmd
选择2
进入“VPN客户端管理”。并执行以下操作:
- 创建虚拟适配器(使用
NiceCreate
,可以给任何名称) - 创建VPN连接(
AccountCreate account0
) - 指定目标服务器主机名和端口号(
server:port
) - 选择要连接的虚拟集线器(在我们的案例中使用“myFirstHUB”)
- 输入用户名
- 使用之前创建的虚拟适配器
现在我们可以启动VPN客户端连接。在此之前,我们必须为之前在VPN连接中配置的用户指定密码。
```bash
AccountPassword account0 standard AccountConnect account0 ```
客户端现在已连接,但虚拟适配器没有分配IP地址。最后一步,我们需要向VPN服务器请求IP地址。我们可以使用ifconfig
命令查找VPN虚拟适配器(以vpn_
开头),然后使用dhclient
命令请求IP地址。
bash
$ sudo dhclient vpn_ethvpn0
执行此命令后,VPN客户端将从SoftEther VPN服务器获取IP地址,并可以与远程LAN通信。
感谢您对本文章的关注。如有问题或改进建议,欢迎提出。