IPSec 相关诊断命令
IPSec 相关诊断命令
本文介绍 FortiGate 上常用的 IPSec VPN 诊断命令,包括查看 IKE 状态摘要、Phase1/Phase2 隧道状态,以及如何使用日志过滤器进行针对性排错。
diagnose vpn ike status
该命令用于查看 IKE 守护进程的摘要信息,包括当前连接数、IKE SA 和 IPsec SA 的统计。
FortiGate # diagnose vpn ike status
connection: 2/50
IKE SA: created 2/51 established 2/9 times 0/13/40 ms
IPsec SA: created 1/13 established 1/7 times 0/8/30 ms| 字段 | 含义 |
|---|---|
connection: 2/50 | 当前活跃连接数/历史累计连接数 |
IKE SA: created 2/51 | 当前已创建的 IKE SA 数/历史累计创建数 |
established 2/9 | 当前已建立的 IKE SA 数/历史累计建立数 |
times 0/13/40 ms | IKE SA 建立耗时:最小值/平均值/最大值(毫秒) |
IPsec SA: created 1/13 | 当前已创建的 IPsec SA 数/历史累计创建数 |
established 1/7 | 当前已建立的 IPsec SA 数/历史累计建立数 |
times 0/8/30 ms | IPsec SA 建立耗时:最小值/平均值/最大值(毫秒) |
diagnose vpn ike gateway list
该命令用于查看 IPsec Phase1(IKE SA)的详细状态,对应 VPN 向导中的 Phase1 接口配置。
# 查看所有 Phase1 网关状态
diagnose vpn ike gateway list
# 查看指定 Phase1 的网关状态
diagnose vpn ike gateway list name <phase1-name>输出示例:
FortiGate # diagnose vpn ike gateway list
vd: root/0
name: to_Hub
version: 2
interface: wan1 5
addr: 172.22.6.64:4500 -> 123.112.245.136:4500
tun_id: 10.0.0.1/::10.0.0.1
remote_location: 0.0.0.0
network-id: 1
transport: UDP
created: 1613s ago
peer-id: 192.168.123.175
peer-id-auth: no
nat: me peer
pending-queue: 0
PPK: no
IKE SA: created 1/1 established 1/1 time 30/30/30 ms
IPsec SA: created 1/1 established 1/1 time 30/30/30 ms
id/spi: 280 b3e059d8b13c10b4/0282c25b49016f77
direction: initiator
status: established 1613-1613s ago = 30ms
proposal: aes128-sha256
child: no
SK_ei: 563a54d670e8b165-f9c32703918e1298
SK_er: 8e22948050818d3f-d2492b127bf87596
SK_ai: f2852d83e816f6c1-00a57a7dee98a9f2-ff7f6ca67414b4ba-3bb9e10545d4d001
SK_ar: 2c68aa001decc746-c22fb11c6cbe0acd-0fbd93f99d8771b1-b6d2f846405d4463
PPK: no
message-id sent/recv: 219/0
QKD: no
lifetime/rekey: 86400/84486
DPD sent/recv: 00021ff7/00021ff7
peer-id: 192.168.123.175| 字段 | 含义 |
|---|---|
vd | 所属虚拟域(VDOM)及索引号 |
name | Phase1 接口名称 |
version | IKE 版本号(1 或 2) |
interface | 绑定的物理接口及索引 |
addr | 本端 IP: 端口 -> 对端 IP: 端口 |
tun_id | 隧道标识(默认为 Remote Gateway IP) |
direction | 角色:initiator(发起方)或 responder(响应方) |
status | SA 当前状态及存活时间 |
proposal | 协商使用的加密/认证算法组合 |
lifetime/rekey | SA 生命周期/重协商时间(秒) |
DPD | DPD 检测配置(模式、空闲超时、重试次数等) |
diagnose vpn tunnel list
该命令用于查看 IPsec Phase2(IPsec SA)的详细状态,包括加密算法、流量选择器(Selector)、数据传输统计等。
# 查看所有 Phase2 隧道
diagnose vpn tunnel list
# 查看指定隧道名称的 Phase2
diagnose vpn tunnel list name <phase2-name>输出示例:
FortiGate # diagnose vpn tunnel list
list all ipsec tunnel in vd 0
------------------------------------------------------
name=dhcp ver=2 serial=2 10.10.12.1:0->0.0.0.0:0 nexthop= tun_id=10.0.0.2 tun_id6=::10.0.0.2 status=up dst_mtu=0 weight=1
bound_if=12 real_if=0 lgwy=static/1 tun=intf mode=dialup/2 encap=none/552 options[0228]=npu frag-rfc role=primary accept_traffic=1 overlay_id=0
proxyid_num=0 child_num=0 refcnt=2 ilast=44589822 olast=44589822 ad=/0
stat: rxp=0 txp=0 rxb=0 txb=0
dpd: mode=on-demand on=0 status=ok idle=20000ms retry=3 count=0 seqno=0
natt: mode=none draft=0 interval=0 remote_port=0
fec: egress=0 ingress=0
------------------------------------------------------
name=to_Hub ver=2 serial=1 172.22.6.64:4500->123.112.245.136:4500 nexthop=172.22.6.1 tun_id=10.0.0.1 tun_id6=::10.0.0.1 status=up dst_mtu=1500 weight=1
bound_if=5 real_if=5 lgwy=static/1 tun=intf mode=auto/1 encap=none/552 options[0228]=npu frag-rfc run_state=0 role=sync-primary accept_traffic=1 overlay_id=1
proxyid_num=1 child_num=0 refcnt=5 ilast=3 olast=3 ad=/0
stat: rxp=64 txp=1093 rxb=9762 txb=4955
dpd: mode=on-idle on=1 status=ok idle=5000ms retry=3 count=0 seqno=139271
natt: mode=keepalive draft=0 interval=10 remote_port=4500
fec: egress=0 ingress=0
proxyid=to_Home_WAN1 proto=0 sa=1 ref=3 serial=1
src: 0:0.0.0.0-255.255.255.255:0
dst: 0:0.0.0.0-255.255.255.255:0
SA: ref=6 options=10224 type=00 soft=0 mtu=1422 expire=41170/0B replaywin=0
seqno=444 esn=0 replaywin_lastseq=00000000 qat=0 rekey=0 hash_search_len=1
life: type=01 bytes=0/0 timeout=42899/43200
dec: spi=3ad09099 esp=aes key=32 7aa05571013eb92215965d8fefc41eb3a5a8f49143dcbcf19780184cdf9e266e
ah=sha256 key=32 70ee0bdd2aecad1179137c570b9dddd8761c9ac7403c47f60186fdc699684605
enc: spi=afeaa692 esp=aes key=32 757de8c4d6c5650bd892208dd98e88d78e930858f95daabaa6cf35f290ef8dd7
ah=sha256 key=32 b33303fca9192130b15b669fd8cd222bf515c58732e2070a6e4312ca8369b139
dec:pkts/bytes=65/9814, enc:pkts/bytes=1159/14195
npu_flag=03 npu_lgwy=172.22.6.64:4500 npu_rgwy=123.112.245.136:4500
npu_selid=0 dec_npuid=1 enc_npuid=1 npu_isaidx=40 npu_osaidx=4| 字段 | 含义 |
|---|---|
name | Phase2 名称 |
ver | IKE 版本 |
bound_if | 绑定的接口索引 |
mode | 隧道模式 |
options | NPU 加速等选项标志 |
stat: rxp/txp | 接收/发送的数据包数量 |
stat: rxb/txb | 接收/发送的字节数 |
dpd | DPD 配置及状态 |
natt | NAT-T(NAT 穿越)配置 |
proxyid | 流量选择器(代理 ID) |
src / dst | 源/目标子网范围(本端/对端感兴趣流) |
sa | IPsec SA 数量(0 = 未建立,1 = 已建立) |
dec: spi / enc: spi | 解密/加密的 SPI 值及算法 |
mtu | 隧道有效 MTU |
expire | SA 剩余过期时间(秒) |
replaywin | 重放攻击检测窗口大小 |
npu_flag | NPU(硬件加速)标志及参数 |
diagnose vpn ipsec status
该命令用于查看所有 IPsec 加密设备(Crypto Device)的加密/解密计数器统计信息,帮助确认数据是否正确通过 VPN 硬件/软件加密通道传输。
FortiGate # diagnose vpn ipsec status
All ipsec crypto devices in use:
np7_0:
Encryption (encrypted/decrypted)
null : 0 0
des : 0 0
3des : 0 0
aes : 9359 6696
aes-gcm : 0 0
aria : 0 0
seed : 0 0
chacha20poly1305 : 0 0
Integrity (generated/validated)
null : 0 0
md5 : 0 0
sha1 : 9359 6696
sha256 : 0 0
sha384 : 0 0
sha512 : 0 0
NPU Host Offloading:
Encryption (encrypted/decrypted)
null : 0 0
des : 0 0
3des : 0 0
aes : 254 0
aes-gcm : 0 0
aria : 0 0
seed : 0 0
chacha20poly1305 : 0 0
Integrity (generated/validated)
null : 0 0
md5 : 0 0
sha1 : 254 0
sha256 : 0 0
sha384 : 0 0
sha512 : 0 0
CP9:
Encryption (encrypted/decrypted)
null : 0 0
des : 0 0
3des : 0 0
aes : 35075 315
aes-gcm : 0 0
aria : 0 0
seed : 0 0
chacha20poly1305 : 0 0
Integrity (generated/validated)
null : 0 0
md5 : 0 0
sha1 : 35081 315
sha256 : 0 0
sha384 : 0 0
sha512 : 0 0
SOFTWARE:
Encryption (encrypted/decrypted)
null : 0 0
des : 0 0
3des : 0 0
aes : 728 21
aes-gcm : 0 0
aria : 0 0
seed : 0 0
chacha20poly1305 : 0 0
Integrity (generated/validated)
null : 0 0
md5 : 0 0
sha1 : 728 21
sha256 : 0 0
sha384 : 0 0
sha512 : 0 0输出中可能出现的加密设备包括:NP7_0、NP7_1(NPU 硬件加速)、CP8/CP9(内容处理器)、NPU Host Offloading 以及 SOFTWARE(软件加密)。
diagnose vpn ike log filter
当设备上存在多条 IPsec 隧道时,Debug 输出可能非常庞大。使用 IKE 日志过滤器可以只显示与特定隧道或对端相关的 Debug 信息,大大简化排错过程。
命令语法变更
从 FortiOS v7.4.1 开始,diagnose vpn ike log-filter 的语法已变更为 diagnose vpn ike log filter(去掉了连字符)。同时部分子命令也有变化,例如 src-addr4 更名为 loc-addr4,dst-addr4 更名为 rem-addr4。请根据实际固件版本使用对应语法。
查看与清除过滤器
查看当前过滤器设置:
FortiGate # diagnose vpn ike log filter list
vd: any
name: any
interface index: any
IPv4 local gw: 10.10.12.2
multiple IPv4 local gw: any
IPv4 remote gw: 1.1.1.1
multiple IPv4 remote gw: any
IPv6 local gw: any
multiple IPv6 local gw: any
IPv6 remote gw: any
multiple IPv6 remote gw: any
dest port: any清除所有过滤条件:
diagnose vpn ike log filter clear过滤选项
| 子命令 | 说明 |
|---|---|
list | 显示当前过滤器设置 |
clear | 清除所有过滤条件 |
name <phase1-name> | 按 Phase1 名称过滤 |
interface <index> | 按接口索引过滤(0 表示匹配所有接口) |
vd <index> | 按 VDOM 索引过滤(-1 表示匹配所有 VDOM) |
loc-addr4 <IP> | 按本端 IPv4 网关地址过滤(v7.4.1+ 语法,旧版为 src-addr4) |
rem-addr4 <IP> | 按对端 IPv4 网关地址过滤(v7.4.1+ 语法,旧版为 dst-addr4) |
loc-addr6 <IPv6> | 按本端 IPv6 网关地址过滤 |
rem-addr6 <IPv6> | 按对端 IPv6 网关地址过滤 |
mloc-addr4 <IP1> [IP2] ... | 按多个本端 IPv4 地址过滤(最多 6 个) |
mrem-addr4 <IP1> [IP2] ... | 按多个对端 IPv4 地址过滤(最多 6 个) |
dst-port <port> | 按目标端口过滤 |
negate <filter-name> | 取反指定的过滤条件(例如 negate dst-port) |
常用过滤示例
按对端网关 IP 过滤:
diagnose vpn ike log filter rem-addr4 198.51.100.1按 Phase1 名称过滤:
diagnose vpn ike log filter name to_Hub按本端网关 IP 过滤:
diagnose vpn ike log filter loc-addr4 203.0.113.1按接口索引过滤:
diagnose vpn ike log filter interface 10同时过滤多个对端地址:
diagnose vpn ike log filter mrem-addr4 198.51.100.1 198.51.100.2 198.51.100.3
IKE Debug
注意
Debug 输出会消耗系统资源,排错完成后务必及时关闭。在生产环境中,务必先配置好过滤器再开启 Debug,避免大量无关日志输出影响设备性能。
开启 Debug
# 第一步:清除旧的过滤条件
diagnose vpn ike log filter clear
# 第二步:设置过滤器(推荐按对端 IP 或隧道名称过滤)
diagnose vpn ike log filter rem-addr4 <对端IP>
# 第三步:开启 IKE debug
diagnose debug application ike -1
# 第四步:启用时间戳,便于与 VPN 事件日志交叉对比
diagnose debug console timestamp enable
# 第五步:开启 debug 输出
diagnose debug enable关闭 Debug
# 关闭 debug 输出
diagnose debug disable
# 重置所有 debug 应用设置
diagnose debug reset
# 清除过滤条件
diagnose vpn ike log filter clear其他命令
查看隧道摘要
以简洁的方式列出所有 IPsec 隧道的 UP/DOWN 状态和流量统计。
FortiGate # get vpn ipsec tunnel summary
'to_Hub' 123.112.245.136:4500 selectors(total,up): 1/1 rx(pkt,err): 47/0 tx(pkt,err): 1074/0查看隧道详情
以详细的格式列出隧道信息,包括 Phase1/Phase2 参数。显示完整 Phase2 信息,包括本端/远端网关、选择器、SPI 值、加密算法和 NPU 加速状态。
# 查看所有隧道详情
get vpn ipsec tunnel details
# 查看指定隧道详情
get vpn ipsec tunnel name <tunnel-name>输出示例:
FortiGate # get vpn ipsec tunnel details
gateway
name: 'to_Hub'
local-gateway: 172.22.6.64:4500 (static)
remote-gateway: 123.112.245.136:4500 (static)
status: up
mode: ike-v2
interface: 'wan1' (5) vrf:0
rx packets: 50 bytes: 7606 errors: 0
tx packets: 1078 bytes: 3827 errors: 0
dpd: on-idle/negotiated status:ok idle: 5000ms retry: 3 count: 0
nat traversal mode: keep-alive interval: 10
selectors
name: 'to_Hub'
auto-negotiate: disable
mode: tunnel
src: 0:0.0.0.0/0.0.0.0:0
dst: 0:0.0.0.0/0.0.0.0:0
SA
lifetime/rekey: 43200/41562
mtu: 1422
tx-esp-seq: 435
replay: disabled
qat: 0
inbound
spi: 3ad09099
enc: aes-cb 7aa05571013eb92215965d8fefc41eb3a5a8f49143dcbcf19780184cdf9e266e
auth: sha256 70ee0bdd2aecad1179137c570b9dddd8761c9ac7403c47f60186fdc699684605
outbound
spi: afeaa692
enc: aes-cb 757de8c4d6c5650bd892208dd98e88d78e930858f95daabaa6cf35f290ef8dd7
auth: sha256 b33303fca9192130b15b669fd8cd222bf515c58732e2070a6e4312ca8369b139
NPU acceleration: encryption(outbound) decryption(inbound)重启隧道
注意
该命令会断开并重新协商指定隧道,生产环境请谨慎使用。
# 重启指定隧道
diagnose vpn ike gateway flush name <phase1-name>
# 重启所有隧道(谨慎执行)
diagnose vpn ike gateway flush