SoftEther使用命令行搭建VPN服务器


网上大部分都是介绍使用Management客户端配置SoftEther,本文介绍使用SoftEther命令行搭建VPN服务器的过程。

下载与安装

GitHub Release下载中心,根据系统类型及实际情况选择稳定非beta的rtm版server安装包,例如centos选择 VPNserver,复制下载链接,下载到/usr/local/src目录

1
2
3
4
5
cd /usr/local/src
wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.38-9760-rtm/softether-vpnserver-v4.38-9760-rtm-2021.08.17-linux-x64-64bit.tar.gz
tar -zxvf softether-vpnserver-v4.38-9760-rtm-2021.08.17-linux-x64-64bit.tar.gz
cd vpnserver
make

安装过程中,按照提示输入1即可。

通常来说,会自己选择语言,如果需要修改,则修改lang.config文件即可。

运行

执行./vpnserver start让VPN Server在后台运行.

1
./vpnserver start

配置

经测试,MacOS的Management配置客户端不能打开,所以改为以命令行配置:

进入命令行配置界面

执行./vpncmd SoftEther VPN命令行配置SoftEther VPN Server.

1
./vpncmd

提示如下:

1
2
3
4
5
6
7
通过使用 vpncmd 程序,可以取得以下成果。

1. VPN Server 或 VPN Bridge 的管理。
2. VPN Client 的管理。
3. 使用 VPN 工具 (证书创建和网络传输速度测试工具)

选择 1, 23:

输入1回车即可,继续提示

1
2
3
4
5
指定的主机名或目标 VPN Server 或 VPN Bridge 正在 运行的计算机 IP 地址。
通过以 "主机名:端口号" 格式指定,您还可以指定端口号。
(当没有指定端口号时,使用 443。)
如果不输入任何内容并按下回车键,将连接到端口号为 443 的本地主机 (这台电脑)。
目标 IP 地址的主机名:

输入localhost:5555

回车

1
2
3
如果通过虚拟 HUB 管理模式连接到服务器,请输入虚拟 HUB 的名称。
如果通过服务器管理模式连接,无须输入任何内容请按回车键。
指定虚拟 HUB 名称:

根据提示,可根据实际情况输入。一般直接回车,进入管理员控制台界面:

1
2
3
4
5
与服务器 "localhost" 的连接已建立 (端口 5555)。

您有整个 VPN Server 的管理员权限。

VPN Server>

首次进入直接回车即可。设置hub后这里输入hub名和密码可直接进入hub内,或直接回车进入管理员。

设置管理服务端登录密码

1
ServerPasswordSet

输入密码即可

输入help可以查看全部命令。

所有命令不区分大小写

创建hub

1
HubCreate

输入hub名称及密码,例如devops-hub

1
2
3
4
5
6
7
8
9
10
11
VPN Server>HubCreate
HubCreate 命令 - 创建新的虚拟 HUB
新创建的虚拟 HUB 的名字: devops-hub

请输入密码。要取消,请按下 Ctrl + D 键。

密码 : ***********
确认输入: ***********


命令成功完成。

选择hub

1
Hub devops-hub
1
2
3
4
VPN Server>Hub devops-hub
Hub 命令 - 选择拟管理的虚拟 HUB
选择虚拟 HUB "devops-hub"
命令成功完成。

创建用户

1
UserCreate

例如创建用户yhan219

1
2
3
4
5
6
7
8
9
10
11
VPN Server/devops-hub>UserCreate
UserCreate 命令 - 创建用户
用户名: yhan219

加入群组名称:

用户全名: yhan219

用户描述: yhan219

命令成功完成。

设置用户密码

1
UserPasswordSet 用户名

例如:

1
2
3
4
5
6
7
8
9
VPN Server/devops-hub>UserPasswordSet yhan219
UserPasswordSet 命令 - 将用户身份验证方法设置为密码验证,并设定密码
请输入密码。要取消,请按下 Ctrl + D 键。

密码 : ***
确认输入: ***


命令成功完成。

启用L2TP服务器功能

1
IPsecEnable

如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
VPN Server>IPsecEnable
IPsecEnable 命令 - 启用或禁用 IPsec VPN Server 功能
启用 L2TP over IPsec 服务器功能(yes / no): yes

启用原始 L2TP 服务器功能(yes / no): no

启用 EtherIP / L2TPv3 over IPsec服务器功能(yes / no): no

IPsec 的预共享密钥(推荐:最多 9 位)devops

为避免在用户名中遗漏 HUB,请默认虚拟 HUB 。devops-hub

命令成功完成。

如果忘了共享秘钥,可通过命令查看,如下:

1
2
3
4
5
6
7
8
9
VPN Server>IpSecGet
IPsecGet 命令 - 获得当前IPsec VPN Server 设置
项目 |价值
--------------------------------------------+----------
L2TP over IPsec 服务器功能已启用 |是
原始 L2TP 服务器功能已启用 | 否
EtherIP / L2TPv3 over IPsec 服务器功能已启用|否
IPsec 预共享密钥字符串 |devops
默认虚拟 HUB 名 |devops-hub

启用虚拟 NAT 和 DHCP 服务器功能 (安全网络功能,可选,不建议开启)

开启后会导致ping服务器(DUP!)

1
SecureNatEnable

启动安全网络功能的虚拟 DHCP 服务器功能

1
DhcpEnable

删除无用TCP监听端口

1
ListenerList

除了5555端口其他都删除

1
ListenerDelete
1
2
3
VPN Server>ListenerDelete
ListenerDelete 命令 - 删除 TCP 监听器
TCP/IP 侦听器端口号: 443

删除默认hub(可选)

1
HubList
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
VPN Server>hublist
HubList 命令 - 获取一个虚拟 HUB 列表
项目 |价值
------------+-------------------
虚拟 HUB 名 |DEFAULT
状态 |在线
类型 |独立
用户 |0
|0
会话 |0
MAC 表 |0
IP 表 |0
登录次数 |0
最后登录时间|2021-01-26 15:02:42
最后通信时间|2021-01-26 15:02:42
传输字节 |0
传输数据包 |0
------------+-------------------
虚拟 HUB 名 |devops-hub
状态 |在线
类型 |独立
用户 |1
|0
会话 |1
MAC 表 |1
IP 表 |1
登录次数 |0
最后登录时间|2021-01-27 12:44:21
最后通信时间|2021-01-27 12:51:02
传输字节 |12,192
传输数据包 |236
命令成功完成。
1
2
3
VPN Server>HubDelete DEFAULT
HubDelete 命令 - 删除虚拟 HUB
命令成功完成。

修改网段(可选)

如果发生IP冲突,可选择修改网段:

查看当前虚拟DHCP配置

1
DhcpGet
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
VPN Server/devops-hub>DhcpGet
DhcpGet 命令 - 获得安全网络功能的虚拟 DHCP 服务器功能的设置
项目 |价值
-------------------------+--------------
使用虚拟 DHCP 功能 |是
分发地址范围的开始 |192.168.30.10
分发地址范围的结束 |192.168.30.200
子网掩码 |255.255.255.0
租赁期限 (秒) |7200
默认网关地址 |192.168.30.1
DNS 服务器地址 1 |192.168.30.1
DNS 服务器地址 2 |无
域名 |
保存 NAT 和 DHCP 操作日志|是
静态路由表推送 |
命令成功完成。

修改虚拟DHCP

1
DhcpSet
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
VPN Server/devops-hub>DhcpSet
DhcpSet 命令 - 更改安全网络功能的虚拟 DHCP 服务器功能的设置
分发地址范围的开始: 192.168.29.10

分发地址范围的结束: 192.168.29.200

子网掩码: 255.255.255.0

租赁期限 (补): 7200

默认网关 (可以不设定): 192.168.29.1

DNS 服务器 1 (可以不设定): 192.168.29.1

DNS 服务器 2 (可以不设定):

域名:

保存日志 (yes/no): yes

命令成功完成。

所有192.168.30修改为192.168.29,其他不变。

查看SecureNatHost配置

1
SecureNatHostGet
1
2
3
4
5
6
7
8
VPN Server/devops-hub>SecureNatHostGet
SecureNatHostGet 命令 - 获取安全网络功能的虚拟主机的网络接口设置
项目 |价值
--------+-----------------
MAC 地址|5A-5A-5B-56-5F-59
IP 地址 |192.168.30.1
子网掩码|255.255.255.0
命令成功完成。

修改SecureNatHost

1
SecureNatHostSet
1
2
3
4
5
6
7
8
9
VPN Server/devops-hub>SecureNatHostSet
SecureNatHostSet 命令 - 更改安全网络功能的虚拟主机的网络接口设置
MAC 地址: 5A-5A-5B-56-5F-59

IP 地址: 192.168.29.1

子网掩码: 255.255.255.0

命令成功完成。

IP地址修改为上面的网关,其他不变

保存配置

1
Flush
1
2
3
4
5
VPN Server/devops-hub>Flush
Flush 命令 - 保存 VPN Server / Bridge 全部不稳定数据到配置文件。
从内存到磁盘写入不稳定数据...
保存成功。文件大小是 15,654 字节。
命令成功完成。

重启服务

1
Reboot

开放外网端口

需要在云服务器安全组或服务器开放5004500端口,协议为UDP

另外,如果需要用外网Management客户端配置,需要云服务器安全组规则中开放端口5555,协议为TCP。为了安全一般在配置完成后需要关闭,需要使用的时候,先连接VPN并用内网IP配置Management。

其他一些命令,例如用户有效期,删除用户,删除群组等,可根据help命令提示参考使用

客户端连接

对于win10,Mac,安卓等操作系统,无需下载客户端,用操作系统自带的VPN连接即可。其他操作系统或想使用客户端的,也可以自到下载链接中根据实际情况选择适合自己的操作系统下载。

以MacOS连接为例。

  • 系统偏好设置–网络–左下角加号+新增
  • 接口选择VPN,vpn类型选择L2TP/IPSec,服务名称随意填写。
  • 服务器地址填写VPN服务器公网ip,用户名填写刚才新增的用户名(yhan219)
  • 点击认证设置填写用户名密码和L2TP共享秘钥,连接即可。
  • 高级设置中勾选通过VPN发送所有流量
  • 应用–确认—连接即可。

在macOS上,如果能连接但是不能访问内网,查看下是否是服务器内网ip和本地内网ip的网段是相同,如果相同则会出现这个问题,修改任意一个的网段即可。

最后附上所有命令列表

1
help
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
您可以使用下面的 205 命令:
About - 显示版本信息
AcAdd - 添加规则到 IP 地址限制列表(IPv4)
AcAdd6 - 添加规则到源 IP 地址访问限制列表(IPv6)
AcDel - 源 IP 地址限制列表内的删除规则
AcList - 获取源 IP 地址访问限制列表的规则项目列表
AccessAdd - 添加规则到允许访问列表 (IPv4)
AccessAdd6 - 添加访问列表规则 (IPv6)
AccessAddEx - 添加扩展访问列表规则 (IPv4:延迟、时基误差/数据包丢失产生)
AccessAddEx6 - 添加扩展访问列表规则 (IPv6,生成延迟,时基误差/数据包丢失)
AccessDelete - 从访问列表中删除规则
AccessDisable - 禁用访问列表规则
AccessEnable - 启用访问列表规则功能
AccessList - 获取访问列表规则
AdminOptionList - 获取虚拟 HUB 管理选项列表
AdminOptionSet - 设置虚拟 HUB 管理选项的价值
BridgeCreate - 创建本地的网桥连接
BridgeDelete - 删除本地网桥连接
BridgeDeviceList - 获取可以在当地的网桥上使用的 LAN 卡一览
BridgeList - 获得当地网桥连接列表
CAAdd - 添加可以信任的机构颁发的证书
CADelete - 删除可以信任的机构颁发的证书
CAGet - 获得可信任机构颁发的证书。
CAList - 获取可以信任的机构颁发证书的列表
Caps - 获得服务器的功能性能一览表
CascadeAnonymousSet - 将级联连接的用户认证类型设置为匿名身份验证
CascadeCertGet - 获取级联连接所需的客户端证书
CascadeCertSet - 将级联连接时所需的用户验证设置为客户证书验证
CascadeCompressDisable - 级联通信是数据禁止压缩功能
CascadeCompressEnable - 启用级联通信是数据压缩功能
CascadeCreate - 创建一个新的级联接续
CascadeDelete - 删除级联连接
CascadeDetailSet - 级联通信的高级设置
CascadeEncryptDisable - 级联连接通信时,禁用加密
CascadeEncryptEnable - 启用级联通信时加密
CascadeGet - 获取级联连接的设置
CascadeList - 获取级联接续列表
CascadeOffline - 将级联设置为脱机状态
CascadeOnline - 设置级联接续的在线状态
CascadePasswordSet - 将级联连接时所需的用户验证设置为密码验证
CascadePolicySet - 设置级联连接的安全协议
CascadeProxyHttp - 将级联连接方法设定为通过 HTTP 代理服务器
CascadeProxyNone - 将级联的连接方法设置为直接与 TCP/IP 连接
CascadeProxySocks - 将级联连接方法设定为通过 SOCKS 代理服务器
CascadeRename - 更改级联的名称
CascadeServerCertDelete - 删除级联服务器固有的证书
CascadeServerCertDisable - 禁用级联服务器证书验证选项
CascadeServerCertEnable - 启用级联服务器证书验证选项
CascadeServerCertGet - 获取级联连接服务器的固有证书
CascadeServerCertSet - 设置级联连接的服务器特定证书
CascadeSet - 对级联连接方的设定
CascadeStatusGet - 获取级联的当前状态
CascadeUsernameSet - 设置级联连接的用户名
Check - 检测 SoftEther VPN 是否能正常运行
ClusterConnectionStatusGet - 获得群集控制器的连接状态的信息
ClusterMemberCertGet - 获得群集成员证书
ClusterMemberInfoGet - 会员信息的获取
ClusterMemberList - 获得群集成员名单
ClusterSettingController - 设置 VPN Server 类型为群集控制器
ClusterSettingGet - 获取当前 VPN Server 群集配置
ClusterSettingMember - VPN Server 类型设置为群集成员
ClusterSettingStandalone - 设置为独立的 VPN Server 类型
ConfigGet - 获取 VPN Server 当前系统配置
ConfigSet - 往 VPN Server 上写入系统配置内容
ConnectionDisconnect - 断开 VPN Server 和 TCP 的连接
ConnectionGet - 获取连接到 VPN Server 的 TCP 信息一览表
ConnectionList - 获取与 VPN Server 相连的 TCP 连接一览
Crash - 出现一个错误的 VPN Server / Bridge 强行终止该进程。
CrlAdd - 添加无效的证书
CrlDel - 删除无效的证书
CrlGet - 获取无效的证书
CrlList - 获取无效证书名单列表
Debug - 执行调试命令
DhcpDisable - 禁用安全网络功能的虚拟 DHCP 服务器功能
DhcpEnable - 启动安全网络功能的虚拟 DHCP 服务器功能
DhcpGet - 获得安全网络功能的虚拟 DHCP 服务器功能的设置
DhcpSet - 更改安全网络功能的虚拟 DHCP 服务器功能的设置
DhcpTable - 获取安全网络功能的虚拟 DHCP 服务器租约表格
DynamicDnsGetStatus - 显示动态 DNS 功能的当前状态
DynamicDnsSetHostname - 设置动态 DNS 主机名
EtherIpClientAdd - 添加新的 EtherIP / L2TPv3 over IPsec 客户端设置来接受 EtherIP / L2TPv3 客户端设备
EtherIpClientDelete - 删除一个 EtherIP / L2TPv3 over IPsec 客户端设置
EtherIpClientList - 获得当前 EtherIP / L2TPv3 客户端设备条目定义列表
ExtOptionList - 获取虚拟 HUB 扩展选项列表
ExtOptionSet - 设置虚拟 HUB 扩展选项的值
Flush - 保存 VPN Server / Bridge 全部不稳定数据到配置文件。
GroupCreate - 创建组
GroupDelete - 删除组
GroupGet - 获得组信息和所属用户列表
GroupJoin - 用户添加到组
GroupList - 获取组列表
GroupPolicyRemove - 删除组的安全策略
GroupPolicySet - 设置组的安全策略
GroupSet - 设置组信息
GroupUnjoin - 从组内删除用户
Hub - 选择拟管理的虚拟 HUB
HubCreate - 创建新的虚拟 HUB
HubCreateDynamic - 创建一个新的动态虚拟 HUB (集群)
HubCreateStatic - 新创建一个静态虚拟 HUB (集群用)
HubDelete - 删除虚拟 HUB
HubList - 获取一个虚拟 HUB 列表
HubSetDynamic - 将虚拟 HUB 的类型变为动态虚拟型
HubSetStatic - 将虚拟 HUB 的类型变为静态虚拟型
IPsecEnable - 启用或禁用 IPsec VPN Server 功能
IPsecGet - 获得当前IPsec VPN Server 设置
IpDelete - 删除 IP 地址表项
IpTable - 获取 IP 地址表数据库
KeepDisable - 禁用保持互联网连接功能
KeepEnable - 启动 Internet 保持连接功能
KeepGet - 获取保持互联网连接的功能
KeepSet - 设置 Internet 保持连接功能
LicenseAdd - 注册新的许可证密钥
LicenseDel - 删除已注册许可
LicenseList - 获得已注册许可证的列表
LicenseStatus - 获取目前的 VPN Server 状态
ListenerCreate - 创建新的 TCP 监听器
ListenerDelete - 删除 TCP 监听器
ListenerDisable - 停止 TCP 监听器运行
ListenerEnable - 开始 TCP 监听器运行
ListenerList - 获取 TCP 监听器列表
LogDisable - 禁用安全日志或数据包日志
LogEnable - 启用安全日志或数据包日志
LogFileGet - 日志文件下载
LogFileList - 获取日志文件列表
LogGet - 获取虚拟 HUB 日志的保存设定
LogPacketSaveType - 设置保存为数据包日志文件的数据包种类及保存。
LogSwitchSet - 设定替换日志文件的周期
MacDelete - 删除 MAC 地址表项
MacTable - 获取 MAC 地址表数据库
MakeCert - 创建新的 X.509 证书和密钥 (1024 位)
MakeCert2048 - 创建新的 X.509 证书和密钥 (2048 位)
NatDisable - 禁用安全网络功能的虚拟 NAT 功能
NatEnable - 启用安全网络功能的虚拟 NAT 功能
NatGet - 获得安全网络功能的虚拟 NAT 功能的设置
NatSet - 更改安全网络功能的虚拟 NAT 功能的设置
NatTable - 获得安全网络功能的虚拟 NAT 功能会话表
Offline - 虚拟 HUB 脱机
Online - 虚拟 HUB 的联机
OpenVpnEnable - 启用/禁用 OpenVPN 克隆服务器功能
OpenVpnGet - 获取 OpenVPN 克隆服务器功能的当前设置
OpenVpnMakeConfig - 生成 OpenVPN Client 样本设置文件
OptionsGet - 获得虚拟 HUB 的设置选项
PolicyList - 查看安全协议和可以设置的值得列表
RadiusServerDelete - 删除应用于用户认证的 RADIUS 服务器设置
RadiusServerGet - 获取用于用户认证的 RADIUS 服务器设置
RadiusServerSet - 使用在用户认证中使用的 RADIUS 服务器设置
Reboot - VPN Server 服务重新启动
RouterAdd - 定义一个新的虚拟 3 层交换机
RouterDelete - 删除虚拟 3 层交换机
RouterIfAdd - 在虚拟 3 层交换机上添加一个虚拟远程接口
RouterIfDel - 删除虚拟 3 层交换机的虚拟远程接口
RouterIfList - 获取在虚拟 3 层交换机中注册的远程接口的清单
RouterList - 获取虚拟 3 层交换机列表
RouterStart - 开始运行虚拟 3 层交换机
RouterStop - 停止虚拟 3 层交换机的运行
RouterTableAdd - 添加一个路由表项到虚拟 3 层交换机
RouterTableDel - 删除虚拟 3 层交换机的路由表项
RouterTableList - 获取虚拟 3 层交换机的路由列表
SecureNatDisable - 禁用虚拟 NAT 和 DHCP 服务器功能 (安全网络功能)
SecureNatEnable - 启用虚拟 NAT 和 DHCP 服务器功能 (安全网络功能)
SecureNatHostGet - 获取安全网络功能的虚拟主机的网络接口设置
SecureNatHostSet - 更改安全网络功能的虚拟主机的网络接口设置
SecureNatStatusGet - 获取虚拟 NAT 和 DHCP 服务器功能 (安全网络功能) 的工作状态
ServerCertGet - 获得 VPN Server 的 SSL 证书
ServerCertRegenerate - 生成一个新的带有指定 CN (Common Name) 的自签名证书,并且在 VPN Server 上注册。
ServerCertSet - VPN Server 的 SSL 证书和密钥的设置
ServerCipherGet - 获取 VPN 通信中使用的加密程序
ServerCipherSet - 设置 VPN 通讯中使用的加密程序,
ServerInfoGet - 获取服务器信息
ServerKeyGet - 获取 VPN Server SSL 证书的密钥
ServerPasswordSet - 设置 VPN Server 管理员密码
ServerStatusGet - 获取当前服务器状态
SessionDisconnect - 断开会话
SessionGet - 获取会话信息
SessionList - 获取连接会话的列表
SetEnumAllow - 设定虚拟 HUB 允许向匿名用户显示。
SetEnumDeny - 设定虚拟 HUB 禁止向匿名用户显示。
SetHubPassword - 设置虚拟 HUB 的管理密码
SetMaxSession - 设定虚拟 HUB 的最大同时在线用户数量
SstpEnable - 启用/禁用 Microsoft SSTP VPN 克隆服务器功能
SstpGet - 获得 Microsoft SSTP VPN 克隆服务器功能的当前设置
StatusGet - 获取虚拟 HUB 的当前状况
SyslogDisable - 禁用发送系统日志的功能
SyslogEnable - 设置发送系统日志功能
SyslogGet - 取得发送系统日志的功能
TrafficClient - 在用户模式下,运行网络流量速度测试工具
TrafficServer - 在服务器模式下,运行网络流量速度测试工具
UserAnonymousSet - 将用户身份验证方法设置为匿名验证
UserCertGet - 获取注册固有证书认证用户的证书
UserCertSet - 将用户身份验证方法设置为固有证书验证,并设定证书
UserCreate - 创建用户
UserDelete - 删除用户
UserExpiresSet - 设置用户的有效期限
UserGet - 获取用户信息
UserList - 获取用户列表
UserNTLMSet - 用户身份验证方法设置为 NT 域认证
UserPasswordSet - 将用户身份验证方法设置为密码验证,并设定密码
UserPolicyRemove - 删除用户的安全策略
UserPolicySet - 设置用户的安全策略
UserRadiusSet - 将用户的认证方法设定为半径认证
UserSet - 更改用户信息
UserSignedSet - 将用户身份验证方法设置为已签名证明书认证
VpnAzureGetStatus - 显示 VPN Azure 功能的当前状态
VpnAzureSetEnable - 启用/禁用 VPN Azure 功能
VpnOverIcmpDnsEnable - 启用/禁用 VPN over ICMP / VPN over DNS服务器功能
VpnOverIcmpDnsGet - 获取 VPN over ICMP / VPN over DNS 功能的当前设置

SoftEther使用命令行搭建VPN服务器

https://blog.yhan219.com/soft-ether-vpn/

作者

yhan219

发布于

2021-01-22

更新于

2021-01-22

许可协议