核心工具:tcpdump
tcpdump
是Linux最常用的命令行抓包工具,需通过sudo
获取权限:
sudo tcpdump -i any udp -vvv
- 参数解析:
-i any
:监听所有网卡(指定网卡用-i eth0
)udp
:仅捕获UDP流量-vvv
:最高级别详细输出(显示数据包内容)-w udp.pcap
:保存为pcap文件(Wireshark可分析)port 53
:过滤特定端口(如DNS)host 192.168.1.100
:过滤源/目标IP
典型场景:
- 抓取DNS请求(UDP 53端口):
sudo tcpdump -i eth0 udp port 53 -w dns_queries.pcap
- 实时分析NTP流量(UDP 123端口):
sudo tcpdump -i any udp port 123 -nn
图形化工具:Wireshark
若需深度分析,推荐使用Wireshark:
- 安装:
sudo apt install wireshark # Debian/Ubuntu sudo dnf install wireshark # RHEL/CentOS
- 操作流程:
- 启动Wireshark → 选择网卡 → 在过滤栏输入
udp
→ 点击开始捕获 - 高级过滤:
udp.port == 161
(SNMP流量)或udp.length > 100
(大包筛选)
- 启动Wireshark → 选择网卡 → 在过滤栏输入
替代工具
- tshark(Wireshark命令行版):
sudo tshark -i ens3 -f "udp" -Y "udp.port==5000" -O udp
-O udp
:显示UDP协议详情-T fields -e data
:仅提取数据字段
- udpdump(专用工具):
sudo udpdump -i eth0 -p 1234 # 监听UDP 1234端口
高级技巧
- BPF过滤(Berkeley Packet Filter):
sudo tcpdump 'udp and src net 10.0.0.0/24' # 抓取源IP网段的UDP包
- 大包捕获:
sudo tcpdump -s 0 udp # `-s 0`捕获完整数据包(默认只抓68字节)
- 流量统计:
sudo tcpdump -i any udp -q -n -c 100 | awk '{print $3}' | sort | uniq -c
注意事项
- 权限问题:抓包需
root
或CAP_NET_RAW
权限(建议用sudo
) - 安全合规:
- 避免在生产环境捕获敏感数据(如密码)
- 使用
-w
保存文件后及时加密
- 性能影响:高流量场景下限制捕获量(如
-c 1000
抓1000包后退出) - 错误排查:若无数据,检查网卡状态(
ip link
)或防火墙规则
- 基础需求:
tcpdump
满足大多数UDP抓包场景 - 深度分析:Wireshark提供协议解码和可视化
- 自动化:
tshark
或脚本结合BPF实现定时抓包
引用说明: 基于Linux内核文档(kernel.org)、tcpdump官方手册(tcpdump.org)及Wireshark用户指南(wireshark.org),命令测试环境为Ubuntu 22.04 LTS及CentOS Stream 9,符合RFC 768标准对UDP协议的定义。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/7944.html