文章目录
前言
在 Linux 服务器运维中,网络问题是最常见、最棘手的故障类型之一。你是否曾遇到过:
- 服务器无法访问外部网络?
- 客户端连不上你的 Web 服务?
- 网络延迟高,但
ping却正常? - 怀疑有异常连接,却不知如何排查?
Linux 提供了一整套强大的网络诊断工具,但很多用户仍停留在 ifconfig 和 netstat 的“上古时代”,对现代工具如 ip、ss、tcpdump 缺乏系统认知。
本文将带你从零构建 Linux 网络排查知识体系,深入讲解核心命令的使用场景、输出解读与实战技巧,助你成为“网络问题终结者”。
🧭 一、Linux 网络工具演进:告别 ifconfig,拥抱 ip
传统工具(如 ifconfig、netstat)已被标记为过时(deprecated),现代 Linux 系统推荐使用:
| 旧命令 | 新命令 | 所属工具包 |
|---|---|---|
ifconfig | ip | iproute2 |
netstat | ss | iproute2 |
| —— | arp → ip neigh | iproute2 |
✅ 建议:新项目/服务器统一使用
ip和ss,性能更好,功能更全。
🔧 二、核心网络命令详解
1. ip 命令:网络配置的“全能选手”
ip 是 ifconfig 的现代替代品,功能涵盖地址、路由、邻居、隧道等。
✅ 查看网络接口
ip link show
- 显示所有网络接口(物理/虚拟)及其状态(UP/DOWN)。
✅ 查看 IP 地址
ip addr show
# 或简写
ip a
输出示例:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default
inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0
inet:IPv4 地址/24:子网掩码(255.255.255.0)scope global:全局可访问
✅ 临时配置 IP(重启失效)
sudo ip addr add 192.168.1.101/24 dev eth0
sudo ip link set eth0 up
✅ 查看路由表
ip route show
# 或
ip r
输出:
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100
default via:默认网关- 若无默认路由,服务器无法访问外网!
2. ss 命令:Socket 状态查看器(netstat 替代品)
ss(Socket Statistics)比 netstat 更快、更高效,尤其适合高并发场景。
✅ 查看所有监听端口
ss -tuln
-t:TCP-u:UDP-l:监听中(LISTEN)-n:不解析服务名(显示端口号)
输出示例:
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
tcp LISTEN 0 128 127.0.0.1:3306 0.0.0.0:*
0.0.0.0:22:SSH 服务监听所有接口127.0.0.1:3306:MySQL 仅本地访问
✅ 查看所有 TCP 连接(含 ESTABLISHED)
ss -tulnp
-p:显示进程信息(需 root 权限)
✅ 查看特定端口
ss -tuln | grep :80
✅ 最佳实践:用
ss替代netstat -tulnp,速度提升显著。
3. ping —— 连通性测试基础
ping google.com
ping 192.168.1.1
✅ 关键指标:
- 丢包率(Packet loss):>0% 表示网络不稳定
- 延迟(ms):越低越好
💡 高级用法:
ping -c 4 google.com # 只发4个包
ping -I eth0 8.8.8.8 # 指定从 eth0 接口发出
⚠️ 注意:某些服务器禁用了 ICMP(ping),
ping通≠服务可用。
4. traceroute / tracepath —— 路径追踪
traceroute google.com
- 显示数据包从本机到目标的每一跳(hop) 及延迟。
✅ 用途:
- 定位网络延迟发生在哪一跳
- 判断是否绕路(如跨境线路)
💡 替代命令(无需 root):
tracepath google.com
5. dig / nslookup —— DNS 解析诊断
✅ 使用 dig(推荐)
dig google.com
输出关键字段:
QUESTION SECTION:查询的域名ANSWER SECTION:返回的 IPSERVER:使用的 DNS 服务器
✅ 查看特定记录
dig MX example.com # 邮件服务器
dig CNAME cdn.example.com
✅ 提示:若
dig返回NXDOMAIN,说明域名不存在或 DNS 配置错误。
6. tcpdump —— 网络抓包神器(Wireshark 命令行版)
✅ 安装
sudo apt install tcpdump # Debian/Ubuntu
sudo yum install tcpdump # CentOS/RHEL
✅ 基本用法
# 抓取 eth0 接口所有包
sudo tcpdump -i eth0
# 抓取指定端口(如 80)
sudo tcpdump -i eth0 port 80
# 抓取特定主机
sudo tcpdump -i eth0 host 192.168.1.100
# 保存到文件(供 Wireshark 分析)
sudo tcpdump -i eth0 -w capture.pcap
✅ 高级过滤
# 抓取 TCP SYN 包(新连接)
sudo tcpdump -i eth0 'tcp[tcpflags] & tcp-syn != 0'
# 抓取 HTTP 请求
sudo tcpdump -i eth0 -A 'tcp port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420)'
✅ 实战场景:怀疑有 DDoS 攻击?用
tcpdump抓包分析源 IP 分布。
🚀 三、经典网络问题排查流程
📌 场景 1:服务器无法上网
排查步骤:
-
检查接口状态:
ip link show eth0→ 确认是否为
UP状态。 -
检查 IP 配置:
ip addr show eth0→ 是否有正确 IP 和子网掩码?
-
检查默认网关:
ip route show→ 是否有
default via? -
测试网关连通性:
ping 192.168.1.1→ 通?继续;不通?检查物理连接或交换机。
-
测试 DNS 解析:
dig google.com→ 无返回?检查
/etc/resolv.conf。 -
测试外网连通性:
ping 8.8.8.8
📌 场景 2:服务无法访问(如 Web 服务 80 端口)
排查步骤:
-
服务是否在监听?
ss -tulnp | grep :80→ 无输出?服务未启动或绑定错接口。
-
防火墙是否放行?
sudo iptables -L -n | grep 80 # 或 firewalld sudo firewall-cmd --list-ports -
本地能否访问?
curl http://localhost→ 通?问题在外部网络;不通?服务配置错误。
-
从客户端
telnet测试端口telnet your-server-ip 80→ 连接失败?网络或防火墙问题。
📊 四、命令速查表
| 功能 | 推荐命令 |
|---|---|
| 查看网络接口 | ip link show |
| 查看 IP 地址 | ip addr show |
| 查看路由表 | ip route show |
| 查看端口监听 | ss -tuln |
| 查看所有连接 | ss -tulnp |
| 测试连通性 | ping |
| 追踪路径 | traceroute 或 tracepath |
| DNS 诊断 | dig |
| 网络抓包 | tcpdump |
🎯 写在最后
网络是系统的“神经系统”,一旦出问题,影响巨大。掌握 ip、ss、tcpdump 等现代工具,不仅能快速定位故障,还能深入理解 TCP/IP 协议的工作机制。
记住排查口诀:
- 先本地,后远程
- 先配置,后连通
- 先服务,后防火墙
- 抓包定乾坤
不要依赖图形化工具,命令行才是运维的终极武器。
如需获取更多关于 Linux 内核调优、企业级服务部署、自动化运维与安全加固 等深度实战内容,请持续关注本专栏 《Linux企业级运维实战》 系列文章。
977

被折叠的 条评论
为什么被折叠?



