📖 知识点简介
网络是服务器的命脉,搞运维不会看网络状态,就像医生不会把脉。今天聚焦 网络接口配置、连接排查、端口监听、DNS 解析 四大场景,掌握从 ip/ss 到 tcpdump 的核心命令链。
🛠️ 核心命令整理
1️⃣ 网络接口与地址查看
| 命令 | 作用 | 旧版替代 |
|---|---|---|
ip addr |
查看所有网络接口 IP | ifconfig |
ip link |
查看接口状态(up/down) | ifconfig |
ip route |
查看路由表 | route -n |
ip neigh |
查看 ARP 缓存表 | arp -a |
2️⃣ 连接与端口监听
| 命令 | 作用 | 说明 |
|---|---|---|
ss -tunlp |
查看所有 TCP/UDP 监听端口 | 推荐,比 netstat 快 |
ss -tan |
查看所有 TCP 连接状态 | 含 LISTEN/ESTAB 等 |
ss -tunap |
查看连接对应的进程 PID | 排查端口占用利器 |
netstat -tunlp |
旧版等效命令 | 需安装 net-tools |
3️⃣ 连通性与 DNS 排查
| 命令 | 作用 |
|---|---|
ping -c 5 <host> |
测试连通性与延迟 |
curl -v <url> |
测试 HTTP 可达性(含响应头) |
telnet <host> <port> |
测试 TCP 端口是否开放 |
nc -zv <host> <port> |
更现代的端口测试(ncat/nmap) |
dig <domain> |
DNS 解析详情(推荐) |
nslookup <domain> |
简易 DNS 解析 |
host <domain> |
快速 DNS 查询 |
4️⃣ 流量抓包(排错神器)
| 命令 | 作用 |
|---|---|
tcpdump -i eth0 -nn |
抓取 eth0 流量,不解析主机名 |
tcpdump port 80 |
抓取 80 端口流量 |
tcpdump host 10.0.0.1 |
抓取与某 IP 的通信 |
tcpdump -w dump.pcap |
保存抓包文件,供 Wireshark 分析 |
🧪 实操示例
场景一:排查端口被占用
bash
# 查 8080 端口谁在用(快速定位)
ss -tunlp | grep 8080
# 输出示例:
# tcp LISTEN 0 100 0.0.0.0:8080 0.0.0.0:* users:(("java",pid=12345,fd=13))
# 优雅停止该进程
kill 12345
# 确认端口已释放
ss -tunlp | grep 8080
# 无输出即表示已释放
场景二:诊断"连不上数据库"
bash
# 1. 看本机网络接口是否正常
ip addr show eth0
# 2. 看网关是否可达
ping -c 3 10.0.0.1
# 3. 看 DNS 能否解析目标主机
dig db.internal.company.com
# 4. 测试 DB 端口是否开放
nc -zv db.internal.company.com 3306
# 5. 看路由表是否有正确路由
ip route get db.internal.company.com
场景三:检查服务是否正常启动
bash
# 快速查看 80/443 是否监听
ss -tunlp | grep -E ':(80|443)\s'
# 用 curl 验证返回状态码
curl -s -o /dev/null -w "%{http_code}" http://localhost:80
# 输出 200 表示正常
⚠️ 常见坑点 / 注意事项
-
ssvsnetstat:netstat 属于 net-tools 包,很多新系统默认不带;ss属于 iproute2 包,系统自带,优先用 ss。 -
-nn参数别忘 :不加-n时,ss 和 tcpdump 会去反向解析 DNS,导致命令响应极慢,网络差时可能卡死。 -
ip命令不显示所有接口怎么办:bash# 接口 down 了就不会出现在 ip addr 中,加参数才能看到 ip addr show dev eth0 # 指定接口 -
端口扫描安全提醒 :线上环境慎用
nmap大规模扫描,可能被 IDS 告警甚至触发防火墙封禁 IP。 -
ping 不通 ≠ 服务不可用 :很多云服务商禁 ICMP,ping 不通时改用
telnet或nc直接测端口。 -
tcpdump 权限 :抓包通常需要 root 权限,非 root 用户可以用
sudo或给cap_net_raw能力。