菜鸟科技网

ipsec 配置命令

下面我将从最常用和最主流的角度,为您详细介绍 Linux 系统下使用 strongSwan 的配置命令,因为 strongSwan 是目前功能最强大、应用最广泛的 IPsec 实现之一,也是许多云平台(如 AWS, Google Cloud)推荐的方案,我也会简要介绍其他实现方式的关键命令。

ipsec 配置命令-图1
(图片来源网络,侵删)

核心概念:IPsec 是什么?

在配置之前,理解 IPsec 的工作模式至关重要,IPsec 主要由两部分组成:

  1. IKE (Internet Key Exchange / Internet 密钥交换):负责在两个对等体之间安全地协商建立安全联盟,它分为两个阶段:

    • IKEv1 Phase 1: 建立一个安全的、经过身份验证的通道,用于保护后续的通信。
    • IKEv1 Phase 2 (或 IKEv2 Child SA):使用已建立的通道来协商保护具体数据流量的密钥和参数(即 ESP/AH 协商)。
    • IKEv2: 将上述两个阶段合并,简化了流程,是现代推荐的方式。
  2. ESP (Encapsulating Security Payload / 封装安全载荷):负责对实际的数据包进行加密完整性校验

IKE 负责“谈判”和“建立安全通道”,ESP 负责在通道里“加密数据包”

ipsec 配置命令-图2
(图片来源网络,侵删)

Linux 系统使用 strongSwan

strongSwan 使用配置文件 /etc/ipsec.conf/etc/ipsec.secrets,并通过 ipsec 命令行工具进行管理。

安装 strongSwan

# 对于 Debian/Ubuntu
sudo apt update
sudo apt install strongswan strongswan-pki
# 对于 CentOS/RHEL/Fedora
sudo yum install strongswan
# 或者使用 dnf
sudo dnf install strongswan

核心配置文件

A. /etc/ipsec.conf (主配置文件)

这个文件定义了连接、策略等。

# 基本配置
config setup
    # charon 是 strongSwan 的守护进程
    charondebug="ike 2, knl 2, cfg 2"
    # 在接口启动时自动加载 IPsec 策略
    uniqueids=no
# 定义一个名为 "my-site-to-site" 的连接
conn my-site-to-site
    # 自动建立连接,当有流量匹配时
    auto=start
    # 两端标识,可以是 IP 地址或 FQDN
    left=192.168.1.100      # 本地(网关)公网 IP
    leftid=vpn.mydomain.com # 本地标识
    leftsubnet=10.0.0.0/24  # 本地需要保护的子网
    right=203.0.113.10      # 远端(网关)公网 IP
    rightid=vpn.remote.com  # 远端标识
    rightsubnet=192.168.2.0/24 # 远端需要保护的子网
    # 加密算法
    ike=aes256-sha256-modp2048!
    esp=aes256-sha256-modp2048!
    # 身份验证方式,预共享密钥
    authby=secret
    # 使用 IKEv2 协议
    keyexchange=ikev2
    # 强制使用隧道模式,而不是传输模式
    type=tunnel

B. /etc/ipsec.secrets (密钥文件)

ipsec 配置命令-图3
(图片来源网络,侵删)

这个文件存储预共享密钥或证书。权限必须设置为 600

# 格式: <leftid> <rightid> : PSK "your_pre_shared_key"
# 使用 * 可以匹配任何 ID
vpn.mydomain.com vpn.remote.com : PSK "a_very_strong_and_long_password_here"

核心管理命令

A. 启动、停止、重启服务

# 启动 strongSwan 服务
sudo systemctl start strongswan
# 停止 strongSwan 服务
sudo systemctl stop strongswan
# 重启 strongSwan 服务
sudo systemctl restart strongswan
# 设置开机自启
sudo systemctl enable strongswan
# 查看服务状态
sudo systemctl status strongswan

B. 加载/重载配置

# 加载配置文件,但不建立连接
sudo ipsec reload
# 强制重新加载所有配置,并尝试重新建立连接
sudo ipsec restart

C. 手动触发连接

# 手动建立名为 "my-site-to-site" 的连接
sudo ipsec up my-site-to-site
# 手动断开连接
sudo ipsec down my-site-to-site

D. 查看连接和日志状态 (最重要的命令)

# 查看所有连接状态
sudo ipsec statusall
# 查看特定连接的状态
sudo ipsec status my-site-to-site
# 查看 IKE 和 ESP 的 SA (Security Association) 详细信息
sudo ipsec status
# 查看 strongSwan 守护进程的实时日志 (非常有用!)
# 按 Ctrl+C 退出
sudo journalctl -u strongswan -f

E. 调试和故障排查

# 启用详细调试模式 (level 2 是详细,5 是极其详细)
sudo ipsec stroke stroke "loglevel 2"
# 查看内核中的 IPsec 策略 (XFRM)
sudo ip xfrm policy
# 查看内核中的 IPsec 安全联盟
sudo ip xfrm state

使用 ip xfrm 命令 (Linux 内核原生)

这是 strongSwan 等工具在底层实际调用的接口,通常不直接用于生产环境,但对于理解 IPsec 原理和进行底层调试非常有用。

# 1. 添加安全联盟
# ESP 协议, 32位 SPI, 加密算法 AES-CBC-256, 密钥, 认证算法 SHA1-96, 密钥
sudo ip xfrm state add src 192.168.1.100 dst 203.0.113.10 proto esp spi 0x12345 mode tunnel \
    auth sha1 0x0123456789abcdef0123456789abcdef01234567 \
    enc aes 0x0123456789abcdef0123456789abcdef0123456789abcdef01234567
# 2. 添加策略
# 对 10.0.0.0/24 -> 192.168.2.0/24 的流量,使用上面的 SA
sudo ip xfrm policy add src 10.0.0.0/24 dst 192.168.2.0/24 dir out tmpl src 192.168.1.100 dst 203.0.113.10 proto esp
# 3. 查看状态和策略 (与 strongSwan 的命令相同)
sudo ip xfrm state
sudo ip xfrm policy
# 4. 删除策略和 SA
sudo ip xfrm policy del src 10.0.0.0/24 dst 192.168.2.0/24 dir out
sudo ip xfrm state del src 192.168.1.100 dst 203.0.113.10 proto esp spi 0x12345

思科设备

思科 IOS 的命令与 Linux 完全不同,是交互式的 CLI。

# 进入全局配置模式
configure terminal
# 1. 定义 IKE 策略 (Phase 1)
crypto isakmp policy 10
 encr aes 256
 hash sha
 authentication pre-share
 group 14
 lifetime 86400
# 2. 定义预共享密钥
crypto isakmp key <your_pre_shared_key> address <remote_peer_ip>
# 3. 定义 IPsec 转换集 (Phase 2)
crypto ipsec transform-set my-set esp-aes 256 esp-sha-hmac
 mode tunnel
# 4. 定义加密图 (将上述策略应用到特定流量)
crypto map MY_MAP 10 ipsec-isakmp
 set peer <remote_peer_ip>
 set transform-set my-set
 match address 101  # ACL 号,定义需要加密的流量
# 5. 定义访问控制列表
access-list 101 permit ip <local_subnet> <wildcard_mask> <remote_subnet> <wildcard_mask>
# 6. 将加密图应用到外部接口
interface GigabitEthernet0/1
 crypto map MY_MAP
# 保存配置
end
write memory

Windows 系统

Windows 使用 PowerShell 进行管理。

# 1. 创建 IKEv2 主模式规则
New-NetIPsecMainModeRule -Name "MyRule" -LocalAddress Any -RemoteAddress <Remote_IP_or_Subnet> -Enabled True -AuthenticationMethod PreShared -MaxSecurityAssociationLifetime 3600 -Profile Any -MMProfile Any -PolicyStore ActiveStore
# 2. 创建快速模式规则 (用于 ESP)
New-NetIPsecQuickModeRule -Name "MyRule" -LocalAddress Any -RemoteAddress <Remote_IP_or_Subnet> -Enabled True -PrimaryProfile Any -SecondaryProfile Any -QuickModeProposalSet @{Encryption=GCMAES256; Integrity=GCMAES256; DHGroup=ECP384} -PolicyStore ActiveStore
# 3. 设置预共享密钥 (需要单独的步骤,通常通过 GUI 或组策略)
# 在 Windows 中,PSK 通常通过组策略或直接在连接属性中设置。
# 4. 查看现有规则
Get-NetIPsecMainModeRule
Get-NetIPsecQuickModeRule

总结与建议

特性 strongSwan (Linux) ip xfrm (Linux) Cisco IOS Windows
适用场景 服务器、网关、云平台 调试、底层操作 硬件防火墙、路由器 客户端、服务器
配置方式 /etc/ipsec.conf, /etc/ipsec.secrets + ipsec 命令 直接 ip xfrm 命令 交互式 CLI PowerShell
优点 灵活、强大、文档丰富、跨平台 接近内核、高效 成熟稳定、集成度高 原生支持、易于部署
关键命令 ipsec up/down, ipsec statusall, journalctl -f ip xfrm state/policy add/del/list crypto isakmp, crypto ipsec, crypto map New-NetIPsec...Rule

给初学者的建议:

  1. strongSwan 开始:它是学习 IPsec 的最佳起点,因为它清晰地分离了 IKE 和 ESP 的配置,并且有非常强大的日志系统。
  2. 理解 ipsec statusall 的输出:这是你排查问题的“金钥匙”,学会看懂它,你就知道连接是否建立、SA 是否协商成功、流量是否匹配策略。
  3. 从简单到复杂:先搭建一个最简单的点对点 VPN,再扩展到站点到站点 VPN。
  4. 确保网络连通性:在配置 IPsec 之前,确保两端的公网 IP 可以互相 ping 通,防火墙没有阻止 UDP 500/4500 (IKE) 和 ESP (协议号 50) 流量。
分享:
扫描分享到社交APP
上一篇
下一篇