Skip to content

SoftEtherVPN

概述

介绍

SoftEtherVPN是开源跨平台,多重协议的虚拟专用网方案,是openvpn最佳替代方案,比openvpn要快,其L2TP VPN与windows、mac、ios和android高度兼容。SoftEtherVPN本身还具有ssl-vpn协议,可以穿透任何类型的防火墙。

特点

安装包部署

前提条件

使用softethervpn构建虚拟局域网时需要具备如下条件:

  • softethervpn节点必须对公网的映射ip;
  • softethervpn节点能和内网server互通;

使用L2TP/IPSec方式实现内部局域网通信

An image

环境依赖

名称环境版本备注
操作系统(服务端)Ubuntu20.04
操作系统(客户端)Windows10
服务端SoftEther VPN ServerVer 4.39, Build 9772, beta
管理端SoftEther VPN ManagerVer 4.39, Build 9772, beta配置SoftEther VPN界面
客户端Windows VPNWindows自带VPN

环境搭建

下载安装包

前往SoftEther 下载中心下载服务端管理端

sh
wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.39-9772-beta/softether-vpnserver-v4.39-9772-beta-2022.04.26-linux-x64-64bit.tar.gz

安装服务端

sh
# 安装依赖
sudo apt install make gcc

# 解压安装包
tar -zxvf softether-vpnserver-v4.39-9772-beta-2022.04.26-linux-x64-64bit.tar.gz 

# 编译
cd vpnserver/
make

# 输出
The preparation of SoftEther VPN Server is completed !

注意:ubuntu系统必须使用root权限操作上述步骤,否则会因权限不足导致端口无法开放!!!

启动服务端

sh
# 启动
./vpnserver start

# 输出
The SoftEther VPN Server service has been started.

Let's get started by accessing to the following URL from your PC:

https://10.0.0.121:5555/
  or
https://10.0.0.121/

Note: IP address may vary. Specify your server's IP address.
A TLS certificate warning will appear because the server uses self signed certificate by default. That is natural. Continue with ignoring the TLS warning.

配置systemd管理

如Linux服务端上没有安装 systemd,可以使用 yumapt 等命令安装 systemd

sh
# yum
yum install systemd
# apt
apt install systemd

使用文本编辑器,如 vim 创建并编辑 vpnserver.service 文件。

sh
vim /etc/systemd/system/vpnserver.service

写入内容

ini
[Unit]
# 服务的描述
Description=VpnServer
# 服务依赖—在什么服务之后启动,一般为在网络服务启动后启动
After=network.target

[Service]
# 服务类型—如果是shell脚本的方式,则Type=forking,否则不指定作何值(也就是去掉该配置项)
Type=forking

# 启动命令
ExecStart=/usr/local/vpnserver/vpnserver start
# 停止命令
ExecStop=/usr/local/vpnserver/vpnserver stop

[Install]
WantedBy=multi-user.target

使用 systemd 命令,管理 vpnserver

sh
# 启动frp
systemctl start vpnserver
# 停止frp
systemctl stop vpnserver
# 重启frp
systemctl restart vpnserver
# 查看frp状态
systemctl status vpnserver
# 开机启动
systemctl enable vpnserver

连接服务端

在windows系统中,启动管理端

An image

首次连接无需输入密码,点击连接会提示设置新密码

An image

进入简单安装界面,勾选远程访问 VPN Server 并创建一个虚拟HUB,名称随意

An image

动态 DNS 功能,保持不变

An image

启用 L2TP 服务器功能,并设置 IPsec 预共享密钥(尽可能复杂,客户端连接时会使用到)

An image

禁用 VPN Azure 服务

An image

创建新用户,设置用户名和密码

An image

启用 SecureNAT 功能,暂时默认配置即可,后续会提供优化方案

An image

客户端连接

填写服务器名称或地址(自定义),VPN类型选择L2TP/IPsec,预共享密钥、用户名和密码需填写正确

An image

连接成功

An image

Docker部署

前提条件

使用softethervpn构建虚拟局域网时需要具备如下条件:

  • softethervpn节点必须对公网的映射ip;
  • softethervpn节点能和内网server互通;

使用L2TP/IPSec方式实现内部局域网通信

An image

环境依赖

名称环境版本备注
操作系统(服务端)Ubuntu20.04
操作系统(客户端)Windows10
服务端SoftEther VPN ServerVer 4.39, Build 9772, beta
管理端SoftEther VPN ManagerVer 4.39, Build 9772, beta配置SoftEther VPN界面
客户端Windows VPNWindows自带VPN
容器Dockerversion 24.0.5, build ced0996
容器编排Docker-composeversion 1.29.2, build 5becea4c

环境搭建

dockerhub:siomiz/softethervpn

生成服务配置文件

sh
# 创建数据目录
mkdir -p softethervpn/data/{server_log,packet_log,security_log} && cd softethervpn/

# 生成用户账户配置文件;
sudo docker pull siomiz/softethervpn:4.39
sudo docker run --rm siomiz/softethervpn:4.39 gencert > softethervpn_env

# 配置服务参数
# sudo vim softethervpn_env
TZ=Asia/Shanghai   # 设置时区
PSK=vpn  # 预共享密钥,设置复杂一点就好
SPW=test # 管理端密码
USERS=user1:admin@123;user2:admin@456 # 账户:密码,多个账号用";"隔开即可

构建compose文件

sh
# 添加compose文件
cat > docker-compose.yml <<eof
version: "3.9"
services:
  vpn:
    image: "siomiz/softethervpn:4.39"
    container_name: softethervpn
    privileged: true
    cap_add:
      - NET_ADMIN
    volumes:
      - "./data/server_log:/usr/vpnserver/server_log"
      - "./data/packet_log:/usr/vpnserver/packet_log"
      - "./data/security_log:/usr/vpnserver/security_log"
      - /etc/localtime:/etc/localtime
    env_file:
      - "./softethervpn_env"
    ports:
      # 公网放行vpn节点的500、1701、4500三个端口的udp协议策略;
      - 5555:5555/tcp
      - 500:500/udp
      - 4500:4500/udp
      - 1701:1701/udp
eof

# 启动服务
docker compose up -d