作为一名网络工程师,我经常被客户或同事询问:“如何在不依赖第三方服务的情况下,搭建一个安全、稳定的私有虚拟专用网络(VPN)?”尤其是在远程办公日益普及的今天,企业对数据加密和网络安全的需求愈发迫切,本文将手把手教你如何在Linux服务器上使用IPsec协议创建一个基于IP地址的VPN连接,实现跨公网的安全通信。

你需要一台运行Linux(如Ubuntu 20.04或CentOS 7以上版本)的服务器,并确保它拥有公网IP地址,这是关键前提,因为客户端需要通过这个IP与服务器建立隧道,我们选择IPsec(Internet Protocol Security)作为加密协议,因为它支持强身份验证(如预共享密钥PSK)和数据加密(如AES),广泛应用于企业级场景。

第一步是安装必要的软件包,以Ubuntu为例,执行以下命令:

sudo apt update
sudo apt install strongswan libcharon-extra-plugins

StrongSwan是一个开源的IPsec实现,功能强大且易于配置,安装完成后,编辑主配置文件 /etc/ipsec.conf,添加如下内容:

config setup
    charondebug="ike 1, knl 1, cfg 1"
    uniqueids=yes
conn %default
    ikelifetime=60m
    keylife=20m
    rekey=no
    keyingtries=3
    dpddelay=30s
    dpddelay=30s
    dpdtimeout=120s
    dpdaction=clear
conn my-vpn
    left=%any
    leftid=@your-server-ip
    leftsubnet=192.168.1.0/24
    right=%any
    rightid=%any
    rightsourceip=192.168.2.0/24
    authby=secret
    auto=add
    type=tunnel
    esp=aes256-sha256-modp2048
    ike=aes256-sha256-modp2048

这里的关键是 leftid=@your-server-ip,这表示服务器的公网IP将成为身份标识。rightsourceip 是分配给客户端的私有IP段(如192.168.2.x),你还可以通过 ipsec secrets 文件设置预共享密钥,

@your-server-ip %any : PSK "your-secure-password-here"

保存后,重启服务并启用IPsec模块:

sudo systemctl enable strongswan
sudo systemctl start strongswan

你的服务器已准备好接收来自客户端的连接请求,在客户端(如Windows、macOS或另一台Linux设备)安装StrongSwan或使用OpenConnect等工具,配置相同的PSK和服务器IP地址即可,连接成功后,客户端会获得一个属于你定义的私有网段的IP(如192.168.2.10),从而可以像本地局域网一样访问内网资源。

值得注意的是,IPsec配置涉及防火墙规则,务必开放UDP端口500(IKE)和4500(NAT-T),并允许ESP协议(协议号50)通过,使用 ufwiptables 配置时要格外小心,避免误封导致无法登录。

最后提醒:生产环境建议结合证书认证(而非纯PSK)提升安全性,并定期轮换密钥,IPsec虽然配置复杂,但一旦掌握,就是构建高可靠远程接入架构的核心技能之一。

如何在Linux系统中创建基于IPsec的VPN连接—从零开始配置安全远程访问  第1张

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