SoftEther VPN 使用

SoftEther VPN 官网手册

环境信息

  • Centos7 5.4.221
  • SoftEther VPN Server 4.41
  • iptables

SoftEther VPN Server 有两种模式,Service ModeUser Mode,本文档安装使用 Service Mode [1]

  • Service Mode - 安装之后以系统服务的形式存在(被管理)
  • User Mode - 安装之后不存在对应的服务,(管理员)用户直接通过进程管理,程序启动停止需要(管理员)用户手动停止相应进程

安装配置过程

安装

安装依赖包

yum -y install gcc zlib-devel openssl-devel readline-devel ncurses-devel

参考链接 下载最新的安装包,本文档使用版本 4.41 版本 [2]

wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.41-9782-beta/softether-vpnserver-v4.41-9782-beta-2022.11.17-linux-x64-64bit.tar.gz

tar -xf softether-vpnserver-v4.41-9782-beta-2022.11.17-linux-x64-64bit.tar.gz

cd vpnserver/

使用以下命令编译生成可执行文件

make

将编译后的目录移动到 /usr/local/ 下,并修改权限

cd ..
mv vpnserver /usr/local/

cd /usr/local/vpnserver/

chmod 600 *

chmod 700 vpncmd
chmod 700 vpnserver

使用 vpncmd check 命令检查 vpn server 是否可以正常运行。在 /usr/local/vpnserver/ 目录下执行 ./vpncmd,根据提示选择 3 (3. Use of VPN Tools (certificate creation and Network Traffic Speed Test Tool)), 然后执行 check 命令进行检查。

$ ./vpncmd
By using vpncmd program, the following can be achieved.

1. Management of VPN Server or VPN Bridge
2. Management of VPN Client
3. Use of VPN Tools (certificate creation and Network Traffic Speed Test Tool)

Select 1, 2 or 3: 3

VPN Tools>check
Check command - Check whether SoftEther VPN Operation is Possible
---------------------------------------------------
SoftEther VPN Operation Environment Check Tool

Copyright (c) SoftEther VPN Project.
All Rights Reserved.

If this operation environment check tool is run on a system and that system passes, it is most likely that SoftEther VPN software can operate on that system. This check may take a while. Please wait...

Checking 'Kernel System'...
Pass
Checking 'Memory Operation System'...
Pass
Checking 'ANSI / Unicode string processing system'...
Pass
Checking 'File system'...
Pass
Checking 'Thread processing system'...
Pass
Checking 'Network system'...
Pass

All checks passed. It is most likely that SoftEther VPN Server / Bridge can operate normally on this system.

The command completed successfully.

执行检查后输出 All checks passed. It is most likely that SoftEther VPN Server / Bridge can operate normally on this system. ,说明系统可正常满足 vpn server 运行的条件。

根据以下内容生成服务启动脚本,将 vpn server 以 service 的形式运行

/etc/init.d/softether-vpn-server
#!/bin/sh
# chkconfig: 2345 99 01
# description: SoftEther VPN Server
DAEMON=/usr/local/vpnserver/vpnserver
LOCK=/var/lock/subsys/vpnserver
test -x $DAEMON || exit 0
case "$1" in
start)
$DAEMON start
touch $LOCK
;;
stop)
$DAEMON stop
rm $LOCK
;;
restart)
$DAEMON stop
sleep 3
$DAEMON start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0

给服务脚本添加可执行权限,并配置开机启动,之后可以通过 systemctl 管理服务状态。

$ chmod 755 /etc/init.d/softether-vpn-server

$ systemctl daemon-reload

$ systemctl status softether-vpn-server
● softether-vpn-server.service - SYSV: SoftEther VPN Server
Loaded: loaded (/etc/rc.d/init.d/softether-vpn-server; bad; vendor preset: disabled)
Active: inactive (dead)
Docs: man:systemd-sysv-generator(8)

$ systemctl enable softether-vpn-server
softether-vpn-server.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig softether-vpn-server on

防火墙添加以下配置 [4]

/etc/sysconfig/iptables
-A INPUT -m comment --comment "vpn" -m multiport -p tcp --dports 443,1194,5555,992 -j ACCEPT
-A INPUT -m comment --comment "vpn" -m multiport -p udp --dports 4500,500 -j ACCEPT

启动服务

systemctl start softether-vpn-server

初始化配置

安装完 vpn server 之后,可以通过 SoftEther VPN Server Manager 管理 VPN Server。windows 上下载 SoftEther VPN Server Manager for Windows [5]

初次登陆后,建议设置管理员密码

默认情况下,只存在一个名为 DEFAULT 的 Virtual Hub 注册到了 VPN Server,可以使用此 Virtual Hub,或者删除它重新创建自己的 Virtual Hub。

根据提示选择要创建的的 VPN Server 的类型,普通 VPN 选择 Remote Access VPN Server

根据提示,配置要创建的 Virtual Hub 的名称,接着会弹出 Dynamic DNS Function 配置界面。Dynamic DNS Function 的功能,会提供一个 softether.net 域的子域名,通过这个域名,可以解析到 VPN Server 的 IP 地址,如果服务器使用的是动态 IP,此解析会跟着变化。如果服务器只有内网 IP(云主机),此解析会自动解析到公网 IP。

Dynamic DNS Function 配置完成后退出(exit),进入协议配置界面,此处启用所有协议(手机连接 VPN 需要)

创建 VPN 用户

回到管理界面后,选择刚刚创建的 Virtual Hub,点击 Manage Virtual Hub 按钮管理配置,选择 Virtual NAT and Virtual DHCP Server(SecureNAT),启用 SecureNAT,否则客户端可以连接到 VPN Server,但是 VPN Server 不会分配 IP 地址给客户端。

客户端连接

android 自带 VPN 客户端连接

打开手机 VPN 设置,添加 VPN 配置,主要配置以下项:

  • Type : L2TP/IPSec PSK
  • Server address : 填写 VPN 服务器 IP 或域名
  • IPSec pre-shared key : 填写协议配置界面中配置的 IPsec Pre-shared Key 对应的值,本文档中为vpn
  • Username : 填写 VPN 的用户名
  • Password : 填写 VPN 用户密码

ios 自带的 VPN 客户端连接

在 IOS 的 通用 –> VPN 与 设备管理 –> VPN 中添加 VPN 配置,主要配置以下项:

  • 类型L2TP
  • 服务器 : 填写 VPN 服务器 IP 或域名
  • 账户 : 填写 VPN 的用户名
  • 密码 : 填写 VPN 用户密码
  • 密钥 : 填写协议配置界面中配置的 IPsec Pre-shared Key 对应的值,本文档中为vpn

常见错误

VPN Client 可以连接到 VPN Server,但是 client 的出口 IP 未变

问题现象

windows 使用 VPN Client 可以正常连接到 VPN Server,但是检查客户端系统的出口 IP,不是 VPN Server 的 IP。检查客户端系统的 IP 地址信息

$ ipconfig /all
未知适配器 VPN - VPN Client:

连接特定的 DNS 后缀 . . . . . . . :
描述. . . . . . . . . . . . . . . : VPN Client Adapter - VPN
物理地址. . . . . . . . . . . . . : 5E-7F-99-71-74-AF
DHCP 已启用 . . . . . . . . . . . : 是
自动配置已启用. . . . . . . . . . : 是
本地链接 IPv6 地址. . . . . . . . : fe80::7674:9039:eaca:5976%52(首选)
自动配置 IPv4 地址 . . . . . . . : 169.254.160.75(首选)
子网掩码 . . . . . . . . . . . . : 255.255.0.0
默认网关. . . . . . . . . . . . . :
DHCPv6 IAID . . . . . . . . . . . : 878608281
DHCPv6 客户端 DUID . . . . . . . : 00-01-00-01-29-5D-CA-62-F4-39-09-4B-1C-6A
DNS 服务器 . . . . . . . . . . . : fec0:0:0:ffff::1%1
fec0:0:0:ffff::2%1
fec0:0:0:ffff::3%1
TCPIP 上的 NetBIOS . . . . . . . : 已启用

VPN 适配器的 IP 地址为 169.254.160.75,说明客户端未获取 VPN 相应的 IP 地址。检查 VPN Server 配置的 Virtual NAT and Virtual DHCP Server(SecureNAT) 部分,看是否启用了 SecureNAT。启用后重新连接,查看 Windows 系统 IP 地址,看到已经正常分配到 VPN 的 IP,测试公网,变成了 VPN Server 的 IP。

脚注