网络故障排查三板斧:路由追踪、端口检查,快速定位网络问题

目录

前言:

[一、路由表探查:ip route - 网络的"导航地图"](#一、路由表探查:ip route - 网络的"导航地图")

什么是路由表?

查看IPv4路由表

查看IPv6路由表

[二、路径追踪:tracepath - 数据的"旅行日记"](#二、路径追踪:tracepath - 数据的"旅行日记")

为什么需要追踪路径?

基本用法

IPv6路径追踪

[三、端口检查:ss - 服务的"门卫登记表"](#三、端口检查:ss - 服务的"门卫登记表")

什么是端口?

查看端口状态

连接状态(State)

地址和端口

常用参数说明

四、实战故障排查流程

场景:网站访问不了

场景:SSH连接不上

五、命令对比总结

六、实用小贴士

总结


前言:

当网络不通时,别急着重启,先问问这三个命令

在网络管理和故障排查中,我们经常遇到各种连接问题。今天介绍三个强大的命令,帮你快速定位网络问题:ip routetracepathss


一、路由表探查:ip route - 网络的"导航地图"

什么是路由表?

想象一下,路由表就是你设备的导航地图,它告诉数据包:

  • 去某个地方该走哪条路

  • 不知道去哪的时候该问谁

查看IPv4路由表

bash 复制代码
[user@host ~]$ ip route
default via 192.0.2.254 dev ens3 proto static metric 1024
192.0.2.0/24 dev ens3 proto kernel scope link src 192.0.2.2
10.0.0.0/8 dev ens4 proto kernel scope link src 10.0.0.11

解读这个"地图":

  1. 第一条:默认路由

    bash 复制代码
    default via 192.0.2.254 dev ens3
  2. 第二条:直连路由

    bash 复制代码
    192.0.2.0/24 dev ens3
    • 含义 :访问192.0.2.0-192.0.2.255这个网段,直接通过ens3发送

    • 好比:给同小区邻居送信,直接投递不用经过门卫

  3. 第三条:另一个直连路由

    bash 复制代码
    10.0.0.0/8 dev ens4
    • 含义 :访问10.x.x.x这个大网段,通过ens4网卡直接发送

    • 说明这台服务器有两个网卡,连接不同网络

查看IPv6路由表

bash 复制代码
[user@host ~]$ ip -6 route
2001:db8:0:1::/64 dev ens3 proto kernel metric 256
fe80::/64 dev ens3 proto kernel metric 256
default via 2001:db8:0:1::ffff dev ens3 proto static metric 1024

IPv6路由解读:

  • 2001:db8:0:1::/64:IPv6本地网络路由

  • fe80::/64:IPv6本地链路地址路由

  • default via 2001:db8:0:1::ffff:IPv6默认网关

那些unreachable条目是系统预设的无效路由,防止数据包发往这些保留地址段。


二、路径追踪:tracepath - 数据的"旅行日记"

为什么需要追踪路径?

有时候网络不通,不是目标的问题,而是中间某个环节 出了问题。tracepath就像给数据包装了个GPS,记录它经过的每个站点。

基本用法

bash 复制代码
[user@host ~]$ tracepath access.redhat.com
 1: 192.168.1.1                           0.312ms 
 2: 100.64.0.1                            5.128ms 
 3: 10.10.10.1                           10.245ms 
 4: 71-32-28-145.rcmt.qwest.net          48.853ms asymm  5
 5: dcp-brdr-04.inet.qwest.net          109.732ms asymm  7
 6: 206.111.0.153.ptr.us.xo.net          96.245ms asymm  7
...(中间省略若干跳)...
10: bu-ether13.atlngamq46w-bcr09.tbone.rr.com 107.286ms asymm 12

看懂输出结果:

  • 第1跳192.168.1.1 - 你的家庭路由器(网关)

  • 第2跳100.64.0.1 - 运营商的第一级设备

  • 第3跳10.10.10.1 - 运营商的内部网络

  • 后续跳数:数据包在运营商骨干网中传输

关键信息:

  • 时间值:数据包到达该节点并返回的耗时(越小越好)

  • asymm:非对称路由,说明去程和回程走了不同路径(正常现象)

  • 任何一跳超时:说明问题出现在那一跳的设备上

IPv6路径追踪

bash 复制代码
[user@host ~]$ tracepath6 2001:db8:0:2::451
 1: 2001:db8:0:1::ba                     0.214ms

用法与IPv4完全相同,只是目标地址换成了IPv6格式。


三、端口检查:ss - 服务的"门卫登记表"

什么是端口?

如果把IP地址比作公司的地址,那么端口就是公司里各个部门的分机号

  • 80端口:网站服务(HTTP)

  • 22端口:远程登录(SSH)

  • 25端口:邮件发送(SMTP)

查看端口状态

bash 复制代码
[user@host ~]$ ss -ta
State    Recv-Q Send-Q    Local Address:Port    Peer Address:Port
LISTEN   0      128            *:sunrpc              *:*
LISTEN   0      128            *:ssh                 *:*
LISTEN   0      100     127.0.0.1:smtp               *:*
LISTEN   0      128            *:36889               *:*
ESTAB    0      0      172.25.250.10:ssh     172.25.254.254:59392
LISTEN   0      128            ::sunrpc              :::*
LISTEN   0      128            ::ssh                 :::*
LISTEN   0      100           ::1:smtp               :::*
LISTEN   0      128            ::34946               :::*

解读这个"登记表":

连接状态(State)

  • LISTEN :服务正在监听等待连接(像办公室有人值班)

  • ESTAB已建立的连接(正在通话中)

  • CLOSE_WAIT:连接正在关闭

  • TIME_WAIT:连接已关闭,等待清理

地址和端口

  • *:ssh:在所有IP地址上监听22端口(SSH服务)

  • 127.0.0.1:smtp:只在本地回环地址监听25端口(本地邮件服务)

  • 172.25.250.10:ssh:已建立的SSH连接,本地端口22,对方IP172.25.254.254,对方端口59392

  • :::ssh:IPv6的SSH监听

常用参数说明

参数 作用 示例
-t 显示TCP连接 ss -t
-u 显示UDP连接 ss -u
-l 只显示监听中的端口 ss -tl
-a 显示所有连接 ss -ta
-p 显示使用端口的进程 ss -tp
-n 显示数字格式(不解析名称) ss -tn

四、实战故障排查流程

场景:网站访问不了

第一步:检查基本连通性

bash 复制代码
ping www.baidu.com

如果不通,进行下一步。

第二步:检查路由表

bash 复制代码
ip route

确认有默认路由,网关地址正确。

第三步:追踪路径

bash 复制代码
tracepath www.baidu.com

看在哪一跳出现问题。

第四步:检查本地服务

bash 复制代码
ss -tlnp | grep :80

查看80端口是否被占用,网站服务是否正常监听。

场景:SSH连接不上

第一步:检查SSH服务状态

确认22端口在监听状态。

第二步:检查防火墙规则

bash 复制代码
# 如果有firewalld
firewall-cmd --list-all

# 如果有iptables
iptables -L

五、命令对比总结

命令 作用 好比
ip route 查看路由表 查看导航地图
tracepath 追踪网络路径 给数据包装GPS
ss 查看端口状态 查看门卫登记表

六、实用小贴士

  1. 路由问题 :先用ip route确认有默认网关

  2. 中间节点问题 :用tracepath找到具体哪一跳故障

  3. 服务本身问题 :用ss确认服务端口在正常监听

  4. 权限问题 :有些ss参数需要root权限

  5. IPv6环境 :记得使用-6参数或IPv6版本命令


总结

掌握这三个命令,你就能应对大部分网络连接问题:

  • 迷路了?ip route 查看地图

  • 卡在半路了?tracepath 追踪路线

  • 服务没开门?ss 检查门卫

相关推荐
大聪明-PLUS13 小时前
如何提高 FFmpeg 中的视频流解码速度
linux·嵌入式·arm·smarc
苦学编程的谢13 小时前
RabbitMQ_2_RabbitMQ快速入门
linux·centos·rabbitmq
RisunJan13 小时前
Linux命令-free命令(查看系统内存(RAM)和交换空间(Swap)使用情况)
linux·运维·服务器
Gauss松鼠会13 小时前
【GaussDB】如何从GaussDB发布包中提取出内核二进制文件
linux·数据库·database·gaussdb
大聪明-PLUS13 小时前
如何向 FFmpeg 添加编解码器
linux·嵌入式·arm·smarc
linux修理工13 小时前
vagrant file 设置固定IP并允许密码登录
java·linux·服务器
达不溜的日记13 小时前
BootLoader—基于CAN的FBL详解
网络·stm32·嵌入式硬件·mcu·车载系统·软件工程·信息与通信
·s.*13 小时前
So-arm 101机械臂训练搭建全流程
linux·ubuntu·机器人
繁华似锦respect13 小时前
C++ 设计模式之代理模式详细介绍
linux·开发语言·c++·windows·设计模式·代理模式·visual studio
似水流年 光阴已逝13 小时前
拒绝“失联”:Linux 云服务器无法登录的全链路排查手册
linux·运维·服务器