首页主机资讯怎样用Linux Sniffer诊断网络问题

怎样用Linux Sniffer诊断网络问题

时间2025-12-23 10:55:03发布访客分类主机资讯浏览1458
导读:用 Linux Sniffer 诊断网络问题的实用流程 一、准备与总体思路 明确目标:是连通性、时延/丢包、端口与服务可达、DNS 解析、还是异常流量/攻击。 选择工具:命令行首选tcpdump(轻量、可脚本化),深度分析用Wiresha...

用 Linux Sniffer 诊断网络问题的实用流程

一、准备与总体思路

  • 明确目标:是连通性时延/丢包端口与服务可达DNS 解析、还是异常流量/攻击
  • 选择工具:命令行首选tcpdump(轻量、可脚本化),深度分析用Wireshark/tshark(图形化、协议解码强),拓扑可视化可用EtherApe
  • 合法合规:抓包涉及明文数据隐私,务必取得明确授权,避免在生产环境无过滤抓取。
  • 运行权限:抓包需要原始套接字权限,通常以root或加入wireshark组运行;远程抓包时避免抓取自身SSH会话以免刷屏。
  • 基本准备命令:查看网卡tcpdump -D;选择接口**-i any/eth0**;抓少量样例**-c 100**;保存为pcap便于后续分析**-w file.pcap**;读取**-r file.pcap**。

二、快速定位路径与常用命令

  • 连通性与路径
    • 先看端到端:ping 目标;再看路由与下一跳可达性(如 ip route/get、traceroute/mtr)。
    • 抓 ICMP 与 ARP:tcpdump -i any -nn icmp or arp(定位是否TTL 超时目标不可达ARP 异常)。
  • DNS 解析
    • 抓 DNS 查询/响应:tcpdump -i any -nn port 53 -vv(看SERVFAIL/REFUSED、响应延迟、查询域名是否正确)。
  • 端口与服务可达
    • 直连测试:nc -vz 目标 80/443;抓对应端口:tcpdump -i any -nn host 目标 and port 80
    • 三次握手是否建立:tcpdump -i any -nn ‘tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-syn’(仅 SYN 泛滥常见于半开连接/DoS)。
  • HTTP/HTTPS 与应用层
    • HTTP 明文:tcpdump -i any -nn -A -s 0 ‘tcp port 80’ | egrep -i “GET|POST|HTTP/1.”(快速看请求行/首部)。
    • HTTPS:仅握手与证书:tcpdump -i any -nn -s 0 ‘tcp port 443 and (tcp[((tcp[12:1] & 0xf0) > > 2):4] = 0x16)’(过滤 TLS Handshake);内容不可读属正常(加密)。
  • 丢包与重传
    • 观察重传与重复 ACK:tcpdump -i any -nn ‘tcp[tcpflags] & tcp-ack != 0 and (tcp[((tcp[12:1] & 0xf0) > > 2):4] = 0x0004 or tcp[((tcp[12:1] & 0xf0) > > 2):4] = 0x0011)’(常见标志:ACK+RSTDup ACK)。
  • 异常流量识别
    • 突发大流量或异常协议:tcpdump -i any -nn -c 1000 ‘not port 22 and not port 80 and not port 443’(先排除SSH/HTTP/HTTPS再看“未知流量”);配合Wireshark 统计EtherApe按主机/协议可视化。

三、典型场景与抓包要点

场景 关键线索 抓包过滤与命令示例
网站访问慢或打不开 DNS 超时、TCP 握手失败、TLS 握手失败、HTTP 5xx 1) DNS:tcpdump -i any -nn port 53 -vv 2) TCP:tcpdump -i any -nn ‘host 目标 and port 80’ 3) TLS:tcpdump -i any -nn ‘tcp port 443 and (tcp[((tcp[12:1]& 0xf0)> > 2):4]=0x16)’
内网间歇性丢包 重复 ACK、快速重传、ICMP 超时 tcpdump -i any -nn ‘tcp[tcpflags] & tcp-ack != 0 and (tcp[((tcp[12:1]& 0xf0)> > 2):4]=0x0004 or tcp[((tcp[12:1]& 0xf0)> > 2):4]=0x0011)’
服务器端口未监听 目标端口返回 RST 或无响应 tcpdump -i any -nn ‘host 目标 and port 8080’(看到 RST 多为端口未开/被拒绝
疑似被攻击或异常外联 大量 SYN、ICMP 洪泛、未知协议外联 tcpdump -i any -nn ‘tcp[tcpflags] & tcp-syn != 0’ 或 ‘icmp’ 或 ‘not port 22 and not port 80 and not port 443’
DNS 解析异常 SERVFAIL/REFUSED、响应延迟大 tcpdump -i any -nn port 53 -vv(核对域名、返回码、TTL
以上命令中的过滤表达式基于tcpdump 过滤语法(host、port、proto、逻辑运算等),可按需组合。

四、高效过滤与结果判读

  • 常用过滤基元
    • 主机/网段:host 1.2.3.4;net 10.0.0.0/8
    • 端口/范围:port 80;portrange 1-1024
    • 协议:tcp、udp、icmp、arp
    • 方向:src、dst;组合:and、or、not(括号需引号或转义)
  • 实用组合示例
    • 只看某主机的 HTTP:tcpdump -i any -nn ‘host 1.2.3.4 and tcp port 80’
    • 排除 SSH 再看其他流量:tcpdump -i any -nn ‘not tcp port 22’
    • 抓取完整内容便于离线分析:tcpdump -i any -s 0 -w debug.pcap;再用 Wireshark 打开
  • 结果快速判读要点
    • 仅见 SYN 无 SYN-ACK:对端未监听/策略拒绝/中间设备拦截
    • 多次重传与 Dup ACK:链路拥塞/抖动/丢包
    • ICMP 目标不可达/超时:路径中某跳拒绝或黑洞
    • DNS 返回 SERVFAIL/REFUSED:域名不存在/配置错误/权威服务器异常
    • 抓到大量非业务端口流量:可能存在扫描/蠕虫/挖矿等异常行为

五、排错与优化建议

  • 权限与接口
    • 使用 sudo 或将用户加入wireshark组;远程抓包避免抓取自身会话(如 not port 22)。
  • 性能与存储
    • 抓包务必加过滤表达式,限制数量/时长;必要时先落盘再分析(-w),避免终端打印成为瓶颈。
  • 可视化与统计
    • 复杂问题用Wireshark协议解码/时序/统计,或用EtherApe主机-协议关系图,快速定位“谁在和谁通信、占了多少流量”。
  • 合规与风险控制
    • 抓包可能包含凭据/敏感数据,仅在授权范围内使用;生产环境建议离线分析、最小化保留周期。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 怎样用Linux Sniffer诊断网络问题
本文地址: https://pptw.com/jishu/778263.html
怎样用Linux Sniffer检测入侵行为 如何用Linux Sniffer捕获隐藏数据

游客 回复需填写必要信息