机房交换机端口镜像,流量抓包分析网络攻击
机房网络突然变慢或出现异常外连时,很多运维第一反应是登录服务器查进程,但有些攻击流量只在交换机层面可见。
端口镜像能把指定端口的流量复制一份到监控口,配合 tcpdump 抓包,就能在不影响业务的前提下分析网络攻击。
本文按零基础可执行的方式,讲清交换机镜像配置、抓包命令和攻击特征判断。
先确认镜像方向和抓包位置
端口镜像的核心是“复制流量”,不是“阻断流量”。
配置前需要明确两件事:
- 源端口:要监控的端口,比如服务器上联口或网关口。
- 目的端口:连接抓包主机的端口,该端口不能跑业务,否则会受影响。
抓包主机建议用独立笔记本或临时虚拟机,网卡设为混杂模式。
如果交换机支持,优先用 本地端口镜像;
跨交换机场景才考虑 远程镜像,但配置更复杂,新手先用本地镜像。
配置交换机端口镜像
不同品牌命令不同,下面给出 Cisco 和华为的典型配置。
操作前建议保存当前配置,或确认在维护窗口执行。
Cisco 交换机(IOS)本地镜像:
enable
configure terminal
monitor session 1 source interface GigabitEthernet0/1 both
monitor session 1 destination interface GigabitEthernet0/2
end
write memory
both 表示同时复制收和发流量;
如果只看攻击外连,可改成 rx 或 tx。
华为交换机(VRP)本地镜像:
system-view
observe-port 1 interface GigabitEthernet0/0/2
interface GigabitEthernet0/0/1
port-mirroring to observe-port 1 both
return
save
配置完成后,用 display port-mirroring 或 show monitor session 1 检查镜像是否生效。
用 tcpdump 抓包并识别攻击流量
抓包主机接到目的端口后,先确认网卡名称,再启动抓包。
ip a
sudo tcpdump -i eth0 -nn -s0 -w attack.pcap
如果只想快速看异常,可以加过滤条件:
sudo tcpdump -i eth0 -nn 'tcp[tcpflags] & tcp-syn != 0 and tcp[tcpflags] & tcp-ack == 0'
这条命令只看 SYN 包,适合发现扫描或 SYN Flood。
抓包文件可用 Wireshark 打开,重点看:
- 同一源 IP 在短时间内连接大量不同目的端口,通常是端口扫描。
- 大量 SYN 包没有后续 ACK,可能是 SYN Flood。
- 固定周期向陌生 IP 发送小包,可能是心跳或 C2 回连。
- DNS 请求异常长或频繁查询随机域名,可能是 DNS 隧道。
判断攻击流量的关键不是单个包,而是单位时间内的连接数和目的地址分布。 建议先统计再下结论。
常见坑和验证方法
- 镜像口跑业务:目的端口必须空出来,否则可能丢包或环路。
- 抓包主机网卡未开启混杂模式:部分系统默认不接收非本机流量,可用
ip link set eth0 promisc on临时开启。 - 抓包文件过大:长时间抓包建议加
-C 100 -W 10轮转,避免写满磁盘。 - 只看不存:发现异常后先保存 pcap,再分析,避免证据丢失。
验证镜像是否成功,
可以在源端口对应服务器上 ping 抓包主机,
然后在抓包主机执行 tcpdump -i eth0 icmp,
能同时看到 request 和 reply 就说明镜像生效。
处理建议
确认攻击源后,优先在交换机或防火墙做 ACL 阻断,再清理服务器上的异常进程。
如果攻击来自内网主机,先隔离该端口,保留抓包文件用于溯源。
涉及对外攻击或数据泄露时,建议同步保留日志并联系网络负责人,不要只删文件了事。
端口镜像和流量抓包是机房排障的基础手段,配置时注意源和目的端口不要选错,抓包后先统计再判断,能少走很多弯路。