搭建IPSec服务器主要用于实现远程安全接入,通过加密隧道保护数据传输安全,常用于企业分支机构互联或员工远程访问内部资源,以下以Linux系统(以Ubuntu 20.04为例)结合StrongSwan工具搭建IPSec VPN服务器的详细步骤:

环境准备
- 服务器要求:一台公网IP的云服务器或本地服务器,推荐配置2核4G以上,操作系统为Ubuntu 20.04 LTS。
- 网络配置:确保服务器防火墙允许UDP端口500(IKE)、4500(NATT)及ESP协议(协议号50),可通过
ufw或iptables开放端口。 - 依赖安装:更新系统并安装StrongSwan及相关工具:
sudo apt update && sudo apt upgrade y sudo apt install strongswan strongswanpki libcharonextraplugins y
配置IPSec服务器
生成证书(可选,但推荐用于双向认证)
- 创建CA证书:
mkdir p /etc/ipsec.d/{cacerts,certs,private} ipsec pki gen type rsa size 4096 outform pem > /etc/ipsec.d/private/cakey.pem ipsec pki self ca lifetime 3650 in /etc/ipsec.d/private/cakey.pem type rsa dn "CN=VPN CA" outform pem > /etc/ipsec.d/cacerts/cacert.pem - 创建服务器证书:
ipsec pki gen type rsa size 2048 outform pem > /etc/ipsec.d/private/serverkey.pem ipsec pki pub in /etc/ipsec.d/private/serverkey.pem type rsa | ipsec pki issue lifetime 1825 cacert /etc/ipsec.d/cacerts/cacert.pem cakey /etc/ipsec.d/private/cakey.pem dn "CN=服务器公网IP" san "服务器公网IP" flag serverAuth flag ikeIntermediate outform pem > /etc/ipsec.d/certs/servercert.pem
配置StrongSwan核心文件
-
修改
ipsec.conf:sudo nano /etc/ipsec.conf
添加以下内容:
config setup charondebug="ike 2, knl 2, cfg 2" uniqueids=no conn %default keyexchange=ikev2 auto=add rekey=no dpdaction=clear dpddelay=300s conn ikev2vpn left=%any leftid=%server公网IP leftauth=pubkey leftcert=servercert.pem leftsendcert=always leftsubnet=0.0.0.0/0 right=%any rightid=%any rightauth=pubkey rightsourceip=10.10.10.0/24 rightsendcert=never ike=chacha20poly1305sha512curve25519prfsha512,aes256gcm16sha384prfsha384ecp384,aes256gcm16sha256prfsha256ecp256! esp=chacha20poly1305sha512,aes256gcm16sha384,aes256gcm16sha256! ikefrag=yes mobike=yes -
修改
ipsec.secrets:配置服务器私钥路径:sudo nano /etc/ipsec.secrets
添加:
: RSA /etc/ipsec.d/private/serverkey.pem
配置客户端IP地址池
在/etc/ipsec.conf的ikev2vpn连接中已通过rightsourceip定义了客户端IP池(10.10.0/24),可根据需求修改,若需动态分配,可安装dnsmasq并配置DHCP:

sudo apt install dnsmasq y sudo nano /etc/dnsmasq.conf
添加:
interface=eth0 # 服务器网卡名 listenaddress=127.0.0.1 dhcprange=10.10.10.100,10.10.10.200,255.255.255.0,24h
启动并启用服务:
sudo systemctl restart dnsmasq sudo systemctl enable dnsmasq
启动并测试服务
- 启动StrongSwan:
sudo systemctl restart strongswan sudo systemctl enable strongswan
- 检查状态:
sudo ipsec statusall # 查看连接状态 sudo journalctl u strongswan # 查看日志排查错误
- 客户端测试:
- Windows:通过“设置”>“网络和Internet”>“VPN”添加IKEv2 VPN,服务器地址为服务器公网IP,证书导入服务器证书(若使用双向认证)。
- macOS/iOS:系统设置中添加VPN类型选择“IKEv2”,输入服务器地址、账号(证书模式下需导入客户端证书)。
- Android:使用
strongSwan客户端,导入服务器证书后配置连接。
防火墙与路由配置
确保服务器允许IPsec流量通过,以ufw为例:
sudo ufw allow 500/udp sudo ufw allow 4500/udp sudo ufw allow esp sudo ufw reload
若需客户端访问内网资源,需开启IP转发:
sudo nano /etc/sysctl.conf
取消注释net.ipv4.ip_forward=1,执行:

sudo sysctl p
配置NAT转发(iptables):
sudo iptables t nat A POSTROUTING s 10.10.10.0/24 o eth0 j MASQUERADE sudo iptablessave > /etc/iptables/rules.v4
FAQs
Q1: 连接VPN时提示“认证失败”怎么办?
A: 可能原因包括:
- 证书问题:检查服务器证书是否正确导入客户端,或
ipsec.secrets中的私钥路径是否正确。 - 用户认证:若使用预共享密钥(PSK),确保
ipsec.secrets中密钥与客户端一致;若使用证书,检查客户端证书是否由CA签发。 - 防火墙:确认服务器防火墙允许500/4500端口及ESP协议,客户端本地防火墙未阻止VPN流量。
可通过sudo journalctl u strongswan f实时查看日志定位具体错误。
Q2: 客户端获取不到IP地址或无法访问内网?
A: 常见解决方法:
- IP池冲突:检查
rightsourceip定义的IP段是否与服务器内网或其他网段冲突,确保dnsmasq(若使用)DHCP服务正常。 - 路由问题:确认服务器开启了IP转发(
net.ipv4.ip_forward=1),并正确配置了NAT转发规则(iptables)。 - 客户端配置:检查VPN设置中的“使用默认网关”是否开启,或手动添加内网路由。
- 安全组:云服务器需检查安全组是否放行了客户端IP段(如10.10.10.0/24)的出站规则。
通过以上步骤,即可搭建一个功能完善的IPSec VPN服务器,支持IKEv2协议,提供加密的远程接入服务,实际部署中可根据需求调整加密算法、IP池大小及认证方式,确保安全性与易用性平衡。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/293281.html