如何在Linux Debian系统搭建可被Windows 10内置VPN客户端连接的VPN服务器?
如何在Linux Debian系统搭建可被Windows 10内置VPN客户端连接的VPN服务器?
嗨,我来帮你搞定这个问题!你提到之前翻的旧指南用的都是已经淘汰的openswan,StrongSwan的手册又有点绕,而且你已经搭好OpenVPN但想用上Windows 10自带的客户端对吧?
目前最推荐的方案是用StrongSwan搭建IKEv2类型的VPN服务器——Windows 10内置客户端原生支持IKEv2协议,稳定性和安全性都很靠谱,而且StrongSwan是当前维护活跃的开源IPsec实现,完全替代了旧的openswan。下面是一步步的实操指南:
一、安装StrongSwan及依赖包
首先更新系统并安装所需组件:
apt update && apt install strongswan strongswan-pki libcharon-extra-plugins
strongswan是核心VPN服务程序strongswan-pki用于生成证书(IKEv2推荐用证书认证,安全度更高)libcharon-extra-plugins提供额外的认证插件,支持Windows客户端常用的EAP认证
二、生成认证证书
1. 创建CA根证书
# 生成CA私钥 ipsec pki --gen --type rsa --size 4096 --outform pem > ca.key # 生成CA自签名证书(有效期10年) ipsec pki --self --ca --lifetime 3650 --in ca.key --type rsa --dn "CN=VPN CA" --outform pem > ca.crt
2. 创建服务器证书
替换命令里的你的服务器公网IP或域名为实际值:
# 生成服务器私钥 ipsec pki --gen --type rsa --size 4096 --outform pem > server.key # 基于CA证书签发服务器证书(有效期5年) ipsec pki --pub --in server.key --type rsa | ipsec pki --issue --lifetime 1825 --cacert ca.crt --cakey ca.key --dn "CN=你的服务器公网IP或域名" --san "你的服务器公网IP或域名" --flag serverAuth --flag ikeIntermediate --outform pem > server.crt
3. 部署证书到指定目录
cp ca.crt /etc/ipsec.d/cacerts/ cp server.crt /etc/ipsec.d/certs/ cp server.key /etc/ipsec.d/private/ # 设置私钥权限,避免泄露 chmod 600 /etc/ipsec.d/private/server.key
三、配置StrongSwan服务
编辑主配置文件/etc/ipsec.conf,替换成以下内容(记得替换你的服务器公网IP或域名):
config setup charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2, mgr 2" uniqueids=no conn ikev2-vpn auto=add compress=no type=tunnel keyexchange=ikev2 fragmentation=yes forceencaps=yes dpdaction=clear dpddelay=300s rekey=no left=%any leftid=@你的服务器公网IP或域名 leftcert=server.crt leftsendcert=always leftsubnet=0.0.0.0/0 right=%any rightid=%any rightauth=eap-mschapv2 rightsourceip=10.10.10.0/24 rightdns=8.8.8.8,8.8.4.4 rightsendcert=never eap_identity=%identity
关键配置说明:
rightsourceip=10.10.10.0/24:给VPN客户端分配的内网IP段,可自行修改rightdns:给客户端设置的DNS服务器,这里用的是谷歌公共DNS,也可以换成你常用的rightauth=eap-mschapv2:采用Windows客户端支持的用户名密码认证方式
四、设置用户账号密码
编辑/etc/ipsec.secrets,添加认证用户(可添加多行,支持多个用户):
: RSA server.key 用户名1 : EAP "密码1" 用户名2 : EAP "密码2"
五、配置防火墙与IP转发
1. 开启IP转发
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf sysctl -p
2. 设置iptables规则
替换eth0为你的服务器外网接口名称(可通过ip addr查看):
# 允许VPN客户端流量转发 iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -m policy --pol ipsec --dir out -j ACCEPT iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE iptables -A FORWARD -s 10.10.10.0/24 -j ACCEPT iptables -A FORWARD -d 10.10.10.0/24 -j ACCEPT # 开放IKEv2所需端口 iptables -A INPUT -p udp --dport 500 -j ACCEPT iptables -A INPUT -p udp --dport 4500 -j ACCEPT
为了让规则重启后生效,可安装iptables-persistent保存规则:
apt install iptables-persistent
六、启动并启用StrongSwan服务
systemctl restart strongswan-starter systemctl enable strongswan-starter
七、Windows 10客户端配置
- 打开「设置」→「网络和Internet」→「VPN」→「添加VPN连接」
- 填写以下信息:
- VPN提供商:Windows(内置)
- 连接名称:自定义(比如「Debian IKEv2 VPN」)
- 服务器名称或地址:你的服务器公网IP或域名
- VPN类型:IKEv2
- 登录类型:用户名和密码
- 输入之前设置的用户名和密码,勾选「记住我的凭据」,点击「保存」
- 点击刚创建的连接,即可完成VPN接入
补充说明
- 如果你不想用证书认证,也可以改用预共享密钥(PSK),但证书认证的安全等级更高,更推荐使用
- Windows内置客户端不支持OpenVPN协议,所以没法直接用你现有的OpenVPN服务器对接,必须用IKEv2或L2TP/IPsec,而IKEv2的稳定性和安全性优于L2TP
备注:内容来源于stack exchange,提问作者Damir Tenishev
相关产品推荐
相关产品推荐

