服務(wù)器網(wǎng)絡(luò)出問題怎么辦?六大網(wǎng)絡(luò)故障場景排查技巧輕松拿捏
今天分享一下Linux網(wǎng)絡(luò)排查的常見故障場景及使用的命令工具。
當你的服務(wù)器連不上、接口報錯、頁面加載慢、端口打不開……你可能第一時間會問:
“到底哪出了問題?”
別慌!看看下面6 大常見網(wǎng)絡(luò)故障場景,告訴你如何用 Linux 命令快速定位問題、高效排查故障!
本文只講服務(wù)器網(wǎng)絡(luò)排查思路,不講網(wǎng)絡(luò)設(shè)備排查,那是網(wǎng)工的活。
1. 服務(wù)器訪問不了公網(wǎng)了
(1) 現(xiàn)象
- ping www.baidu.com 無響應(yīng)
- curl 報錯 Could not resolve host
(2) 排查命令
ip a # 查看是否有 IP 地址
ip route # 查看是否有默認網(wǎng)關(guān)
ping 8.8.8.8 # 判斷是否能 ping 通外網(wǎng) IP
cat /etc/resolv.conf # 檢查 DNS 設(shè)置
(3) 分析指引
- ip a 看到?jīng)]有 IP?網(wǎng)卡可能沒啟用,重啟下網(wǎng)卡
- ping IP 通但域名不通 → DNS 問題,檢查 /etc/resolv.conf 或使用 dig
- DNS 服務(wù)器寫成內(nèi)網(wǎng)地址卻沒服務(wù)?改成 8.8.8.8 試試!
也有可能內(nèi)網(wǎng)環(huán)境限制訪問,這些命令都沒用,趕緊找網(wǎng)絡(luò)工程師,他干的。
2. 服務(wù)正常但連不上
(1) 現(xiàn)象
- 網(wǎng)頁/接口請求超時
- 程序無法連接到某端口
(2) 排查命令
netstat -lntup # 檢查服務(wù)是否監(jiān)聽端口,或者用ss
netstat -lntup | grep 8080 # 查是否是你要的程序
iptables -L -n # 檢查是否被防火墻擋了
firewall-cmd --list-all # 如果防火墻是firewalld就用這個,ubuntu使用ufw做防火墻
telnet localhost 8080 # 測試本地端口,如果通再從其他服務(wù)器測試該端口
(3) 分析指引
- 服務(wù)沒監(jiān)聽端口?程序沒起來 or 配置錯誤
- 監(jiān)聽 127.0.0.1 但別人訪問不了?改為監(jiān)聽 0.0.0.0
- 防火墻攔了?記得 firewalld-cmd 或 ufw 檢查,還有云服務(wù)器的安全組
都沒啥問題,那就重啟,最后大殺招
3. 同一局域網(wǎng)不能互 ping
(1) 現(xiàn)象
- A ping B 不通,但 B 能 ping 網(wǎng)關(guān)
- 內(nèi)網(wǎng)通信失敗
(2) 排查命令
ip a # 查看IP
ip route # 查看路由
ping <對方 IP> # 互ping
arp -a # 看看ARP緩存
tcpdump -i eth0 icmp # 抓到看看
cat /etc/hosts.deny # 查看是否被限制訪問
(3) 分析指引
- 子網(wǎng)掩碼錯了 → 路由計算出錯
- 查看 ARP 緩存確認是否解析了 MAC
- 抓包看有沒有 ICMP 請求發(fā)出或回應(yīng)(tcpdump)
- hosts.deny文件也有可能攔截
還有就是網(wǎng)絡(luò)工程師禁ping了,怎么排查都沒用,找他,甩鍋技能得用上。
4. 網(wǎng)站訪問慢,頻繁卡頓
(1) 現(xiàn)象
- 用戶頻繁反饋網(wǎng)站慢、響應(yīng)慢
- 日志報 504 Gateway Timeout
(2) 排查命令
ping www.lige.com -c 4 # 先ping一下,測試連通性
traceroute www.liege.com # 跟蹤路由,看看經(jīng)過哪些設(shè)備
curl -w "@curl-format.txt" -o /dev/null -s http://your_site # curl檢測
netstat -antp | grep ESTABLISHED | wc -l
curl-format.txt 可以打印請求耗時詳情(TTFB、連接時間等)。
(3) 分析指引
- ping 很高延遲?線路問題
- traceroute 某一跳延遲高/超時?網(wǎng)絡(luò)瓶頸點
- curl 看的是 DNS → 連接 → 首包時間
終極殺招,重啟服務(wù)看看效果,不行找開發(fā)優(yōu)化。
5. 服務(wù)監(jiān)聽正常,但外部訪問不了!
(1) 現(xiàn)象
- 服務(wù)正常監(jiān)聽,但別人訪問不了
- curl localhost OK,但 curl 公網(wǎng) IP 不通
(2) 排查命令
netstat -lntup | grep 端口 # 查看端口監(jiān)聽情況
curl localhost:端口 # 本地端口檢測
curl 公網(wǎng)IP:端口 # 外網(wǎng)檢測
iptables -L
firewalld-cmd --list-all # 防火墻檢測
telnet IP 端口 # 訪問處telnet檢測端口,也有可能是域名訪問
(3) 分析指引
- 程序監(jiān)聽 127.0.0.1,公網(wǎng)訪問不了?
- 防火墻忘開放端口?
云服務(wù)商的安全組也要記得查!
6. 想測試帶寬是不是太慢?
(1) 現(xiàn)象
- 上下行帶寬跑不滿
- 用戶訪問慢,但服務(wù)器沒壓力
(2) 排查命令
iperf3 -s # 一臺服務(wù)器作為服務(wù)端
iperf3 -c <服務(wù)端 IP>
(3) 分析指引
- 內(nèi)網(wǎng)測速看網(wǎng)線/交換機瓶頸
- 跨區(qū)域測速可排查運營商/跨境網(wǎng)絡(luò)問題
場景跟排查命令對照圖
場景 | 推薦命令 |
無法訪問公網(wǎng) | ip , ping, ip route, dig |
接口超時/服務(wù)不可達 | ss , telnet, iptables |
局域網(wǎng)機器無法互通 | arp , ping, tcpdump |
網(wǎng)站訪問慢 | traceroute , curl, netstat |
服務(wù)外部無法訪問 | ss , firewalld, curl |
網(wǎng)絡(luò)帶寬測試 | iperf3 |
會用命令 ≠ 會排查問題。懂場景,用命令解決問題,才是高手!