运维网络排查工具介绍与使用

作为一名运维工程师,日常工作中最令人头疼的莫过于各种网络故障。在过去一年半的运维生涯中,我积累了丰富的网络故障排查经验,今天就来和大家分享一下如何运用抓包工具(Wireshark、tcpdump)和网络排查工具(nc、lotop、telnet、ping、ss、nslookup)来解决实际问题。

一、项目背景:那些年,我们一起追过的网络故障

在运维的日常任务中,网络故障可谓五花八门:应用层报错、链路延迟、丢包,甚至部分服务不可达。记得有一次,用户反馈网站访问异常,我通过抓包工具发现数据包在防火墙出口处被丢弃,而另一边的 TCP 握手数据包显示连接一直处于半开状态。经过一番排查,最终确定问题出在防火墙策略更新后端口映射配置遗漏。从那以后,我便开始深入研究各类抓包和网络诊断工具,并在实际工作中不断总结经验。

二、抓包工具的应用:Wireshark 与 tcpdump 的实战

2.1 案例一:tcpdump 捕捉异常连接,揪出网络丢包元凶

在一次故障排查中,某个业务服务器无法与后端数据库建立稳定连接,我怀疑是网络层丢包导致。于是,我在服务器上使用 tcpdump 进行抓包,命令如下:

复制代码
[root@server ~]# tcpdump -i eth0 -nn -s 0 -w capture.pcap

其中,-i eth0 指定网卡接口,-nn 禁止将 IP 地址和端口号解析成域名和服务名,-s 0 抓取整个数据包,-w capture.pcap 将抓包结果保存到文件。

抓包完成后,我在 Wireshark 中打开 capture.pcap 文件,利用过滤器 tcp.port==3306(假设数据库使用 3306 端口),发现明显的 TCP 重传和连接中断情况。进一步检查防火墙日志,果然有部分数据包被丢弃。

小结:利用 tcpdump 抓包后再结合 Wireshark 进行详细分析,是定位网络问题的高效方法。tcpdump 命令简单灵活,可以快速捕获网络数据,而 Wireshark 的图形化界面则能让故障原因一目了然。

2.2 案例二:Wireshark 剖析 HTTP 异常,解决负载均衡配置问题

公司某业务接口返回异常,初步怀疑是中间网络设备引起的数据包重组问题。我在业务服务器上直接抓包,用 Wireshark 分析 HTTP 协议报文,发现有少量 HTTP 请求重复发送,且响应时间异常高。经过深入分析,原来是上游负载均衡配置不当,导致部分请求重复转发。调整配置后,问题顺利解决。

小结:Wireshark 提供了强大的协议解析能力,能帮助我们直观定位问题,并给出修改建议。

三、网络排查工具的应用:多工具协同作战,精准定位故障

在抓包之外,我们常用一些网络排查工具来进一步确认问题,下面分别介绍 nc、lotop、telnet、ping、ss、nslookup 的基本用法和真实案例。

3.1 Netcat (nc):万能网络工具,测试端口连通性的利器

基本用法: Netcat 是一个万能的网络工具,可以用于测试端口连通性、传输文件等。常用参数:

  • -z:仅扫描指定端口,无数据传输

  • -v:显示详细输出

案例:测试服务端口是否开放 有次排查中怀疑某服务端口不通,我使用如下命令:

复制代码
[root@server ~]# nc -zv 192.168.1.100 8080
Connection to 192.168.1.100 8080 port [tcp/*] succeeded!

成功的提示让我确认该服务端口是开放的,再进一步排查应用层问题。

3.2 Lotop:实时监控网络流量,揪出异常流量元凶

基本用法: Lotop 是一款实时监控网络流量的工具(类似 iftop、nethogs),可以直观显示各进程的流量情况。启动后可实时监控网络带宽占用。

案例:排查异常流量 有次服务器突然网络带宽异常占满,我使用 lotop 后发现某个进程持续占用大量流量,经调查是异常日志采集脚本循环上传错误数据。及时停止进程后,网络恢复正常。

复制代码
[root@server ~]# lotop
-- 实时流量监控启动 --
PID     Process         TX(KB/s)  RX(KB/s)
1234    log_uploader    1200      300
5678    nginx           50        80
...

3.3 Telnet:简单直接的 TCP 连接测试工具

基本用法: Telnet 常用于测试 TCP 连接,简单直接:

复制代码
telnet 192.168.1.100 22

如果能成功连接,则端口开放。

案例:验证远程 SSH 可用性 在一次远程维护中,我需要确认目标服务器 SSH 服务是否正常。执行如下命令:

复制代码
[root@server ~]# telnet 192.168.1.105 22
Trying 192.168.1.105...
Connected to 192.168.1.105.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.4

显示 SSH 协议版本后,说明服务正常。

3.4 Ping:检测目标主机连通性,观察延迟情况

基本用法: Ping 用于检测目标主机是否连通,同时可观察延迟情况:

复制代码
ping -c 4 8.8.8.8

-c 指定发送次数。

案例:判断网络延迟 某次用户反馈访问外部服务延迟较高,我通过 ping 命令发现丢包率达 30%,经排查发现上游链路存在问题。此时我及时通知了网络供应商。

复制代码
[root@server ~]# ping -c 4 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=115 time=25.4 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=115 time=30.1 ms
...

3.5 SS:高效显示网络连接信息,检查异常连接状态

基本用法: ss 工具用于显示网络连接信息,比 netstat 更高效。常用参数:

  • -t:显示 TCP 连接

  • -u:显示 UDP 连接

  • -l:仅显示监听状态

  • -n:不解析服务名

案例:检查异常的连接状态 一次出现 TCP 连接堆积问题时,我使用如下命令查看当前连接状态:

复制代码
[root@server ~]# ss -tunl
Netid  State      Recv-Q Send-Q Local Address:Port         Peer Address:Port        
tcp    LISTEN     0      128    0.0.0.0:80                0.0.0.0:*           
tcp    LISTEN     0      100    0.0.0.0:22                0.0.0.0:*  
...

通过查看,我发现有大量异常连接堆积在某个端口上,经进一步确认是应用层没有及时关闭连接,调整后问题解决。

3.6 Nslookup:DNS 查询,测试域名解析是否正常

基本用法: Nslookup 用于 DNS 查询,可以测试域名解析是否正常:

复制代码
nslookup www.example.com

案例:域名解析错误 有次内部服务无法通过域名访问,我通过 nslookup 检查后发现 DNS 服务器返回的 IP 地址不正确。经过检查 DNS 配置后,更正后问题得到解决。

复制代码
[root@server ~]# nslookup www.example.com
Server:         192.168.1.2
Address:        192.168.1.2#53

Non-authoritative answer:
Name:   www.example.com
Address: 93.184.216.34

四、故障排查中的问题与思考:经验总结,让运维更高效

在一年半的运维实践中,最常遇到的难题往往是故障定位不准确。通过使用上述工具,我总结了几点经验:

  1. 多工具互补:抓包工具适合数据层细查,而 telnet、ping 等工具则快速验证网络连通性;ss 和 nc 可以进一步验证端口和进程状态。结合使用能更快定位问题。

  2. 日志与数据包同步:在排查过程中,总要和系统日志、应用日志相结合,确认是否存在策略更新、应用异常等因素。

  3. 学习与积累:每次故障处理后,我都会总结经验,建立一份常见故障及处理方案的文档,以便快速响应类似问题。这不仅提高了解决问题的效率,也让我对网络协议和各工具的使用有了更深的理解。

五、总结:掌握工具,提升团队响应速度与解决能力

本文结合真实案例,从抓包工具(Wireshark、tcpdump)和网络排查工具(nc、lotop、telnet、ping、ss、nslookup)的角度,分享了如何在日常运维工作中排查网络问题。作为一名一年半经验的运维工程师,亲身经历的案例让我深刻体会到,熟练掌握这些工具不仅能帮助我们快速定位问题,还能提升整个团队的响应速度和解决能力。

希望这篇文章能对大家在遇到网络问题时提供一些思路和帮助,也欢迎大家留言讨论更多实际案例和心得体会。

相关推荐
谢平康4 小时前
docker 镜像下载的另一种方式
运维·docker·容器
你住过的屋檐5 小时前
【RabbitMQ】Linux上安装RabbitMQ详细步骤
linux·rabbitmq·ruby
王伯爵5 小时前
5G核心网(5GC)中PCC(Policy and Charging Control,策略与计费控制)
服务器·网络·5g
无名的小三轮6 小时前
RedHatLinux(2025.3.22)
linux
ssr——ssss6 小时前
网络华为HCIA+HCIP 策略路由,双点双向
网络·华为
myloveasuka7 小时前
[Linux]在vim中批量注释与批量取消注释
linux·vim
pingxiaozhao7 小时前
linux系统中fstab 各字段详细说明
linux
人机与认知实验室7 小时前
自动化与智能化的认知差异
运维·人工智能·自动化
Yang三少喜欢撸铁8 小时前
【部署k8s集群时,彻底删除calico、flannel网络插件】
网络·容器·kubernetes
Brown.alexis8 小时前
服务器本地镜像上传到阿里云远程镜像仓库
运维·服务器·阿里云