使用SoftEther在Ubuntu上搭建VPN服务器

更新时间

引言

无论您是希望能够远程连接到企业网络,还是构建两个远程点之间的虚拟网络(通过不安全的网络,例如互联网),您都需要使用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通信。

感谢您对本文章的关注。如有问题或改进建议,欢迎提出。

更新时间