Linux下搭建 SSTP VPN 服务,从零开始实现安全远程访问

dfbn6 2026-04-17 免费VPN 1 0

在现代网络环境中,远程办公和安全数据传输已成为企业与个人用户的刚需,针对Windows用户常用的SSTP(Secure Socket Tunneling Protocol)协议,许多Linux服务器也可以作为SSTP服务器来提供加密的远程访问服务,本文将详细介绍如何在Ubuntu或CentOS等主流Linux发行版上搭建SSTP VPN服务,利用OpenVPN的后端模块——pptpd或更推荐的strongSwan + stunnel组合,实现稳定、安全且兼容性强的SSTP连接。

明确一点:Linux原生并不直接支持SSTP协议(该协议由微软开发),但可以通过stunnel(SSL/TLS代理工具)将SSTP流量转发到OpenVPN服务,从而实现“伪SSTP”功能,这种方式在实践中被广泛使用,尤其适合需要与Windows客户端无缝对接的场景。

第一步:准备环境
确保你有一台公网IP的Linux服务器(如阿里云、腾讯云或自建VPS),操作系统推荐Ubuntu 20.04 LTS或CentOS Stream 9,更新系统并安装必要依赖:

sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential libssl-dev libpam0g-dev libcap-ng-dev libcurl4-openssl-dev

第二步:安装stunnel
stunnel用于监听443端口(SSTP标准端口),并将流量透明转发给OpenVPN服务,下载并编译stunnel:

wget https://www.stunnel.org/downloads/stunnel-5.75.tar.gz
tar -xzf stunnel-5.75.tar.gz
cd stunnel-5.75
./configure --enable-ssl
make && sudo make install

配置stunnel(创建 /etc/stunnel/stunnel.conf):

[stunnel]
accept = 443
connect = 127.0.0.1:1194
cert = /etc/stunnel/stunnel.pem
key = /etc/stunnel/stunnel.pem
verify = 0

生成证书(自签名即可用于内网或测试):

sudo openssl req -new -x509 -days 365 -nodes -out /etc/stunnel/stunnel.pem -keyout /etc/stunnel/stunnel.pem

第三步:部署OpenVPN
安装OpenVPN并配置为TAP模式(SSTP通常需桥接以支持局域网穿透):

sudo apt install -y openvpn easy-rsa

使用Easy-RSA生成CA证书和服务器/客户端证书(详细步骤略,可参考OpenVPN官方文档),关键配置文件(/etc/openvpn/server.conf)示例:

port 1194
proto tcp
dev tap
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/server.crt
key /etc/openvpn/easy-rsa/pki/private/server.key
dh /etc/openvpn/easy-rsa/pki/dh.pem
server-bridge 192.168.1.1 255.255.255.0 192.168.1.100 192.168.1.200
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn-status.log
verb 3

第四步:启动服务
启用并启动OpenVPN和stunnel:

sudo systemctl enable openvpn@server
sudo systemctl start openvpn@server
sudo systemctl enable stunnel4
sudo systemctl start stunnel4

第五步:防火墙配置
开放443端口(SSTP)和1194端口(OpenVPN):

sudo ufw allow 443/tcp
sudo ufw allow 1194/tcp
sudo ufw reload

客户端配置:
Windows用户只需在“网络和共享中心”中添加新VPN连接,类型选择“SSTP”,地址填入服务器公网IP,身份验证方式使用证书或用户名密码(取决于OpenVPN配置),客户端将通过443端口建立SSL隧道,由stunnel转给OpenVPN处理,实现与传统SSTP一致的行为。

虽然Linux不原生支持SSTP,但通过stunnel + OpenVPN的组合,我们能高效复用现有开源生态,满足企业级安全远程访问需求,此方案兼容性强、易于维护,是替代Windows Server SSTP服务的理想选择,建议结合iptables规则和日志监控进一步加固安全性。

Linux下搭建 SSTP VPN 服务,从零开始实现安全远程访问

VPN加速器|半仙VPN加速器-免费VPN梯子首选半仙VPN