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 | 查看接口收发统计 |
查看网络接口信息
ip addr show # 所有接口的 IP 地址
ip -br addr # 简要模式:每个接口一行(名称/状态/地址)
ip link show # 接口状态(UP/DOWN) ip -br addr 的输出比 ip addr 简洁得多,接口多时更适合快速浏览。
旧命令 ifconfig 默认只显示状态为 UP 的接口,ifconfig -a 才包含未激活接口;ip 系命令默认始终显示全部接口。
查看连接与端口占用
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)交叉确认。
查看路由表
ip route show # 推荐方式
route -n # 传统方式(需 net-tools) 排查「同一网段通、跨网段不通」时先看默认路由与目标网段路由是否存在。
测试网络连通性
ping -c 4 8.8.8.8 # 发送 4 个 ICMP 包后停止
ping example.com # 顺带验证 DNS 解析 路径追踪有三个工具可选:
traceroute example.com # 需安装 traceroute
tracepath example.com # 无需 root 权限的轻量替代
mtr example.com # ping + traceroute 结合,持续刷新(需安装) traceroute 传统上需要构造原始报文(raw socket)故要求 root,多数发行版通过 capability 缓解;tracepath 只使用普通 UDP 高端口 socket,任何用户都能运行,还会顺带探测路径 MTU。mtr 持续刷新每一跳的丢包与延迟统计,适合定位「间歇性劣化在哪一跳」。
DNS 查询
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。
查看网络流量与统计
sudo iftop # 按连接实时显示流量(需安装)
sudo nethogs # 按进程显示带宽占用(需安装)
sar -n DEV 1 3 # 每秒采样一次共 3 次,各接口流量(sysstat 包) iftop 与 nethogs 回答的问题不同:前者看「哪些连接在吃带宽」,后者看「哪些进程在吃带宽」。sar 的价值在于历史数据——sysstat 开启收集后可以回看流量异常时段,而不只是实时观察。
查看防火墙与 NAT 规则
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 → 流量 → 防火墙」这条路径,多数网络问题都能在三四步内定位到层面。