Ubuntu 命令行配置 IPsec 客户端(证书认证)

以 StrongSwan 为例,全程基于命令行操作,适合无图形界面的服务器环境。

一、安装客户端软件

sudo apt update
sudo apt install strongswan strongswan-pki libstrongswan-extra-plugins -y

二、准备证书文件

假设你已经从 服务端获取了以下三个证书文件,将它们上传至客户端机器的指定目录:

  • caCert.pem:CA 根证书

  • clientCert.pem:客户端公钥证书

  • clientKey.pem:客户端私钥

将证书复制到 StrongSwan 的标准目录并加固权限:

sudo cp caCert.pem /etc/ipsec.d/cacerts/
sudo cp clientCert.pem /etc/ipsec.d/certs/
sudo cp clientKey.pem /etc/ipsec.d/private/

# 确保私钥只有 root 可读,这是强制安全要求
sudo chmod 600 /etc/ipsec.d/private/clientKey.pem

三、配置 ipsec.conf

编辑主配置文件 /etc/ipsec.conf

sudo vim /etc/ipsec.conf

清空原有内容,填入以下配置(注意替换尖括号中的变量):

config setup
    charondebug="ike 2, cfg 2"  # 调试级别,排查问题时可开启

conn ikev2-cert-client
    keyexchange=ikev2           # 使用 IKEv2 协议
    ike=aes256-sha256-modp2048! # 第一阶段加密算法(需与服务端一致)
    esp=aes256-sha256-modp2048! # 第二阶段加密算法(需与服务端一致)
    
    left=%defaultroute          # 客户端本地出口,自动识别
    leftcert=clientCert.pem     # 指定客户端证书文件名
    leftauth=pubkey             # 左侧(客户端)使用公钥认证
    
    right=<服务器公网IP或域名>   # VPN 服务器地址
    rightid=%                   # 右侧(服务端)ID,% 表示不校验
    rightsubnet=0.0.0.0/0      # 推送到客户端的路由(全流量)
    rightauth=pubkey            # 右侧(服务端)使用公钥认证
    
    auto=start                  # 服务启动时自动拨号

四、配置 ipsec.secrets

编辑密钥文件 /etc/ipsec.secrets,告诉 StrongSwan 私钥的位置:

sudo vim /etc/ipsec.secrets

填入以下内容:

# 格式为: : RSA 私钥文件名
: RSA clientKey.pem

如果该私钥生成时设置了密码(Passphrase),则需要写成:

: RSA clientKey.pem "你的私钥密码"

五、启动与验证

  1. 重启服务加载新配置:

sudo ipsec restart
  1. 查看连接状态:

sudo ipsec statusall

看到 ESTABLISHED字样即表示隧道建立成功。

六、配置路由(关键)

连接成功后,通常需要手动添加一条路由,让所有流量走  接口(通常是 ipsec0):

# 假设 VPN 分配的客户端 IP 是 10.10.10.1
sudo ip route add default dev ipsec0

或者,如果你只想让访问特定内网(例如 192.168.1.0/24)的流量走 :

sudo ip route add 192.168.1.0/24 dev ipsec0
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐