Linux IPSec 配置指南
IPSec 简介
IPSec(Internet Protocol Security)是一种网络层安全协议,用于在 IP 网络上提供数据加密、认证和完整性保护,Linux 系统通过内置的 strongSwan 或 Libreswan 工具实现 IPSec 配置,支持站点到站点(Site-to-Site)和远程访问(Remote Access)两种模式,本文以 strongSwan 为例,介绍完整的配置流程。

环境准备
-
安装 strongSwan
在基于 Debian/Ubuntu 的系统中,使用以下命令安装:sudo apt update && sudo apt install strongswan strongswan-pki
在 CentOS/RHEL 系统中,可通过 EPEL 仓库安装:
sudo yum install epel-release && sudo yum install strongswan
-
生成证书与密钥
IPSec 依赖证书进行身份验证,首先创建 CA 证书:ipsec pki --gen --outform pem > ca.pem ipsec pki --self --ca --lifetime 3650 --in ca.pem --dn "CN=Linux IPSec CA" --outform pem > ca.cert.pem
为服务器和客户端生成证书(需替换
server.example.com为实际域名或 IP):ipsec pki --gen --outform pem > server.pem ipsec pki --pub --in server.pem | ipsec pki --issue --lifetime 1825 --cacert ca.cert.pem --cakey ca.pem --dn "CN=server.example.com" --san server.example.com --flag serverAuth --flag ikeIntermediate --outform pem > server.cert.pem
配置 IPSec 服务
-
编辑
ipsec.conf
打开配置文件/etc/ipsec.conf,定义连接参数:config setup charondebug="ike 2, cfg 2" uniqueids=no conn site-to-site auto=start rekey=no type=tunnel keyexchange=ikev2 authby=pubkey left=%any leftid=server.example.com leftcert=server.cert.pem leftsubnet=10.0.0.0/24 right=%any rightid=client.example.com rightcert=client.cert.pem rightsubnet=192.168.1.0/24 ike=aes256-sha256-modp2048! esp=aes256-sha256-modp2048!参数说明:

auto=start:自动启动连接;leftsubnet和rightsubnet:分别定义两端内网网段;ike和esp:指定加密算法。
-
配置
ipsec.secrets
在/etc/ipsec.secrets中添加私钥路径:: RSA server.pem
-
调整内核参数
编辑/etc/sysctl.conf,启用 IP 转发:net.ipv4.ip_forward=1
执行
sysctl -p使配置生效。
启动与调试
-
启动服务
sudo systemctl restart strongswan sudo systemctl enable strongswan
-
检查连接状态
使用以下命令验证配置:sudo ipsec statusall sudo ipsec listcerts
若显示
ESTABLISHED,表示连接成功。
客户端配置
-
Windows 客户端
- 进入“网络设置” > “VPN” > “添加 VPN 连接”;
- 选择“Windows(内置)”作为 VPN 提供商,输入服务器地址和证书;
- 在“安全”选项卡中启用“IKEv2”和证书认证。
-
Android/iOS 客户端
使用strongSwan官方客户端,导入服务器证书并配置 IKEv2 连接参数。
故障排查
- 日志分析
查看journalctl -u strongswan或/var/log/charon.log定位错误。 - 常见问题
- 证书验证失败:检查证书有效期和
rightid是否匹配; - 无法路由:确认防火墙规则(如
ufw或iptables)已放行 UDP 端口 500 和 4500; - 密钥交换超时:检查两端网络连通性和 NAT 策略(推荐使用
nat-keepalive)。
- 证书验证失败:检查证书有效期和
安全建议
- 定期轮换证书和密钥;
- 限制
left和right的 IP 范围,避免任意客户端接入; - 启用双因子认证(如
EAP-TLS)。
通过以上步骤,即可在 Linux 系统中部署安全的 IPSec 隧道,实际部署时需根据网络环境调整参数,并结合防火墙策略强化整体安全性。
















