Linux 网络配置与故障排查:从 `ip` 命令到 `tcpdump` 抓包实战(网络工程师必备技能)

文章目录

前言

你是否遇到过:

  • 新服务器无法联网,ping 不通网关?
  • 应用提示“Connection refused”,但服务明明在运行?
  • 想查看某个端口被哪个进程占用,却不知道用什么命令?
  • 怀疑网络被劫持,想抓包分析却无从下手?

在 Linux 系统中,网络问题是运维中最常见、最紧急的故障类型。传统的 ifconfignetstat 已被现代工具取代,掌握新一代网络命令是每个运维工程师的必备技能。

本文将带你从 基础网络配置 → 高级诊断 → 抓包分析 全流程实战,精通 ipsstcpdump 等核心工具,打造“网络医生”级排障能力。


🧭 一、Linux 网络管理工具演进

传统命令现代替代所属工具包
ifconfigip addriproute2
routeip routeiproute2
netstatssiproute2
arpip neighiproute2

结论ipss 是当前 Linux 网络管理的标准工具


🛠 二、核心命令 1:ip —— 网络配置的“瑞士军刀”

ip 命令功能强大,可管理地址、路由、邻居等。

✅ 1. 查看网络接口(替代 ifconfig

ip addr show
# 或简写
ip a

输出解读:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever
  • eth0:网卡名称
  • state UP:接口已启用
  • inet 192.168.1.100/24:IP 地址和子网掩码

✅ 2. 启用/禁用网卡

sudo ip link set eth0 up    # 启用
sudo ip link set eth0 down  # 禁用

✅ 3. 配置 IP 地址

# 添加 IP
sudo ip addr add 192.168.1.101/24 dev eth0

# 删除 IP
sudo ip addr del 192.168.1.101/24 dev eth0

⚠️ 注意ip addr 配置是临时的,重启后失效。永久配置需修改 /etc/sysconfig/network-scripts/ifcfg-eth0(CentOS)或 /etc/netplan/*.yaml(Ubuntu)。


✅ 4. 查看和配置路由(替代 route

# 查看路由表
ip route show
# 或
ip r

# 添加默认网关
sudo ip route add default via 192.168.1.1 dev eth0

# 添加静态路由
sudo ip route add 10.0.0.0/8 via 192.168.1.2

✅ 5. 查看 ARP 表(替代 arp

ip neigh show
  • 显示 IP 与 MAC 地址映射
  • 可用于排查 ARP 欺骗

🔍 三、核心命令 2:ss —— 替代 netstat 的高性能工具

ss(Socket Statistics)比 netstat 更快、更详细。

✅ 1. 查看所有监听端口

ss -tuln
  • -t:TCP
  • -u:UDP
  • -l:监听中
  • -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:*

✅ 2. 查看特定端口被哪个进程占用

sudo ss -tulnp | grep :80
  • -p:显示进程信息
  • 输出中 PID/Program name 列显示占用进程

✅ 3. 查看 TCP 连接状态

ss -t state established
ss -t state time-wait
  • 用于分析连接数、排查 TIME_WAIT 过多问题

🌍 四、网络连通性测试:pingtraceroute

✅ 1. ping —— 测试网络连通性

ping -c 4 google.com
  • -c 4:发送 4 个包
  • 关注 丢包率延迟

✅ 高级用法:

ping -I eth0 8.8.8.8    # 指定从 eth0 接口发包

✅ 2. traceroute —— 跟踪路由路径

traceroute google.com
  • 显示数据包经过的每一跳(hop)
  • 可用于定位网络延迟节点

✅ 替代工具:mtr(更强大)

mtr google.com
  • 结合 pingtraceroute
  • 实时动态显示

📡 五、DNS 解析诊断:dignslookup

✅ 1. dig —— 强大的 DNS 查询工具

dig google.com
  • 查看 A 记录、权威服务器、响应时间
  • 推荐使用 +short 简化输出:
    dig +short google.com
    

✅ 2. nslookup(较老,但仍可用)

nslookup google.com

✅ 3. 检查 /etc/resolv.conf

cat /etc/resolv.conf
  • 确认 DNS 服务器配置正确

🕵️ 六、实战:tcpdump 抓包分析(网络版“黑匣子”)

tcpdump 是 Linux 下最强大的网络抓包工具,可用于深度诊断。

✅ 1. 安装 tcpdump

sudo yum install tcpdump    # CentOS
sudo apt install tcpdump    # Ubuntu

✅ 2. 基本语法

tcpdump [选项] [过滤表达式]

✅ 3. 常用命令示例

抓取指定网卡的数据包:

sudo tcpdump -i eth0

只抓取 TCP 流量:

sudo tcpdump -i eth0 tcp

抓取特定 IP 的流量:

sudo tcpdump host 192.168.1.100

抓取特定端口的流量(如 80):

sudo tcpdump port 80

抓取 HTTP 请求(显示内容):

sudo tcpdump -i eth0 -A -s 0 port 80 | grep -i "GET\|POST"
  • -A:以 ASCII 显示
  • -s 0:捕获完整数据包

保存抓包文件(供 Wireshark 分析):

sudo tcpdump -i eth0 -w network.pcap
  • 用 Wireshark 打开 network.pcap 可图形化分析

✅ 4. 过滤表达式语法

表达式说明
host 192.168.1.1指定主机
net 192.168.1.0/24指定网段
port 80指定端口
src 192.168.1.1源地址
dst port 443目标端口
tcp[tcpflags] & tcp-syn != 0抓取 SYN 包

🚨 七、实战:快速诊断网络故障

📌 场景 1:服务器无法上网

排查步骤

  1. 检查网卡状态

    ip link show eth0
    # 确认 state UP
    
  2. 检查 IP 配置

    ip addr show eth0
    # 确认有正确 IP
    
  3. 检查网关路由

    ip route
    # 确认有 default via 网关
    
  4. ping 网关

    ping 192.168.1.1
    # 通 → 问题在外部;不通 → 本地网络问题
    
  5. ping 外网(如 8.8.8.8)

    ping 8.8.8.8
    # 通但无法解析域名 → DNS 问题
    
  6. 检查 DNS

    dig google.com
    

📌 场景 2:应用无法访问(Connection Refused)

可能原因:服务未启动、端口未监听、防火墙阻止。

排查步骤

  1. 确认服务运行

    systemctl status nginx
    
  2. 检查端口监听

    ss -tuln | grep :80
    
  3. 检查防火墙

    sudo firewall-cmd --list-ports    # firewalld
    sudo ufw status                   # ufw
    
  4. 从客户端抓包

    sudo tcpdump -i eth0 port 80
    # 查看是否有 SYN 包进来,是否有 RST 响应
    

🧰 八、网络性能监控:nethogsiftop

✅ 1. nethogs —— 按进程查看带宽

sudo nethogs eth0
  • 显示每个进程的实时上传/下载速度
  • 找出“带宽杀手”

✅ 2. iftop —— 按连接查看带宽

sudo iftop -i eth0
  • 显示 IP 之间的实时流量
  • 类似网络版的 top

🎯 写在最后

掌握 ipsstcpdump 等现代网络工具,你就能:

  • 快速配置和管理网络
  • 精准诊断网络连通性、端口、DNS 问题
  • 通过抓包深入分析协议交互
  • 在故障发生时迅速定位根源

记住

  • ip a 是查看网络的起点
  • ss -tulnp 是排查端口冲突的利器
  • tcpdump 是网络问题的“终极武器”
  • 网络故障,从物理层 → 网络层 → 传输层 → 应用层”逐层排查

在企业级环境中,网络是系统的“血管”,其稳定性直接决定业务可用性。精通 Linux 网络管理,是每一位运维工程师的立身之本。


如需获取更多关于 Linux 高可用网络、VLAN 配置、IPVS 负载均衡、网络性能调优 等深度实战内容,请持续关注本专栏 《Linux企业级运维实战》 系列文章。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值