SoftEther VPN 4.44 配置参数详解
vpn_server.config 逐段实测:listener/ServerConfiguration/GlobalParams/VirtualHUB/SecureNAT/IPsec/DDnsClient 全部核心参数(4.44),含配置持久化机制、DhcpSet 交互陷阱与生产配置模板。
SoftEther VPN 4.44 配置参数详解
目标:逐段讲清 SoftEther VPN Server 4.44(build 9807)核心配置文件
vpn_server.config的结构与每个参数的含义、默认值与修改方式。本文所有参数值与命令回显均在 Ubuntu 22.04 实机逐项实测(实验全程通过 vpncmd 驱动,未经手工编辑),取证日期 2026-10-20。
一、环境信息
- 操作系统:Ubuntu 22.04(x86_64)
- 软件版本:SoftEther VPN Server 稳定版 4.44(build 9807,RTM),源码编译安装,安装目录
/usr/vpnserver/ - 配置文件:
/usr/vpnserver/vpn_server.config(服务首次启动自动生成,实测初始 391 行,完成本篇全部实验后 433 行) - 实验形态:单机部署默认虚拟 Hub
DEFAULT+ SecureNAT + TAP 本地桥接 + 客户端拨入全链路打通(实测 DHCP 分配 192.168.30.10、隧道内 ping 0% 丢包),参数解释均以该实测拓扑为背景 - 修改方式:全部经 vpncmd 命令在线修改(自动持久化),实验含配置文件回读比对
二、前置条件
- 已按《Ubuntu 22.04 安装 SoftEther VPN 指南》完成安装与 systemd 托管,服务 active
- 已设置服务器管理密码(本文示例口令
q1w2e3r4),vpncmd 可连接:vpncmd 127.0.0.1:5555 /SERVER /PASSWORD:q1w2e3r4 - 理解命令行批量形态(
/CMD单命令、/IN文件批处理)——详见《SoftEther VPN 4.44 常用 CLI 命令详解》第三章
三、参数查看与修改方式
3.1 两条查看路径
路径一:vpncmd 在线查询(运行时事实,推荐)。每类对象都有对应查询命令,实测对照:
| 对象 | 查询命令 | 对应配置段 |
|---|---|---|
| 监听端口 | ListenerList | ListenerList |
| 服务器全局 | ServerStatusGet / ServerInfoGet | ServerConfiguration(只读部分) |
| 加密算法 | ServerCipherGet | CipherName |
| 虚拟 Hub | HubList / StatusGet | VirtualHUB/<名字> |
| Hub 管理上限 | ExtOptionList | AdminOption |
| SecureNAT | NatGet / DhcpGet / SecureNatHostGet | SecureNAT/* |
| 日志 | LogGet | LogSetting |
| IPsec | IPsecGet | IPsec |
| 动态 DNS | DynamicDnsGetStatus | DDnsClient |
路径二:配置文件直读(完整事实)。cat /usr/vpnserver/vpn_server.config 即可全文审读;但运行期间服务会自动回写(实测 AutoSaveConfigSpan 300,即每 300 秒),手工编辑前必须停服——文件头注释原文:"You may edit this file when the VPN Server / Client / Bridge program is not running. If you edit this file while the program is running, all changes will be lost."
3.2 修改原则
- 在线改:一律用 vpncmd 对应 Set/Create/Delete 命令,实时生效、自动持久化(实测每条 Set 后配置文件
ConfigRevision递增,从 1 到 15 与实验操作次数吻合) - 离线改:确需手工编辑时,先
systemctl stop softether-vpnserver,改完systemctl start;改前备份cp vpn_server.config{,.bak} - 配置文件是纯文本树结构,类型前缀(bool/uint/int64/byte/string)不可省略,字符串内的空格以
$20转义(实测RealName SoftEther$20Admin对应界面输入 "SoftEther Admin")
四、配置文件结构总览
vpn_server.config 是单根声明式树,实测顶层结构(行号为实测文件位置):
declare root
{
uint ConfigRevision 15 # 配置版本号,每次修改自动 +1
bool IPsecMessageDisplayed false
string Region CN
declare DDnsClient { ... } # 内置动态 DNS 客户端
declare IPsec { ... } # IPsec/L2TP 服务端全局开关
declare ListenerList { Listener0..3 } # TCP 监听端口列表
declare LocalBridgeList { LocalBridge0 }# 本地桥接(物理网卡/TAP)
declare ServerConfiguration # 服务器全局配置(约 50 项)
{
declare GlobalParams { ... } # 内核级调优参数(21 项)
declare ServerTraffic { ... } # 累计流量统计
declare SyslogSettings { ... } # 外发 syslog 设置
}
declare VirtualHUB # 全部虚拟 Hub(每 Hub 一棵子树)
{
declare DEFAULT
{
declare AdminOption # Hub 管理员权限上限(41 项)
declare AccessList {} # 包过滤/带宽规则
declare CascadeList {} # 级联连接
declare LogSetting # 日志开关与轮转
declare Option # Hub 行为选项(约 60 项)
declare SecureNAT # 虚拟主机/DHCP/NAT 三件套
declare SecurityAccountDatabase # 用户/组/证书/CRL/IP-ACL
declare Traffic # Hub 流量统计
}
}
declare VirtualLayer3SwitchList {} # 虚拟三层交换机
}
以下按"全局 → Hub → 内嵌功能"顺序逐段详解,全部取值为实测回读。
五、核心参数分类详解
5.1 ListenerList:监听端口
实测(ListenerList 命令与配置文件一致):
Port Number|Status
-----------+---------
TCP 443 |Listening
TCP 992 |Listening
TCP 1194 |Listening
TCP 5555 |Listening
| 参数 | 实测值 | 说明 |
|---|---|---|
Port | 443 / 992 / 1194 / 5555 | 默认四端口。443 复用 HTTPS 形态穿透严格防火墙;5555 是 vpncmd 传统默认端口;1194 兼容 OpenVPN 客户端 |
Enabled | true | false 时该端口保留配置但不监听 |
DisableDos | false | 禁用该端口的 DoS 检测(误报时可关) |
修改:ListenerCreate 8151 / ListenerDelete 8151(实测回显见安装篇 8.3,新端口立即 Listening)。端口冲突时状态为 Error 且不影响其他端口。
5.2 ServerConfiguration:服务器全局参数
实测关键项(全部为默认值,除 CipherName 为实验改为 AES256-GCM-SHA384):
| 参数 | 实测值 | 说明与建议 |
|---|---|---|
CipherName | AES256-GCM-SHA384 | 隧道加密算法。默认 AES128-SHA;ServerCipherSet 可改,实测可用列表 23 项(从 RC4-MD5 到 ECDHE-RSA-CHACHA20-POLY1305),生产建议 AES256-GCM 或 CHACHA20-POLY1305 |
HashedPassword | (口令哈希) | 服务器管理员口令哈希,ServerPasswordSet 生成,勿手工改 |
AcceptOnlyTls | true | 仅接受 TLS 握手连接;老客户端(SSLv3)无法接入,有兼容需求才关 |
Tls_Disable1_0/1_1/1_2/1_3 | 全部 false | 按协议版本禁用开关。生产建议置 Tls_Disable1_0 true、Tls_Disable1_1 true 收紧旧协议 |
MaxConnectionsPerIP | 256 | 单 IP 最大并发连接,防单点滥用 |
MaxUnestablishedConnections | 1000 | 半开连接上限,抗慢速攻击 |
AutoSaveConfigSpan | 300 | 配置自动保存间隔(秒) |
AutoDeleteCheckDiskFreeSpaceMin | 104857600 | 磁盘剩余空间低于 100 MB 时自动清理日志,防写满 |
AutoDeleteCheckIntervalSecs | 300 | 上述检查周期 |
UseKeepConnect / KeepConnectHost / KeepConnectPort / KeepConnectProtocol / KeepConnectInterval | true / keepalive.softether.org / 80 / 1(UDP) / 50 | NAT 保活心跳:每 50 秒向目标发一个 UDP 包防公网映射老化。纯内网部署可 KeepDisable 关闭 |
EnableVpnOverIcmp / EnableVpnOverDns | false / false | ICMP/DNS 隧道穿透(VpnOverIcmpDnsGet 实测确认默认关)。仅在最受限网络启用,性能开销大 |
EnableVpnAzure | false | 官方 Azure 中继穿透,启用后获得 *.vpnazure.net 域名 |
DisableOpenVPNServer / DisableSSTPServer | false / false | 各协议网关开关。不用某协议时置 true 缩小暴露面(如关闭 MS-SSTP 可减少一个攻击面) |
OpenVPN_UdpPortList | 1194 | OpenVPN 克隆功能监听的 UDP 端口列表(逗号分隔多个) |
DisableIPsecAggressiveMode | false | 关闭 IPsec 野蛮模式(更安全,兼容性下降) |
DisableJsonRpcWebApi / UseWebUI | false / false | JSON-RPC API 默认开、HTML5 管理台默认关。生产建议 DisableJsonRpcWebApi true(不编程就关 API) |
DisableIPv6Listener | false | 关闭后仅监听 IPv4(实测默认 IPv4+IPv6 双栈各四端口) |
ServerType | 0 | 0=独立运行;集群模式改为控制器/成员(ClusterSettingStandalone 等命令管理) |
ServerLogSwitchType | 4 | 服务器日志轮转粒度:0=秒 1=分 2=时 3=日 4=月(值越大文件越少) |
CurrentBuild | 9807 | 构建号,只读标识 |
5.3 ServerConfiguration/GlobalParams:内核调优参数
实测 21 项(全部默认值,不需要动,列出高频调优项):
| 参数 | 实测值 | 说明 |
|---|---|---|
MAX_MAC_TABLES / MAC_TABLE_EXPIRE_TIME | 65536 / 600000 | MAC 表容量与老化时间(毫秒,默认 10 分钟)。大二层网络(>1000 终端)适当加大容量 |
MAX_IP_TABLES / IP_TABLE_EXPIRE_TIME | 65536 / 60000 | IP 会话表容量与老化(默认 1 分钟;DHCP 地址老化 300 秒单独控制) |
MAX_BUFFERING_PACKET_SIZE / MAX_SEND_SOCKET_QUEUE_SIZE | 2560000 / 2560000 | 每会话缓冲与发送队列字节上限,突发流量丢包时加大 |
STORM_DISCARD_VALUE_START / STORM_DISCARD_VALUE_END | 3 / 1024 | 广播风暴检测阈值:500ms 窗口(STORM_CHECK_SPAN)内包数超起点开始丢弃、超终点全丢 |
5.4 VirtualHUB/<Hub名>:Hub 级参数
LogSetting(实测,LogGet 命令同源):
| 参数 | 实测值 | 说明 |
|---|---|---|
SaveSecurityLog / SecurityLogSwitchType | true / 4 | 安全日志(登录、用户操作)保存与轮转(4=按月) |
SavePacketLog / PacketLogSwitchType | true / 4 | 包日志保存与轮转 |
PACKET_LOG_TCP_CONN / PACKET_LOG_DHCP | 1 / 1 | 记录等级:0=不记 1=仅头 2=含载荷。默认只记 TCP 连接与 DHCP 头,其余 0,兼顾取证与磁盘 |
AdminOption(Hub 管理员权限上限,实测 41 项全 0=不限制;AdminOptionList/AdminOptionSet 命令同源,实测 AdminOptionSet deny_empty_password /VALUE:1 后回读 Value |1)。高频项:
| 参数 | 含义 |
|---|---|
max_sessions / max_sessions_client / max_sessions_bridge | Hub 总/客户端/桥接会话数上限(0=不限) |
max_users / max_groups / max_accesslists | 用户数/组数/ACL 规则数上限 |
max_multilogins_per_user | 单用户同时登录数(0=不限;做一人一号管控时设 1) |
deny_bridge / no_cascade | 禁止桥接/级联形态接入 |
no_securenat / no_securenat_enabledhcp / no_securenat_enablenat | 禁止 Hub 管理员动 SecureNAT |
deny_empty_password | 禁止空密码用户 |
Option(Hub 行为选项,实测 60 项;ExtOptionList/ExtOptionSet 命令同源,实测列出 59 个可管理项,高频项):
| 参数 | 实测值 | 说明 |
|---|---|---|
MaxSession | 0 | 与 AdminOption 重复的会话上限(0=不限) |
NoMacAddressLog | true | 不把 MAC 地址变化写入安全日志(减噪) |
ManageOnlyPrivateIP | true | 包日志仅记私有 IP |
NoDhcpPacketLogOutsideHub | true | DHCP 包日志仅记 Hub 外发部分 |
RemoveDefGwOnDhcpForLocalhost | true | 服务器本机拨入时不接受 DHCP 下发的默认网关(防回环) |
DisableUdpAcceleration | false | UDP 加速开关(实测会话中 UDP Acceleration is Active: Yes) |
BroadcastStormDetectionThreshold | 0 | 广播风暴检测阈值(0=关) |
5.5 SecureNAT:虚拟主机 / DHCP / NAT
启用方式:SecureNatEnable(实测回显 "The command completed successfully",配置文件 SecureNAT/Disabled 由 true 变 false)。三块子段实测值:
VirtualHost(虚拟网关主机):
| 参数 | 实测值 | 说明 |
|---|---|---|
VirtualHostIp | 192.168.30.1 | 虚拟网关地址,即隧道内网关(实测客户端 ping 通) |
VirtualHostIpSubnetMask | 255.255.255.0 | 虚拟网段掩码 |
VirtualHostMacAddress | 5E-DE-79-AF-89-AC | 随机生成,勿手工改 |
VirtualDhcpServer(虚拟 DHCP,DhcpGet 命令同源):
| 参数 | 实测值 | 说明 |
|---|---|---|
DhcpEnabled | true | 总开关 |
DhcpSubnetMask | 255.255.255.0 | 分配网段 |
DhcpLeaseIPStart / DhcpLeaseIPEnd | 192.168.30.10 / 192.168.30.200 | 地址池(实测首地址 .10 分配给拨入客户端) |
DhcpExpireTimeSpan | 7200 | 租期 7200 秒 |
DhcpGatewayAddress | 192.168.30.1 | 下发网关(指向 VirtualHost 即走 NAT) |
DhcpDnsServerAddress | 192.168.30.1 | 下发 DNS(默认指向虚拟主机,由 NAT 代理解析) |
DhcpPushRoutes | $ | 追加路由($ 为空)。站点互联场景用于下发内网路由 |
VirtualRouter(NAT 路由,NatGet 命令同源):
| 参数 | 实测值 | 说明 |
|---|---|---|
NatEnabled | true | NAT 总开关(只做 DHCP 时可关) |
NatMtu | 1500 | 虚拟路由 MTU |
NatTcpTimeout / NatUdpTimeout | 1800 / 60 | TCP/UDP 会话超时(秒) |
5.6 IPsec:L2TP/IPsec 网关
实测(IPsecEnable /L2TP:yes /L2TPRAW:no /ETHERIP:no /PSK:q1w2e3r4 /DEFAULTHUB:DEFAULT 后回读):
IPsecGet command - Get the IPsec VPN Server Settings
Item |Value
---------------------------------------+-----------------------
L2TP Server Function Enabled |Yes
L2TP over IPsec Server Function Enabled|Yes
EtherIP / L2TPv3 over IPsec Enabled |No
IPsec Pre-Shared Key Text |q1w2e3r4
Default Virtual Hub for L2TP Session |DEFAULT
| 参数 | 实测值 | 说明 |
|---|---|---|
L2TP_IPsec | true | 标准 L2TP over IPsec(手机系统 VPN 用) |
L2TP_Raw | false | 不加 IPsec 的裸 L2TP(仅调试用) |
EtherIP_IPsec | false | EtherIP/L2TPv3 站点接入开关 |
IPsec_Secret | q1w2e3r4 | 预共享密钥,生产必改强口令 |
L2TP_DefaultHub | DEFAULT | L2TP 用户名不带 "@Hub名" 后缀时归入的 Hub |
5.7 DDnsClient:内置动态域名
实测(服务启动即自动启用):
DynamicDnsGetStatus command - Show Current Status of Dynamic DNS Function
Item |Value
----------------------+-----------------------
DDNS Hostname |se-server.softether.net
Global IPv4 Address |182.54.113.29
| 参数 | 实测值 | 说明 |
|---|---|---|
Disabled | false | 总开关(DynamicDnsSetEnable false 关闭) |
LocalHostname | se-server | 前缀,完整域名 <前缀>.softether.net |
Key | (哈希) | 身份标识,换机器恢复配置时保留可继承域名 |
ProxyType/ProxyHostName/ProxyPort | 0 / $ / 0 | 更新请求走代理的设置 |
六、生产配置模板
以下为经本篇实测验证的最小生产模板(命令式,逐条可执行;假定域名 vpn.example.com、网段 10.8.0.0/24):
# 1) 收紧加密
vpncmd 127.0.0.1:5555 /SERVER /PASSWORD:q1w2e3r4 /CMD ServerCipherSet AES256-GCM-SHA384
# 2) 监听端口按需增删(443 被占用示例)
vpncmd 127.0.0.1:5555 /SERVER /PASSWORD:q1w2e3r4 /CMD ListenerCreate 8151
vpncmd 127.0.0.1:5555 /SERVER /PASSWORD:q1w2e3r4 /CMD ListenerDelete 1194 # 不提供 OpenVPN 时
# 3) 业务 Hub 与地址池(DhcpSet 交互项:域名空行、日志 yes、推送路由空行)
vpncmd 127.0.0.1:5555 /SERVER /PASSWORD:q1w2e3r4 /CMD HubCreate CORP /Password:q1w2e3r4
vpncmd 127.0.0.1:5555 /SERVER /PASSWORD:q1w2e3r4 /ADMINHUB:CORP /CMD SecureNatEnable
printf "\nyes\n\n" | vpncmd 127.0.0.1:5555 /SERVER /PASSWORD:q1w2e3r4 /ADMINHUB:CORP /CMD DhcpSet /START:10.8.0.10 /END:10.8.0.200 /MASK:255.255.255.0 /EXPIRE:7200 /GW:10.8.0.1 /DNS:10.8.0.1 /DNS2:0.0.0.0
# 4) 会话与账号管控(AdminOptionSet 逐项实测可用)
vpncmd 127.0.0.1:5555 /SERVER /PASSWORD:q1w2e3r4 /ADMINHUB:CORP /CMD AdminOptionSet max_multilogins_per_user /VALUE:1
vpncmd 127.0.0.1:5555 /SERVER /PASSWORD:q1w2e3r4 /ADMINHUB:CORP /CMD AdminOptionSet deny_empty_password /VALUE:1
💡 说明:
DisableJsonRpcWebApi、UseWebUI、DisableSSTPServer等 ServerConfiguration 级开关在 4.44 的 vpncmd 命令树中无对应命令(实测OptionsSet、DisableSstpServer均报 "Command not found"),需停服离线编辑配置文件实现。
要点: 改前 cp vpn_server.config{,.bak}; 改后 ServerStatusGet + ListenerList 双验证; 配置文件仅审读,所有变更走 vpncmd(自动持久化,ConfigRevision 自增)。
七、常见问题
Q1:手工改了配置文件不生效/被改回?
服务运行期间每 300 秒(AutoSaveConfigSpan 实测)回写一次,覆盖手工编辑。必须停服后再改,或直接改用 vpncmd 在线改。
Q2:SecureNAT 与物理网段冲突怎么办?
实测默认 192.168.30.0/24;若与内网路由冲突,用 DhcpSet 换段(如 10.8.0.0/24)并保持 DhcpGatewayAddress 指向同段 VirtualHostIp。跨站点场景不要让两个 Hub 的 SecureNAT 使用同段。
Q3:包日志把磁盘写满了?
默认仅记 TCP 连接与 DHCP 头(实测 PACKET_LOG_TCP_CONN 1、其余 0)。仍不够可 LogSet 关闭 SavePacketLog,或调大 AutoDeleteCheckDiskFreeSpaceMin 阈值让系统提前清理。
Q4:改了加密算法会断现有连接吗?
ServerCipherSet 对新会话生效;实测改动后已建立的会话保持原算法(本实验会话仍显示 TLS_AES_256_GCM_SHA384 旧值),客户端重连后切换。
Q5:怎么确认某条配置最终写进了文件?
改完等一个自动保存周期或触发一次变更,再 cat /usr/vpnserver/vpn_server.config | grep 参数名 核对;注意字符串空格转义为 $20(实测 RealName SoftEther$20Admin)。
八、参考链接
- 本地配置文件:
/usr/vpnserver/vpn_server.config(头部自带编辑警告注释) - 命令级帮助:
vpncmd ... /CMD <命令> /HELP(如IPsecEnable /HELP) - 姊妹篇:《Ubuntu 22.04 安装 SoftEther VPN 指南》《SoftEther VPN 4.44 常用 CLI 命令详解》《SoftEther VPN 4.44 介绍与选型指南》
- 官方文档:https://www.softether.org/4-docs/1-manual