apt install gcc make
https://www.softether-download.com/cn.aspx?product=softether 获取最新版下载链接
wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.44-9807-rtm/softether-vpnclient-v4.44-9807-rtm-2025.04.16-linux-x64-64bit.tar.gz
tar -zxvf softether-vpnclien
按table填充
cd vpnclient & make
./vpnclient start
./vpncmd
进入控制端 打开远程控制客户端 并 设置远程密码,重启软件生效
RemoteEnable
PasswordSet
./vpnclient stop && ./vpnclient start
windows下打开客户端远程连接 输入内网ip,默认防火墙关着的 连不上注意防火墙
创建网卡 默认名vpn
创建连接 名称用英文数字 不要用中文,设置好配置
返回服务器ssh 先查看网卡名,比如我的
ens192 是外网
ens224 是内网 准备共享给其他电脑的网关
vpn_vpn 是刚创建的vpn虚拟适配器
修改网卡配置
ls /etc/netplan
查看默认配置名是啥,比如我这个是 50-cloud-init.yaml
vi /etc/netplan/50-cloud-init.yaml
在ethernets:下添加
vpn_vpn: dhcp4: true
外网网卡中添加服务器ip 走外网网卡,有多个服务器 就把服务器ip都写上 复制多个-to..
ens192:
dhcp4: true
routes:
- to: 106.12.80.3/32 # 目标IP(/32表示单IP)
via: 192.168.50.1 # 网关
metric: 1
内网网卡设置:
ens224: # 网卡名称
dhcp4: no # 关闭IPv4 DHCP
addresses: [192.168.220.1/24]
最终见图:
保存 esc wq,然后使其生效
sudo netplan apply
打开转发:
sudo vi /etc/sysctl.conf
# 取消注释或添加:
net.ipv4.ip_forward=1
sudo sysctl -p # 生效配置
添加转发规则:
# 1. 清除旧规则(避免冲突)
sudo iptables -F
sudo iptables -t nat -F
# 2. 允许内网流量(ens224)转发到VPN接口(vpn_vpn)
sudo iptables -A FORWARD -i ens224 -o vpn_vpn -j ACCEPT
# 3. 允许VPN接口的回应流量返回内网
sudo iptables -A FORWARD -i vpn_vpn -o ens224 -m state --state RELATED,ESTABLISHED -j ACCEPT
# 4. 对来自内网的流量做NAT伪装(关键:让内网流量以VPN接口IP对外通信)
sudo iptables -t nat -A POSTROUTING -s 192.168.220.0/24 -o vpn_vpn -j MASQUERADE
长久保存规则:
sudo apt install iptables-persistent # 安装持久化工具
sudo netfilter-persistent save # 保存规则
安装 dhcpcd 工具(管理 DHCP 路由优先级)
sudo apt install dhcpcd5
sudo vi /etc/dhcpcd.conf
# 为vpn_vpn接口设置低metric(高优先级)
interface vpn_vpn metric 50
# 为ens192接口设置高metric(低优先级)
interface ens192
metric 200
# 重启dhcpcd服务
sudo systemctl restart dhcpcd
设置开机自启
sudo vi /etc/systemd/system/vpnclient.service
[Unit]
Description=SoftEther VPN Client Service
After=network.target # 网络启动后再启动VPN服务
[Service]
Type=forking
ExecStart=/root/vpnclient/vpnclient start # 启动VPN客户端
ExecStop=/root/vpnclient/vpnclient stop # 停止VPN客户端
Restart=always # 服务意外停止时自动重启
User=root # 需root权限运行
[Install]
WantedBy=multi-user.target # 多用户模式下自启
保存并退出,然后重新加载系统服务配置:
sudo systemctl daemon-reload
# 启动服务
sudo systemctl start vpnclient
# 设置开机自启
sudo systemctlenable vpnclient
# 验证自启状态(输出中包含"enabled")
sudo systemctl is-enabled vpnclient
配置 VPN 账户自动连接,
sudovi /root/vpnclient/auto-connect.sh
#!/bin/bash # 等待VPN客户端服务完全启动(避免连接失败)
sleep 5
# 使用vpncmd自动连接VPN账户
/root/vpnclient/vpncmd localhost /CLIENT PASSWORD:密码 /CMD AccountConnect MyVPN
sudo chmod +x /root/vpnclient/auto-connect.sh
sudo vi /etc/systemd/system/vpn-auto-connect.service
[Unit]
Description=Auto-connect SoftEther VPN Account
After=vpnclient.service # 依赖vpnclient服务,确保其启动后再执行
[Service]
Type=oneshot
ExecStart=/root/vpnclient/auto-connect.sh
User=root
[Install]
WantedBy=multi-user.target
重新加载服务配置并设置自启打开
sudo systemctl daemon-reload
sudo enable vpn-auto-connect.service