Ubuntu下使用Sniffer(以tcpdump为例)分析网络日志的步骤
在Ubuntu系统中,最常用的命令行Sniffer工具是tcpdump,可通过包管理器快速安装:
sudo apt-get update
sudo apt-get install tcpdump
eth0),使用以下命令:sudo tcpdump -i eth0
any参数:sudo tcpdump -i any
-n(不解析主机名/端口名)、-s 0(捕获完整数据包)参数,提升输出可读性:sudo tcpdump -i eth0 -nn -s 0
通过**BPF(Berkeley Packet Filter)**语法筛选特定流量,常见场景如下:
sudo tcpdump -i eth0 port 80 # HTTP流量
sudo tcpdump -i eth0 port 53 # DNS流量
192.168.1.100)相关的流量:sudo tcpdump -i eth0 src 192.168.1.100 # 源IP为192.168.1.100的流量
sudo tcpdump -i eth0 dst 192.168.1.100 # 目标IP为192.168.1.100的流量
sudo tcpdump -i eth0 icmp # ICMP流量(ping请求/响应)
sudo tcpdump -i eth0 arp # ARP流量(地址解析)
将捕获的数据包保存为.pcap文件(Wireshark等工具的标准格式),便于后续深度分析:
sudo tcpdump -i eth0 -w network_log.pcap # 保存到当前目录
sudo tcpdump -i eth0 -w /var/log/tcpdump/network_log.pcap # 保存到指定目录(需root权限)
tcpdump的-r参数读取.pcap文件,结合过滤条件进一步分析:sudo tcpdump -r network_log.pcap -nn | grep "192.168.1.100" # 筛选特定IP的记录
sudo tcpdump -r network_log.pcap -nn -c 100 # 仅显示前100条记录
Wireshark(Ubuntu下通过sudo apt-get install wireshark安装)打开.pcap文件,通过界面直观查看数据包的源/目标IP、端口、协议、数据内容,并利用其过滤、统计功能(如“Conversation”查看会话、“IO Graph”查看流量趋势)进行深度分析。tcpdump的时间戳(添加-tttt参数)分析数据包的发送与接收间隔,若间隔过长或丢包率高,可能存在网络拥塞或链路问题。flags),若出现异常标志组合(如SYN+FIN同时置位),可能存在恶意扫描或协议实现错误。tcpdump会消耗大量CPU和内存资源,建议在非高峰时段使用,或通过过滤条件减少捕获的数据量(如仅捕获特定端口)。sudo运行命令,避免直接切换到root用户。