網路故障場景排查技巧,作為維運一定要遇事不慌!

今天就來分享Linux網路排查的常見故障場景及使用的指令工具。

當你的伺服器連不上、介面報錯、頁面載入慢、連接埠打不開…你可能第一時間會問:

“到底哪出了問題?”

別慌!看看下面6 大常見網路故障場景,告訴你如何用Linux 指令快速定位問題、高效排查故障!

本文只講伺服器網路排查思路,不講網路設備排查,那是網工的活。

1. 伺服器存取不了公網了

(1) 現象

  • ping www.baidu.com 無回應
  • curl 報錯 Could not resolve host

(2) 排查指令

ip a              # 查看是否有 IP 地址
ip route          # 查看是否有默认网关
ping 8.8.8.8      # 判断是否能 ping 通外网 IP
cat /etc/resolv.conf  # 检查 DNS 设置
  • 1.
  • 2.
  • 3.
  • 4.

(3) 分析指引

  • ip a 看到沒有IP?網路卡可能沒啟用,重新啟動下網路卡
  • ping IP 通但網域不通 → DNS 問題,檢查 /etc/resolv.conf 或使用 dig
  • DNS 伺服器寫成內網位址卻沒服務?改成 8.8.8.8 試試!

也有可能內網環境限制訪問,這些指令都沒用,趕緊找網路工程師,他幹的。

2. 服務正常但連不上

(1) 現象

  • 網頁/介面請求逾時
  • 程式無法連接到某個連接埠

(2) 排查指令

netstat -lntup             # 检查服务是否监听端口,或者用ss
netstat -lntup | grep 8080 # 查是否是你要的程序
iptables -L -n      # 检查是否被防火墙挡了
firewall-cmd --list-all   # 如果防火墙是firewalld就用这个,ubuntu使用ufw做防火墙
telnet localhost 8080  # 测试本地端口,如果通再从其他服务器测试该端口
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

(3) 分析指引

  • 服務沒監聽埠?程式沒起來or 設定錯誤
  • 監聽127.0.0.1 但別人訪問不了?改為監聽 0.0.0.0
  • 防火牆攔了?記得 firewall-cmd 或 ufw 檢查,還有雲端伺服器的安全性群組

都沒啥問題,那就重啟,最後大殺招。

3. 同一區域網路不能互ping

(1) 現象

  • A ping B 不通,但B 能ping 網關
  • 內網通訊失敗

(2) 排查指令

ip a   # 查看IP
ip route   # 查看路由
ping <对方 IP>    # 互ping
arp -a    # 看看ARP缓存
tcpdump -i eth0 icmp    # 抓到看看
cat /etc/hosts.deny    # 查看是否被限制访问
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

(3) 分析指引

  • 子網路遮罩錯了→ 路由計算出錯
  • 查看ARP 快取確認是否解析了MAC
  • 抓包看有沒有ICMP 請求發出或回應(tcpdump)
  • hosts.deny檔案也有可能攔截

還有就是網路工程師禁ping了,怎麼排查都沒用,找他,甩鍋技能得用上。

4. 網站訪問慢,頻繁卡頓

(1) 現象

  • 使用者頻繁回饋網站慢、回應慢
  • 日誌報 504 Gateway Timeout

(2) 排查指令

ping www.lige.com -c 4  # 先ping一下,测试连通性
traceroute www.liege.com   # 跟踪路由,看看经过哪些设备
curl -w "@curl-format.txt" -o /dev/null -s http://your_site  # curl检测
netstat -antp | grep ESTABLISHED | wc -l
  • 1.
  • 2.
  • 3.
  • 4.

curl-format.txt 可以列印請求耗時詳情(TTFB、連線時間等)。

(3) 分析指引

  • ping 很高延遲?線路問題
  • traceroute 某一跳延遲高/超時?網路瓶頸點
  • curl 看的是DNS → 連線→ 首包時間

終極殺招,重啟服務看看效果,不行開發優化。

5. 服務監聽正常,但外部存取不了!

(1) 現象

  • 服務正常監聽,但別人訪問不了
  • curl localhost OK,但curl 公網IP 不通

(2) 排查指令

netstat -lntup | grep 端口  # 查看端口监听情况
curl localhost:端口  # 本地端口检测
curl 公网IP:端口      # 外网检测
iptables -L
firewalld-cmd --list-all   # 防火墙检测
telnet IP  端口   # 访问处telnet检测端口,也有可能是域名访问
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

(3) 分析指引

  • 程式監聽 127.0.0.1,公網訪問不了?
  • 防火牆忘開放埠?
  • 雲端服務商的安全群組也要記得檢查!

6. 想測試頻寬是不是太慢?

(1) 現象

  • 上下跑帶寬跑不滿
  • 用戶訪問慢,但伺服器沒壓力

(2) 排查指令

iperf3 -s  # 一台服务器作为服务端
iperf3 -c <服务端 IP>
  • 1.
  • 2.

(3) 分析指引

  • 內網測速看網路線/交換器瓶頸
  • 跨區域測速可排除營運商/跨境網路問題

場景跟排查指令對照圖:

場景

推薦指令

無法存取公網

ip

, ping, ip route, dig

介面逾時/服務不可達

ss

, telnet, iptables

區域網路機器無法互通

arp

, ping, tcpdump

網站訪問慢

traceroute

, curl, netstat

服務外部無法存取

ss

, firewalld, curl

網路頻寬測試

iperf3

會用指令≠ 會排查問題。懂場景,用指令解決問題,才是高手!