Skip to content

Linux 网络状态查询命令速查 ​

网络不通、端口被占、延迟异常,这类问题在 Linux 上有一条固定的排查路径:先确认接口与地址,再看连接与监听端口,然后查路由、测连通性、验证 DNS,必要时看流量统计与防火墙规则。本文按这条路径整理常用查询命令,标注新旧工具的对应关系与权限要求,适合作为排查时的速查参考。

新旧工具的对应关系 ​

早期发行版上的 ifconfig、netstat、route 属于 net-tools 包,该包已停止维护;现代替代来自 iproute2 包的 ip 与 ss,主流发行版均已预装。新系统上 net-tools 通常不再默认安装,脚本与文档中的旧命令按下表对应替换:

旧命令(net-tools) 新命令(iproute2) 用途
ifconfig ip addr / ip link 查看接口与 IP 地址
route / netstat -r ip route 查看路由表
netstat -tuln ss -tuln 查看监听端口
netstat -tunap ss -tunap 查看所有连接及对应进程
netstat -i ip -s link 查看接口收发统计

查看网络接口信息 ​

bash
ip addr show        # 所有接口的 IP 地址
ip -br addr         # 简要模式:每个接口一行(名称/状态/地址)
ip link show        # 接口状态(UP/DOWN)

ip -br addr 的输出比 ip addr 简洁得多,接口多时更适合快速浏览。

旧命令 ifconfig 默认只显示状态为 UP 的接口,ifconfig -a 才包含未激活接口;ip 系命令默认始终显示全部接口。

查看连接与端口占用 ​

bash
ss -tuln            # 监听中的 TCP/UDP 端口(数字格式,不做名称解析)
ss -tunap           # 所有连接及对应进程(PID 与程序名)
ss -s               # 连接统计摘要(总数、TCP/UDP 分布)

参数含义:-t TCP、-u UDP、-l 仅监听、-a 全部、-n 数字格式、-p 进程信息。-p 显示其他用户的进程需要 root 权限,普通用户只能看到自己进程的 PID。

「端口被谁占用」是这类命令最高频的场景:ss -tulnp 定位监听进程,配合 lsof -i :80(需安装 lsof)交叉确认。

查看路由表 ​

bash
ip route show       # 推荐方式
route -n            # 传统方式(需 net-tools)

排查「同一网段通、跨网段不通」时先看默认路由与目标网段路由是否存在。

测试网络连通性 ​

bash
ping -c 4 8.8.8.8   # 发送 4 个 ICMP 包后停止
ping example.com    # 顺带验证 DNS 解析

路径追踪有三个工具可选:

bash
traceroute example.com   # 需安装 traceroute
tracepath example.com   # 无需 root 权限的轻量替代
mtr example.com         # ping + traceroute 结合,持续刷新(需安装)

traceroute 传统上需要构造原始报文(raw socket)故要求 root,多数发行版通过 capability 缓解;tracepath 只使用普通 UDP 高端口 socket,任何用户都能运行,还会顺带探测路径 MTU。mtr 持续刷新每一跳的丢包与延迟统计,适合定位「间歇性劣化在哪一跳」。

DNS 查询 ​

bash
dig example.com              # 完整解析过程
dig +short example.com       # 只输出结果值,适合脚本
dig @8.8.8.8 example.com     # 指定 DNS 服务器
dig -x 8.8.8.8               # 反向解析
nslookup example.com         # 传统工具
host example.com             # 简洁输出

「ping IP 通、ping 域名不通」基本可以锁定 DNS 问题:先用 dig 确认解析结果,再用 dig @8.8.8.8 对比公共 DNS,区分本地 resolver 配置问题与域名本身的问题。dig 在 Debian/Ubuntu 属 dnsutils 包,RHEL 系属 bind-utils。

查看网络流量与统计 ​

bash
sudo iftop              # 按连接实时显示流量(需安装)
sudo nethogs            # 按进程显示带宽占用(需安装)
sar -n DEV 1 3          # 每秒采样一次共 3 次,各接口流量(sysstat 包)

iftop 与 nethogs 回答的问题不同:前者看「哪些连接在吃带宽」,后者看「哪些进程在吃带宽」。sar 的价值在于历史数据——sysstat 开启收集后可以回看流量异常时段,而不只是实时观察。

查看防火墙与 NAT 规则 ​

bash
sudo iptables -L -n -v          # 过滤规则
sudo iptables -t nat -L -n -v   # NAT 规则
sudo nft list ruleset           # nftables 全量规则

连接完全不通但接口、路由都正常时,检查防火墙是否丢弃了报文;-v 会显示每条规则的命中计数,是判断规则是否生效的直接依据。

其他常用命令 ​

命令 用途
hostname -I 快速查看本机所有 IPv4/IPv6 地址
cat /etc/resolv.conf 当前 DNS 配置
cat /etc/hosts 本地域名解析
lsof -i :80 占用 80 端口的进程(需安装 lsof)
tcpdump 抓包分析(需 root)

权限与安装说明 ​

  • 涉及进程信息(-p)、抓包(tcpdump)与防火墙规则查看的操作需要 root 权限,普通用户执行会缺失进程字段或直接报错。
  • 容器与最小化系统中多数工具未预装:Debian/Ubuntu 用 apt install,RHEL 系用 yum install,包名对照——iproute2(ip/ss)、net-tools(旧命令)、dnsutils 或 bind-utils(dig)、traceroute、mtr、iftop、nethogs、sysstat(sar)、lsof、tcpdump。

小结 ​

日常排查优先使用 ip 与 ss:两者预装、输出信息完整,且是 net-tools 停止维护后的正式继任者。定位到具体层面后再换专项工具——路径问题用 mtr,DNS 问题用 dig,带宽问题用 iftop/nethogs,报文是否到达用 tcpdump。记住「接口 → 连接 → 路由 → DNS → 流量 → 防火墙」这条路径,多数网络问题都能在三四步内定位到层面。

最近更新

基于 VitePress 构建