You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Debian Linux上配置strongSwan以适配Windows内置VPN客户端?

如何在Debian Linux上配置strongSwan以适配Windows内置VPN客户端?

我完全懂你想要“快速搞定”的心情——不用给Windows装第三方VPN客户端,直接用系统自带的工具连Linux上的strongSwan,谁都不想折腾几十条配置参数、啃一堆技术文档对吧?

先直接回应你的疑问:你理解的没错,官方文档里的配置入门、证书入门这些步骤确实是完整部署的基础,但在Debian上其实有更简化的“快速搭建”方式,不用手动走完全部复杂流程,下面我给你一步步拆解:

第一步:安装strongSwan及必要工具

先更新系统包,然后安装strongSwan和证书生成工具:

  • 执行更新命令:sudo apt update && sudo apt upgrade -y
  • 安装软件包:sudo apt install strongswan strongswan-pki libstrongswan-extra-plugins -y

第二步:快速生成适配的证书(不用手动搭建完整PKI)

Windows内置客户端需要证书验证,我们用strongSwan自带的工具一键生成:

  1. 创建证书存储目录:
    sudo mkdir -p /etc/ipsec.d/{cacerts,certs,private}
  2. 生成CA根证书(给你的CA起个标识,比如MyVPN-CA):
    sudo ipsec pki --gen --type rsa --size 4096 --outform pem > /etc/ipsec.d/private/ca-key.pem
    sudo ipsec pki --self --ca --lifetime 3650 --in /etc/ipsec.d/private/ca-key.pem --type rsa --dn "CN=MyVPN-CA" --outform pem > /etc/ipsec.d/cacerts/ca-cert.pem
    
  3. 生成服务器证书(替换vpn.example.com为你的服务器公网域名或IP,<你的服务器公网IP>换成实际IP):
    sudo ipsec pki --gen --type rsa --size 4096 --outform pem > /etc/ipsec.d/private/server-key.pem
    sudo ipsec pki --pub --in /etc/ipsec.d/private/server-key.pem --type rsa | sudo ipsec pki --issue --lifetime 1825 --cacert /etc/ipsec.d/cacerts/ca-cert.pem --cakey /etc/ipsec.d/private/ca-key.pem --dn "CN=vpn.example.com" --san vpn.example.com --san <你的服务器公网IP> --outform pem > /etc/ipsec.d/certs/server-cert.pem
    

第三步:配置strongSwan主配置文件

我们直接用适配Windows IKEv2的简化配置:

  1. 备份原配置文件:sudo cp /etc/ipsec.conf /etc/ipsec.conf.bak
  2. 编辑/etc/ipsec.conf,替换成以下内容(注释是给你解释关键项,实际可以保留或删掉):
    config setup
        charondebug="ike 2, knl 2, cfg 2"  # 开启基础调试日志,方便排查问题
        uniqueids=no
    
    conn windows-vpn
        auto=add  # 启动strongSwan时自动加载这个连接
        keyexchange=ikev2  # Windows内置客户端支持的标准协议
        ike=aes256-sha256-modp2048!  # 强制使用Windows兼容的加密套件
        esp=aes256-sha256!
        dpdaction=clear  # 长时间无响应时断开连接
        dpddelay=300s
        rekey=no
        left=%any  # 监听服务器所有网卡
        leftid=@vpn.example.com  # 服务器标识,和证书里的CN一致
        leftcert=server-cert.pem  # 指定服务器证书
        leftsendcert=always  # 始终向客户端发送证书
        leftsubnet=0.0.0.0/0  # 允许客户端访问所有网段(包括外网)
        right=%any  # 允许任意客户端连接
        rightid=%any
        rightauth=eap-mschapv2  # Windows支持的EAP认证方式,用账号密码登录
        rightsourceip=10.10.10.0/24  # 分配给VPN客户端的IP网段
        rightdns=8.8.8.8,8.8.4.4  # 给客户端的DNS服务器(这里用谷歌的,你可以换自己的)
        eap_identity=%identity
    

第四步:设置VPN账号密码

编辑/etc/ipsec.secrets文件,添加用户账号:

  1. 备份原文件:sudo cp /etc/ipsec.secrets /etc/ipsec.secrets.bak
  2. 添加内容(替换user1yourpassword为你自己的账号密码,可添加多个用户):
    : RSA server-key.pem  # 指定服务器私钥
    
    user1 : EAP "yourpassword"  # 用户名: 认证方式 "密码"
    
  3. 设置文件权限保证安全:sudo chmod 600 /etc/ipsec.secrets

第五步:启动并配置防火墙

  1. 重启并启用strongSwan服务:
    sudo systemctl restart strongswan-starter
    sudo systemctl enable strongswan-starter
  2. 配置防火墙允许VPN流量:
    sudo iptables -A INPUT -p udp --dport 500 -j ACCEPT  # IKEv2初始端口
    sudo iptables -A INPUT -p udp --dport 4500 -j ACCEPT  # NAT-T端口
    sudo iptables -A INPUT -p esp -j ACCEPT  # ESP协议
    
  3. 开启IP转发(让客户端能通过服务器访问外网):
    sudo sysctl -w net.ipv4.ip_forward=1
    然后编辑/etc/sysctl.conf,添加net.ipv4.ip_forward=1,保存后执行sudo sysctl -p永久生效。
  4. 配置NAT转发(替换eth0为你的服务器外网网卡名称,用ip addr查看):
    sudo iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE

第六步:Windows客户端配置

不用装任何软件,直接用系统自带的VPN:

  1. 打开「设置」→「网络和Internet」→「VPN」→「添加VPN连接」
  2. 填写信息:
    • 提供商:选择「Windows (内置)」
    • 连接名称:随便取(比如「MyLinuxVPN」)
    • 服务器名称或地址:填你的服务器公网IP或域名
    • VPN类型:选择「IKEv2」
    • 登录信息类型:选择「用户名和密码」
    • 输入你设置的账号和密码,勾选「记住我的凭据」
  3. 保存后点击「连接」,正常就能连上了。

最后再回应你的疑问

你之前看的官方文档是面向复杂场景的完整手动配置流程,确实需要学不少细节,但对于“能用Windows内置客户端连”这个基础需求,上面的简化步骤完全够用,不用啃完所有官方文档。如果之后需要扩展功能(比如证书登录、多网段控制),再去补看官方文档的细节就行。

备注:内容来源于stack exchange,提问作者Damir Tenishev

火山引擎 最新活动