前言

本教程意在完成异地组网以安全访问内网设备,请勿用于任何非法用途!!!

之前一直使用的N2N作为组网工具,但最近老是断链不稳定(答辩校园网),想着换个组网工具试试,然后就找到了这款软件

这款软件其实算是专业的虚拟专用网络建立软件了,兼容IPsec/L2TP/L2TPv3/OpenVPN等等

开源地址https://github.com/SoftEtherVPN/SoftEtherVPN/

官方网站https://www.softether.org/

下载页面https://www.softether-download.com/?product=softether 当然也可以从GitHub上下载

开始

服务端

下载、编译

首先我们先部署服务端

2023-10-26_231257

下载源码至服务器,解压,进入目录

1
2
3
tar zxf 压缩包名称
cd vpnserver
make

如果未配置GCC编译环境请先配置环境

1
2
apt-get update
apt-get install build-essential

将编译完后的文件夹移动至一个方便的地方(当然也可以不移动)

可以选择用户目录或者/usr/local

自行选择即可

配置服务端

编译完成后运行vpnserver

1
./vpnserver start

当出现

1
2
3
4
5
Let's get started by accessing to the following URL from your PC:

https://xxx:5555/
or
https://xxx/

并且没有其他报错则服务端启动完成

tips:如果服务器开启了防火墙则请放行5555端口

为了方便管理服务端,我们使用官方提供的服务端GUI管理程序

当然你也可以使用命令行的方式

1
./vpncmd

来管理服务端(不推荐,因为需要设置的项目比较多GUI方便很多)

同样是在下载页面选择 SoftEther VPN Server Manager for Windows

至于要不要使用installer版本看你自己喜好

安装完成后我们打开管理程序

选择「新设置」,填写「设置名」(随自己喜好),「主机名」(可以填服务端的ip或者域名),「端口号」(默认为5555,之后更改的话这里也需要同步更改)

「密码」默认是空,不用填写

点击确定后连接


接着会弹出设置服务器密码的窗口(如果已经设置过则不会弹出)

设置完会弹出「SoftEther VPN Server / Bridge 简单安装」的窗口

选择「远程访问VPN Server」即可(用于点对点组网)

接着会弹出「创建虚拟HUB名称」的窗口,用于划分VLAN(每一个VLAN就是一个HUB)

创建完成后会弹出选一个什么动态DNS主机名什么的(就是一个DDNS),如果不需要就直接点退出(我是自己有域名解析到服务端,所以不需要)

然后在弹出的窗口里选择「L2TP over IPsec」(当然如果你不需要也可以不勾选,后面也是可以重新选择的),用于兼容L2TP(需要开放相应的端口),Android目前没有客户端,只能采用这种方式来连接

接着在弹出的窗口选择「禁用VPN Azure」(因为根本不需要)


接着来到创建用户环节

填写「用户名」,验证类型选择「密码验证」(目前版本无法使用「特定证书认证」,商业版应该支持),填写密码

点击「确定」完成创建用户

关闭用户管理窗口。在管理虚拟HUB界面右下角点击「虚拟NAT和虚拟DHCP服务器」

2023-10-26_234935

选择「启用SecureNAT」接着选择「SecureNAT配置」来为我们的VLAN内的设备分配虚拟局域网IP

网段划分如果不知道的话就保持默认设置

在「应用到客户端的选项」一栏,如果你需要使用服务端来转发访问网络(咳咳咳),那么「默认网关地址」就指向VLAN中服务端的IP地址,DNS服务器相同

如果仅仅是想组网,则将「应用到客户端的选项」一栏全部清除即可

到这里服务端的基本配置就完成了


这里是额外(可选)配置

在服务端管理主界面「监听器列表」内可以更改监听端口,将5555端口更改为你自己喜欢的端口号

关闭web api(因为目前web端管理界面还不完善,留着不如关了)

在「vpn_server.config」配置文件内更改「bool DisableJsonRpcWebApi」的键值为true,重启即可

在服务端管理主界面「加密与网络」内,更改加密方式,选择合适的加密方式;创建新的X509证书,然后导出到本地备用(之后客户端验证证书时会用到)

客户端

客户端就没那么多麻烦了(服务端会自动下发配置,很方便)

同样是在下载页面安装适合自己的客户端(本次教程使用Windows系统)

然后添加新的连接

连接名主机名什么的填就完了

如果在上面你完成了(可选)配置中的服务端证书生成,则可以在这个界面勾选「总是验证服务端证书」,然后选择「指定特定证书登录」,选择之前保存的那个证书即可

这将极大的加强密钥交换时的安全性

接着选择「通信的高级设置」中的「高级设置」,将TCP连接数改为8(根据你自己的实际情况而定),建议不要取消「使用SSL加密VPN会话」,不建议裸奔

可以勾选「使用数据压缩」,可能会增加CPU额外的开销,但是都3202年了难道谁还差这一点U的性能开销吗(doge

最后双击或者右键连接

其他Windows主机上重复上面设置即可

Linux端的使用(额外)

同样是下载页面下载合适的客户端

编译安装方式和服务端是一样的

唯一不同的是vpnserver变成了vpnclient

1
./vpnclient start

启动客户端

我们这里使用vpncmd来管理客户端(可以提前将cmd语言改为中文,方便之后的设置,具体设置在lang.config内)

1
./vpncmd

接着选择「2」来进行VPN Client 的管理

连接上后输入help来查看命令

都是中文就不多介绍什么了

首先输入「NicCreate」来创建新的虚拟LAN卡

启用卡「NicEnable」

接着我们从上往下来设置

启用数据压缩「AccountCompressEnable」

创建新的连接配置「ccountCreate」

设置接续设置的高级通信设置「AccountDetailSet」,主要是TCP连接数的设置

启用连接设置进行通信的加密「AccountEncryptEnable」,再次重申,不建议裸奔

认证类型设置为密码认证「AccountPasswordSet」

启用连接设置服务器证书验证选项「AccountServerCertEnable」

设置连接设置的服务器固有证明书「AccountServerCertSet」,指向之前保存的证书

禁止 VPN 客户服务的远程管理「RemoteDisable」,出于安全考虑,如果不需要请设置为禁用

使用连接设置,开始连接 VPN Server「AccountConnect」

获取当前连接设置的状态「AccountStatusGet」,查看连接是否成功

如果有连接信息则说明连接成功,但是还没折腾完

这时如果你在服务端查看连接的用户分配的IP地址会发现没有被分配IPv4地址

因为我们需要手动动态获取IP地址(Windows不用)

输入「ip addr」(此命令请在退出vpncmd后使用)来查看我们虚拟网卡名称(默认为vpn_vpn)

执行「dhclient vpn_vpn」即可

获取到ipv4地址后如果无法ping通其他主机(无防火墙影响下),则还需要手动增加静态路由

1
2
ip route add 服务器IP地址 via 本地网关地址
ip route del default via 本地网关地址

参考

https://blog.csdn.net/Variazioni/article/details/127004628

https://blog.csdn.net/qq_40166810/article/details/127606027

https://zhuanlan.zhihu.com/p/414145546