centos系统搭建strongswan
StrongSwan 在 CentOS 上跑起来其实不复杂,系统但坑基本都集中在包管理和内核模块这两块。搭建我上周刚在一台 CentOS 7.9 的系统阿里云 ECS 上重新搭了一遍,顺手把过程记下来。搭建 CentOS 7 的系统默认源里压根没有 strongswan,得先装 EPEL。搭建这一步没什么好说的系统, 装完第一件事不是急着改配置,先看内核有没有加载 配置文件在 我拿 IKEv2 + PSK 做例子,简单直接。服务端配置大概这样: ipsec.secrets 里加一行 PSK: 注意冒号前面是空的,表示对所有连接生效。如果想精细控制可以写 改完重启服务: SELinux 如果开着 enforcing,strongswan 写 还有一点,如果服务器在 NAT 后面, 客户端这边,Windows 10 自带 IKEv2 客户端,网络设置里新建 VPN,类型选 IKEv2,填服务器地址和 PSK 就行。Android 用 strongSwan 官方 app,iOS 用内置的 Cisco IPSec 或者装 strongSwan 客户端。macOS 稍微麻烦点,系统自带的 IKEv2 配置对 PSK 支持不太友好,建议装 测通之后 整套下来半小时能搞定。真正花时间的是排错,尤其是云环境下的 NAT 和 MTU 问题。我遇到过客户端能连上但传大包就断的情况,最后发现是 MTU 没调,在 ipsec.conf 里加 yum install epel-release -y,搭建然后 yum install strongswan -y。系统装完确认一下版本,搭建我这边是系统 5.7.2,够用了。搭建CentOS 8 的系统话走 AppStream 或者直接 dnf 也行,但 8 已经 EOL,搭建建议直接上 Rocky 或者 Alma,系统省得换源折腾。af_key 和 xfrm_user。用 lsmod | grep xfrm 查一下,如果没有,modprobe xfrm_user 手动拉起来。我之前在一台 OpenVZ 的 VPS 上怎么都起不来,后来发现是宿主机没开 CONFIG_XFRM_USER,这种就没辙,只能换 KVM 的机器。/etc/strongswan/ 下面,主要动三个:ipsec.conf、ipsec.secrets、strongswan.conf。strongswan.conf 一般不用大改,默认的 charon 配置够跑 IKEv2。重点是 ipsec.conf。conn %default ikelifetime=24h lifetime=8h rekeymargin=3m keyingtries=1 keyexchange=ikev2 mobike=no conn win left=%any leftsubnet=0.0.0.0/0 leftauth=psk leftid=@your.server.ip right=%any rightauth=psk rightsourceip=10.10.10.0/24 rightdns=8.8.8.8,1.1.1.1 auto=add rightsourceip 是给客户端分配的虚拟 IP 段,别跟你内网冲突。leftid 写服务器公网 IP 或者域名,前面加 @ 是 IKEv2 的标识格式。客户端连的时候 ID 要对上,不然认证直接挂。: PSK "your_strong_password_here" @server.ip %any : PSK "xxx",但自己用没必要。systemctl restart strongswan。然后 ipsec statusall 看状态,正常的话能看到 conn win 是 ADDED 状态。如果报错,大概率是防火墙或者 SELinux 拦了。CentOS 7 的 firewalld 默认不放 IKE 和 ESP,得手动开:firewall-cmd --permanent --add-service=ipsec firewall-cmd --permanent --add-port=500/udp firewall-cmd --permanent --add-port=4500/udp firewall-cmd --reload /etc/strongswan/ 下的文件可能被拦。我一般直接 setenforce 0 先测通再说,生产环境再慢慢调策略。left 和 leftid 要写内网地址和公网标识,同时 strongswan.conf 里加 charon { nat_traversal = yes }。阿里云、腾讯云这种弹性公网 IP 的机器就是典型场景,不配这个客户端连上来会卡在 IKE_SA_INIT 阶段。strongswan 的 brew 包用命令行连。ipsec statusall 能看到 ESTABLISHED 的 SA,客户端也能拿到 10.10.10.x 的地址。这时候再 ping 8.8.8.8 验证转发。如果 ping 不通但 SA 建立了,检查 net.ipv4.ip_forward=1 有没有开,以及 iptables 的 NAT 规则有没有配。strongswan 不会自动帮你做 SNAT,得自己加:iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE mtu=1400 就稳了。这种东西文档里不会写,只能自己踩一遍才知道。
- 最近发表
- 随机阅读
- 搜索
-
- 友情链接
-