能快速发现内网主动探测行为;icmp type 3 code 3(端口不可达)报文由无服务监听端口的主机返回,若同一源ip频繁发往不同目的ip及端口,即可判定为端口扫描。

直接用 tcpdump 捕获 ICMP Type 3(Destination Unreachable)报文,能快速发现内网中是否存在主动探测行为,比如主机在扫描其他设备的端口或服务是否可达。这类报文通常由被扫目标(如防火墙、未开放端口的服务)返回给扫描源,是识别扫描活动的关键线索。
确认ICMP Type 3报文特征
ICMP Type 3 表示“目标不可达”,常见子类型包括:
- Type 3, Code 1:主机不可达(常因目标关机或路由不通)
- Type 3, Code 3:端口不可达(最典型——TCP/UDP端口无服务监听,由内核返回)
- Type 3, Code 13:通信被管理禁止(如iptables -j REJECT)
其中 Code 3(端口不可达) 最具排查价值:只要看到大量来自同一源IP、发往不同目的IP+端口、且响应均为 ICMP Type 3 Code 3 的报文,基本可判定该源IP正在做端口扫描。
使用tcpdump捕获Type 3报文
执行以下命令实时捕获并筛选 ICMP Type 3 报文(需 root 权限):
sudo tcpdump -i any 'icmp[icmptype] == 3' -nn -v
说明:
-
-i any:监听所有接口(含容器、桥接等虚拟接口),避免漏掉跨网段流量 -
icmp[icmptype] == 3:BPF 过滤语法,精准匹配 ICMP Type 字段为 3 -
-nn:禁用 DNS 和端口名解析,加快输出、避免干扰 -
-v:显示 ICMP Code 和原始 IP 头信息(如源/目的地址、TTL),便于溯源
若想进一步聚焦到最常见的 Code 3(端口不可达),可加条件:
sudo tcpdump -i any 'icmp[icmptype] == 3 and icmp[icmpcode] == 3' -nn -v
定位扫描源IP与行为模式
观察捕获结果时,重点关注三类信息:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 源IP一致性:多个 Type 3 报文是否都来自同一个源IP?如果是,该IP极可能是扫描发起者
- 目的IP离散性:这些报文是否发往多个不同目的IP?反映横向扫描范围
- 目的端口多样性:是否覆盖常见端口(如21、22、23、80、443、3306等)?体现扫描粒度
例如,看到如下连续输出:
10:22:15.112345 IP 192.168.5.10 > 192.168.5.100: ICMP 192.168.5.100 unreachable - port unreachable, length 5610:22:15.112401 IP 192.168.5.10 > 192.168.5.101: ICMP 192.168.5.101 unreachable - port unreachable, length 56
10:22:15.112452 IP 192.168.5.10 > 192.168.5.102: ICMP 192.168.5.102 unreachable - port unreachable, length 56
即可锁定 192.168.5.10 为可疑扫描源。
保存并离线分析增强排查效率
长时间监控建议将报文保存为 pcap 文件,后续用 Wireshark 或命令行工具深度分析:
sudo tcpdump -i any 'icmp[icmptype] == 3' -w icmp_type3.pcap -G 300 -W 5
说明:
-
-w icmp_type3.pcap:写入文件 -
-G 300:每 300 秒(5 分钟)滚动一次新文件 -
-W 5:最多保留 5 个滚动文件,防磁盘占满
之后可用 tshark 统计源IP频次:
tshark -r icmp_type3.pcap -Y 'icmp.type == 3' -T fields -e ip.src | sort | uniq -c | sort -nr | head -10
输出前 10 名高频源IP,直击最活跃的扫描行为。










