使用 OpenWrt 23.05.5 x86_64 Stable 成功部署 IKEv2 IPSec PSK 服务端完整实战教程

适用于 x86 软路由,个人家庭 VPN 回家使用,安卓客户端优先。 避坑 Snapshot
内核,稳定运行 strongSwan + IKEv2 + 共享密钥。


一 背景说明与真实踩坑总结

在 x86 软路由上部署 IKEv2/IPSec 时,很多人会遇到:

  • strongSwan 启动后秒崩
  • charon crash loop
  • kmod-xfrm-ipsec 无法安装
  • kmod-crypto-aes 无法安装
  • kernel-ipsec 缺失

根本原因只有一个:

使用了 OpenWrt Snapshot(开发快照版),内核与 kmod 模块版本不匹配,IPSec
永远无法正常运行。


二 如何确认你当前是不是 Snapshot

uname -r
cat /etc/openwrt_release

如果内核是 6.6.x,并显示 SNAPSHOT,即为问题系统。


三 唯一正确解决方案:更换 Stable 固件

推荐版本:

OpenWrt 23.05.5 x86_64 Stable

官方下载地址:

https://downloads.openwrt.org/releases/23.05.5/targets/x86/64/

物理机推荐:

openwrt-23.05.5-x86-64-generic-squashfs-combined.img.gz

虚拟机 EFI:

openwrt-23.05.5-x86-64-generic-squashfs-combined-efi.img.gz


四 刷机方式简介

物理机:

  1. 使用 Rufus 或 Etcher 写入 U 盘
  2. 启动进入 OpenWrt
  3. 写入本地硬盘
  4. 重启完成

虚拟机:

直接替换磁盘镜像为 efi 版本即可


五 安装 strongSwan 组件

opkg update
opkg install strongswan-full

六 IKEv2 PSK 配置

/etc/ipsec.conf

config setup
    uniqueids=never

conn ikev2-psk
    keyexchange=ikev2
    ike=aes256-sha256-modp2048
    esp=aes256-sha256
    rekey=no

    left=%any
    leftid=你的公网IP或域名
    leftauth=psk

    right=%any
    rightauth=psk

    rightsourceip=10.10.10.0/24
    rightdns=8.8.8.8,1.1.1.1

    auto=add

/etc/ipsec.secrets

你的公网IP或域名 : PSK "你的强密码"

七 防火墙放行端口

uci add firewall rule
uci set firewall.@rule[-1].src='wan'
uci set firewall.@rule[-1].proto='udp'
uci set firewall.@rule[-1].dest_port='500 4500'
uci set firewall.@rule[-1].target='ACCEPT'

uci add firewall rule
uci set firewall.@rule[-1].src='wan'
uci set firewall.@rule[-1].proto='esp'
uci set firewall.@rule[-1].target='ACCEPT'

uci commit firewall
/etc/init.d/firewall restart

八 启动服务

/etc/init.d/ipsec enable
/etc/init.d/ipsec restart
/etc/init.d/ipsec status

应显示 running


九 安卓连接方式

类型:IKEv2 IPSec PSK

服务器:公网 IP

IPSec 标识符:同上

预共享密钥:PSK

用户名密码留空


十 成功验证

访问:https://api.ipify.org

显示你家的公网 IP 即为成功


十一 总结

不要在 Snapshot 版本上折腾 IPSec。 Stable
才是家庭和生产环境唯一正确选择。

strongSwan 必须搭配完整 kernel-ipsec 支持才能正常工作。


注意 公网 500/udp 4500/udp 可能被封!!