悦书阁 悦书阁
首页
学习笔记
技术文档
AI技术
更多
  • 分类
  • 标签
  • 归档

Felix

大道至简 知易行难
首页
学习笔记
技术文档
AI技术
更多
  • 分类
  • 标签
  • 归档
  • 部署文档

    • 博客搭建
    • Jenkins教程
    • Docker安装和简单使用
    • minio安装
    • Mysql安装
    • Redis安装
    • Docker部署服务
    • IKEv2 VPN 部署教程
      • 前言
      • 环境信息
      • 一、域名解析
      • 二、安装 strongSwan
      • 三、申请 SSL 证书
      • 四、配置 strongSwan
        • 4.1 复制证书到 strongSwan 目录
        • 4.2 配置 ipsec.conf
        • 4.3 配置 ipsec.secrets
      • 五、配置防火墙
        • 5.1 开放端口
        • 5.2 配置 NAT 和转发
      • 六、启动服务
      • 七、客户端配置
        • 7.1 iOS / macOS
        • 7.2 Windows
        • 7.3 Android
      • 八、踩坑经验
        • 问题 1:私钥加载失败
        • 问题 2:Windows 策略匹配错误
        • 问题 3:连接成功但无法上网
      • 九、验证连接
      • 十、证书续期
      • 总结
      • 相关链接
  • 常用手册

  • 经验技巧

  • 技术文档
  • 部署文档
liufei379
2026-04-28
目录

IKEv2 VPN 部署教程

# 前言

IKEv2 是目前最推荐的 VPN 协议之一,相比其他协议具有以下优势:

  • 无需安装客户端:iOS、macOS、Windows 原生支持
  • 连接速度快:IKEv2 握手比 IKEv1 更高效
  • 稳定性好:支持 MOBIKE,网络切换时自动重连
  • 安全性高:使用强加密算法

本文记录在 Ubuntu 22.04 服务器上部署 IKEv2 VPN 的完整过程,以及踩坑经验。

# 环境信息

项目 详情
操作系统 Ubuntu 22.04 LTS
VPN 域名 vpn.example.com(替换为你的域名)
服务器 IP YOUR_SERVER_IP(替换为你的服务器 IP)
VPN 软件 strongSwan
证书 Let's Encrypt

# 一、域名解析

首先确保域名已解析到服务器 IP:

dig +short vpn.example.com
# 应返回服务器 IP
1
2

# 二、安装 strongSwan

# 安装必要软件
apt-get update
apt-get install -y strongswan libstrongswan-standard-plugins \
  strongswan-libcharon libcharon-extra-plugins \
  certbot iptables-persistent
1
2
3
4
5

# 三、申请 SSL 证书

IKEv2 需要证书认证,使用 Let's Encrypt 申请:

# 临时停止 Web 服务器(如果占用 80 端口)
systemctl stop caddy

# 申请证书(替换为你的域名和邮箱)
certbot certonly --standalone \
  -d vpn.example.com \
  --non-interactive \
  --agree-tos \
  --email your@email.com \
  --key-type rsa

# 重启 Web 服务器
systemctl start caddy
1
2
3
4
5
6
7
8
9
10
11
12
13

证书位置:

  • 证书:/etc/letsencrypt/live/vpn.example.com/cert.pem
  • 私钥:/etc/letsencrypt/live/vpn.example.com/privkey.pem
  • CA链:/etc/letsencrypt/live/vpn.example.com/chain.pem

# 四、配置 strongSwan

# 4.1 复制证书到 strongSwan 目录

# 复制证书和私钥(替换域名)
cp /etc/letsencrypt/archive/vpn.example.com/cert1.pem /etc/ipsec.d/certs/cert.pem
cp /etc/letsencrypt/archive/vpn.example.com/privkey1.pem /etc/ipsec.d/private/privkey.pem

# 设置权限
chmod 600 /etc/ipsec.d/private/privkey.pem
chmod 644 /etc/ipsec.d/certs/cert.pem
1
2
3
4
5
6
7

# 4.2 配置 ipsec.conf

编辑 /etc/ipsec.conf:

# IKEv2 VPN Configuration

config setup
    charondebug="ike 2, knl 2, cfg 2"

conn ikev2-vpn
    auto=add
    compress=no
    type=tunnel
    keyexchange=ikev2
    fragmentation=yes
    rekey=no
    
    # 加密算法(兼容 iOS 和 Windows)
    ike=aes256-sha256-modp1024,aes256-sha1-modp1024,aes128-sha256-modp1024,aes128-sha1-modp1024,aes256-sha256-modp2048,aes128-sha256-modp2048,aes256gcm16-prfsha256-modp2048!
    esp=aes256-sha256,aes128-sha256,aes256-sha1,aes128-sha1,aes256gcm16!
    
    # Server (left) side
    left=%any
    leftid=@vpn.example.com    # 替换为你的域名
    leftcert=cert.pem
    leftsendcert=always
    leftsubnet=0.0.0.0/0
    
    # Client (right) side
    right=%any
    rightid=%any
    rightauth=eap-mschapv2
    rightdns=1.1.1.1,1.0.0.1
    rightsourceip=10.101.0.0/16
    eap_identity=%identity
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

# 4.3 配置 ipsec.secrets

编辑 /etc/ipsec.secrets:

# RSA private key
: RSA /etc/ipsec.d/private/privkey.pem

# EAP credentials(替换为你的用户名和密码)
your_username : EAP "your_password"
1
2
3
4
5
chmod 600 /etc/ipsec.secrets
1

# 五、配置防火墙

# 5.1 开放端口

# IPSec 端口
iptables -A INPUT -p udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp --dport 4500 -j ACCEPT

# 保存规则
netfilter-persistent save
1
2
3
4
5
6

# 5.2 配置 NAT 和转发

# 启用 IP 转发
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

# 清空并重新配置 FORWARD 链
iptables -F FORWARD

# 允许 VPN 客户端流量
iptables -A FORWARD -s 10.101.0.0/16 -j ACCEPT
iptables -A FORWARD -d 10.101.0.0/16 -j ACCEPT

# 允许已建立的连接
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# NAT 规则
iptables -t nat -A POSTROUTING -s 10.101.0.0/16 -o eth0 -j MASQUERADE

# 保存规则
netfilter-persistent save
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 六、启动服务

systemctl restart strongswan-starter
systemctl enable strongswan-starter
1
2

# 七、客户端配置

# 7.1 iOS / macOS

  1. 下载 .mobileconfig 配置文件(可由脚本生成)
  2. 设置 → 已下载描述文件 → 安装
  3. 设置 → VPN → 连接

# 7.2 Windows

  1. 设置 → 网络和 Internet → VPN → 添加 VPN
  2. 配置:
    • VPN 类型:IKEv2
    • 服务器地址:vpn.example.com(替换为你的域名)
    • 用户名:你的用户名
    • 密码:你的密码

# 7.3 Android

  1. 设置 → 网络 → VPN → 添加 VPN
  2. 类型:IKEv2/EAP
  3. 填写服务器地址、用户名、密码

# 八、踩坑经验

# 问题 1:私钥加载失败

现象:日志显示 no private key found for 'vpn.example.com'

原因:符号链接权限问题

解决:直接复制证书文件而非使用符号链接

cp /etc/letsencrypt/archive/vpn.example.com/privkey1.pem /etc/ipsec.d/private/privkey.pem
chmod 600 /etc/ipsec.d/private/privkey.pem
1
2

# 问题 2:Windows 策略匹配错误

现象:Windows 连接失败,日志显示 received proposals unacceptable

原因:Windows 默认使用 MODP_1024(DH Group 2),服务器未支持

解决:在 ike 配置中添加 MODP_1024 算法:

ike=aes256-sha256-modp1024,aes256-sha1-modp1024,...
1

# 问题 3:连接成功但无法上网

现象:VPN 已连接,但无法访问网络

原因:防火墙 FORWARD 规则只匹配 ESP 协议,未处理 NAT-T(UDP 封装)

解决:放宽 FORWARD 规则:

iptables -F FORWARD
iptables -A FORWARD -s 10.101.0.0/16 -j ACCEPT
iptables -A FORWARD -d 10.101.0.0/16 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
1
2
3
4

# 九、验证连接

查看连接日志:

journalctl -u strongswan-starter -f
1

成功连接的标志:

CHILD_SA ikev2-vpn{1} established with SPIs xxx_i xxx_o and TS 0.0.0.0/0 === 10.101.0.1/32
1

# 十、证书续期

Let's Encrypt 证书有效期 90 天,certbot 会自动续期。

续期后需要重启 strongSwan:

systemctl reload strongswan-starter
1

# 总结

IKEv2 VPN 部署的核心要点:

  1. 域名必须解析到服务器:Let's Encrypt 证书申请需要
  2. 证书权限正确:私钥 600,证书 644
  3. 加密算法兼容:同时支持 MODP_1024(Windows)和 MODP_2048(iOS)
  4. 防火墙规则完整:开放 500/4500 端口,正确配置 NAT 和转发

完成以上配置后,iOS 和 Windows 均可原生连接,无需安装额外客户端。

# 相关链接

  • strongSwan 官方文档 (opens new window)
  • IKEv2 RFC 7296 (opens new window)
  • Let's Encrypt (opens new window)
#VPN#IKEv2#strongSwan#Linux
上次更新: 2026/4/28 13:46:21
Docker部署服务
idea相关使用

← Docker部署服务 idea相关使用→

最近更新
01
OpenClaw 接入飞书流程
03-27
02
OpenClaw 配置详解与踩坑记录
03-25
03
AI技术入门指南
03-25
更多文章>
Theme by Vdoing | Copyright © 2022-2026 Felix | 粤ICP备17101757号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式