Linux IPsec 配置详解
IPsec 概述与核心组件
IPsec(Internet Protocol Security)是一套协议簇,用于在 IP 网络上提供安全的通信服务,它通过加密和认证机制,确保数据在传输过程中的机密性、完整性和真实性,Linux 系统中,IPsec 主要由以下组件构成:

- IKE(Internet Key Exchange):负责动态协商和管理安全关联(SA),包括密钥交换和算法协商。
- ESP(Encapsulating Security Payload):提供数据加密和可选的认证服务。
- AH(Authentication Header):提供数据认证和完整性校验,但不加密。
- SPD(Security Policy Database):定义数据包的处理策略,决定哪些流量需要通过 IPsec 保护。
IPsec 配置前的准备工作
在配置 IPsec 前,需确保以下条件满足:
- 内核支持:确认 Linux 内核已启用 IPsec 模块(通常默认启用)。
- 工具安装:安装
ipsec-tools或strongSwan等工具包,以strongSwan为例:sudo apt install strongswan strongswan-pki
- 网络环境:明确两端节点的公网 IP、子网范围及预共享密钥(PSK)。
使用 strongSwan 配置 IPsec
strongSwan 是 Linux 下功能强大的 IPsec 实现,支持 IKEv1 和 IKEv2 协议,以下以站点到站点(Site-to-Site)VPN 为例,演示配置步骤。
定义配置文件
在 /etc/ipsec.conf 中定义 VPN 连接参数:
config setup
charondebug="ike 2, cfg 2"
uniqueids=no
conn site-to-site
auto=add
type=tunnel
left=192.168.1.1 # 本地公网 IP
leftsubnet=10.0.0.0/24 # 本地子网
right=203.0.113.1 # 远端公网 IP
rightsubnet=172.16.0.0/24 # 远端子网
authby=secret
ike=aes256-sha256-modp2048!
esp=aes256-sha256-modp2048!
keyexchange=ikev2
dpdaction=restart
dpddelay=30s
rekey=no
配置预共享密钥
在 /etc/ipsec.secrets 中定义共享密钥:
0.113.1 PSK "YourSharedSecretKey"
启动并验证服务
sudo systemctl restart strongswan sudo ipsec statusall
通过 ipsec statusall 检查连接状态,确认隧道建立成功。

使用 libreswan 配置 IPsec
Libreswan 是另一款流行的 IPsec 实现,配置方式与 strongSwan 类似。
编辑 /etc/ipsec.conf
conn site-to-site
auto=start
left=192.168.1.1
leftid=%any
leftsubnet=10.0.0.0/24
right=203.0.113.1
rightid=%any
rightsubnet=172.16.0.0/24
authby=secret
ike= aes256-sha2-modp2048!
esp= aes256-sha2-modp2048!
keyexchange=ikev2
dpdaction=restart
dpddelay=30
设置密钥
在 /etc/ipsec.secrets 中添加:
0.113.1 : PSK "YourSharedSecretKey"
启动服务
sudo systemctl restart ipsec sudo ipsec verify
IPsec 故障排查
配置过程中常见问题及解决方法:
- 隧道无法建立:
- 检查防火墙规则,确保 UDP 端口 500(IKE)和 4500(NAT-T)开放。
- 验证两端 IP、子网及密钥是否匹配。
- 数据包丢失:
- 使用
tcpdump监控 IPsec 流量:sudo tcpdump -n ip proto 50 or ip proto 51
- 检查
spd和sa状态:sudo ip xfrm policy sudo ip xfrm state
- 使用
- 日志分析:
- 查看
/var/log/syslog或journalctl -u strongswan定位错误信息。
- 查看
高级配置选项
-
XAuth 认证(用于客户端 VPN):
在ipsec.conf中添加:leftauth=pubkey leftsourceip=10.0.0.100/24 rightauth=eap-mschapv2 rightsourceip=172.16.0.0/24并在
ipsec.secrets中配置用户证书或密码。
-
NAT 穿透(NAT-T):
默认启用 NAT-T,确保两端设备支持 UDP 端口 4500。 -
多隧道配置:
通过定义多个conn段落实现多隧道,每个隧道使用独立的leftsubnet和rightsubnet。
安全建议
- 算法选择:优先使用 AES-256、SHA-256 等强加密算法。
- 密钥管理:定期更换预共享密钥,采用证书认证替代 PSK。
- 访问控制:通过
spd限制允许的子网范围,避免暴露不必要的网络。
Linux IPsec 配置是构建安全网络通信的核心技术,无论是站点到站点 VPN 还是远程访问 VPN,均可通过 strongSwan 或 libreswan 等工具实现,清晰的配置结构和严谨的故障排查是确保稳定运行的关键,在实际应用中,需结合网络环境灵活调整参数,并始终遵循最小权限原则,以最大化 IPsec 的安全防护能力。
















