StrongSwan 安装及配置 —— 与 TP-Link 路由器建立 IPsec VPN
简单说明 StrongSwan 是什么、适用场景、为什么要配合路由器做 Site-to-Site 或远程访问 VPN。
StrongSwan 是一款开源、稳定且支持 IKEv1/IKEv2 的 IPsec VPN 解决方案。
在企业或家庭网络中,我们常常希望通过公网安全地连接不同的局域网,例如云服务器与家用路由器互通。
本文将演示如何在 Ubuntu 服务器上安装 StrongSwan,并与 TP-Link 路由器 建立 IPsec 隧道,实现内网互访。
二、实验环境
| 设备 | 角色 | 公网 IP | 内网网段 | 备注 |
|---|---|---|---|---|
| Ubuntu 云服务器 | StrongSwan 网关 | 1.1.1.1 | 10.0.0.0/24 | SiteA |
| TP-Link 路由器 | IPsec VPN 客户端 | 动态公网 IP | 192.168.1.0/24 | SiteB |
目标:1.1.1.1 能访问 192.168.1.x,反之亦然。
三、安装 StrongSwan
sudo apt update
sudo apt install strongswan -y
安装完成后会生成主要配置文件:
/etc/ipsec.conf— 主配置文件/etc/ipsec.secrets— 存储密钥和凭证
四、配置 IPsec
1. 编辑 /etc/ipsec.conf
sudo nano /etc/ipsec.conf
示例配置:
config setup
uniqueids=no
charondebug="ike 2, esp 2" # 开启日志便于排查
conn aliyun
authby=secret # 预共享密钥认证(正确)
auto=add # 启动时加载连接
left=%defaultroute # 或 left=172.21.97.169
leftid=1.1.1.1 # 服务器身份标识(与路由器对端网关一致)
leftsubnet=0.0.0.0/0 # 云端子网(全流量转发,正确)
right=%any # 路由器公网IP(动态IP填%any,固定IP填实际公网IP)
rightsubnet=192.168.1.0/24 # 本地目标IP(正确)
# 加密套件(建议与路由器同步,若路由器支持则用更强的)
ike=3des-md5-modp1024! # 替换3des-md5(优先),若不支持再改回3des-md5-modp1024
esp=3des-md5! # 同上,不支持则用3des-md5
keyexchange=ikev1 # 与路由器IKE版本一致
aggressive=no # 关闭野蛮模式(优先用主模式,兼容性更好)
# aggressive=yes # 若路由器强制要求野蛮模式,再开启
# DPD检测(优化重连)
dpdaction=restart # 检测到断开后重连(原clear是关闭,不合理)
dpddelay=30s
dpdtimeout=120s
注意:TP-Link 一般只支持 IKEv1,且加密方式需与其 Web 配置一致。
2. 编辑 /etc/ipsec.secrets
sudo nano /etc/ipsec.secrets
内容示例:
: PSK "123456789"
PSK就是路由器里配置的预共享密钥。
五、TP-Link 路由器端配置
在路由器管理页面(通常是 192.168.1.1)中:
- 打开 高级设置 → VPN → IPsec VPN
-
新建连接:
- 模式:主模式 (Main Mode)
- 远程网关:1.1.1.1(服务器公网)
- 本地网段:192.168.1.0/24
- 远程网段:10.0.0.0/24
- 预共享密钥:123456789
保存后点击“连接”。
六、启动与调试
启动 StrongSwan
sudo ipsec restart
sudo ipsec status
查看连接状态
sudo ipsec statusall
如果出现:
INSTALLED, TUNNEL, ESP in UDP SPIs: ...
说明隧道已成功建立。
七、验证通信
在 Ubuntu 端:
ping 192.168.1.1
在 TP-Link LAN 设备中:
ping 10.0.0.1
若能互通,则配置成功。
常见问题
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| 隧道不建立 | PSK 或 ID 不一致 | 检查 ipsec.secrets 与路由器设置 |
| 只能单向通信 | 路由未添加 | 在两端手动添加 ip route 指向隧道接口 |
| 路由器连上但无数据 | NAT/防火墙限制 | 在云服务器上允许 UDP 500/4500 端口 |
| 日志无效 | charon 未输出 | 修改 charondebug 级别为 ike 2, knl 2, cfg 2 |
通过本文配置,我们成功让 云端 Ubuntu StrongSwan 与 TP-Link 路由器 建立了一个稳定的 IPsec Site-to-Site VPN,实现了不同局域网之间的透明互通。