Ubuntu Sniffer网络优化方法
通过设置捕获过滤器(如tcpdump -i eth0 'tcp port 80'
)或显示过滤器(如Wireshark中的http.request
),仅捕获目标IP、端口或协议的流量,避免处理无关数据包。例如,若只需监控Web流量,可过滤tcp port 80
或http
,显著降低Sniffer的处理负担。
根据需求选择合适的Sniffer工具:
tcpdump
(轻量、快速,适合自动化脚本或远程抓包)、tshark
(Wireshark命令行版,保留完整协议解析能力,适合批量分析);Wireshark
(功能全面,适合深度分析复杂流量)。ethtool
增大网卡环缓冲区(如sudo ethtool -G eth0 rx 4096 tx 4096
),提升网卡接收数据的缓存能力,减少因缓冲区满导致的数据包丢失;tcpdump
,可通过-B
(BSD风格)或-C
(按文件大小分割)选项增大缓冲区(如sudo tcpdump -i eth0 -B 4096 -w capture.pcap
),避免因缓冲区不足丢失数据。sudo systemctl stop apache2
)和应用程序,释放CPU、内存资源;swappiness
默认值为60),可将其降低至10-20(sudo sysctl vm.swappiness=10
),减少磁盘I/O对抓包的影响;hdparm
工具优化磁盘性能(如sudo hdparm -W 1 /dev/sda
开启写入缓存)。修改/etc/sysctl.conf
文件,优化内核网络参数:
net.core.rmem_max=16777216
、net.core.wmem_max=16777216
(提升TCP连接的数据吞吐能力);net.ipv4.tcp_fin_timeout=30
(缩短TCP连接关闭后的等待时间,释放资源);net.ipv4.tcp_window_scaling=1
(提升高带宽、高延迟网络的传输效率)。sudo sysctl -p
使配置生效。使用iftop
(实时带宽监控)、nethogs
(按进程监控流量)、vnstat
(历史流量统计)等工具持续监控网络状态。例如,通过sudo iftop -i eth0
查看实时带宽占用,识别占用流量的进程或IP;通过sudo nethogs eth0
定位高带宽消耗的进程,针对性优化或限制其带宽(如用tc
工具限速)。