當前位置:
首頁 > 最新 > Linux 網路故障排查基礎篇

Linux 網路故障排查基礎篇

本篇文章介紹了Linux網路中故障排查的基本思路,看看你對路由的熟悉程度有多少。

回顧上篇文章:KDC 多機房 HA 架構演進

基礎概念

在運維工作中,經常會遇到這樣的問題,到 A 伺服器怎麼不通了,是不是網路有問題?然後就開始轟炸網路工程師,網路是一個大而複雜的架構,出現問題的點非常多,比如接入層交換機的埠 down 了,影響一台伺服器,接入層交換機 down 了,可能會影響一個機櫃,匯聚層交換機 down 了,可能會影響幾個機櫃,並且很多數據在公網上跑,公網的一次路由收斂一次抖動都可能會影響到伺服器的連通性,所以為了快速定位問題並解決問題,SRE 工程師需要做好伺服器側的網路排查。

網路通信模型

說到 Linux 網路通信,作為運維人員,不得不熟悉 OSI 七層和 TCP/IP 四層

對於日常運維中排查 Linux 網路故障方面用到的基本就是三層以下,下面我以通俗的方式給大家介紹下。

物理層(一層):定義物理傳輸介質的特性。這一層最底層,像定義用光纖傳輸,還是用同軸線纜傳輸之類的

數據鏈路層(二層):根據報文的目的 MAC 直接進行轉發,其實就是 MAC 地址之間的通信,據鏈路層只完成同一區域網中的不同主機之間的通信,一個 vlan 是一個廣播域,同 vlan 內的主機通過二層轉發是可以通的,此處不涉及路由。

網路層(三層):定義了能夠標識所有結點的邏輯地址即 ip,以及如何選擇合適的網間路由和交換結點,不同 vlan 之間的主機是通過三層路由進行互通的

報障前的測試

當存在網路不通的故障時,訪問出端和入端的信息是我們都要收集的,目的在於確定問題所在的主機或者網段。假如 a 不能訪問 c 而 b 能夠訪問 c,那麼很明顯問題出在 a 或 a 到 c 的網路上,而通過同一子網中的幾台機器 a、b 可以正常訪問網路,卻不能訪問 c,那麼可能是這個網路到 c 存在問題,或 c 存在問題,定位了問題所在的主機,一般有一些步驟來逐漸縮小問題範圍,最終定位問題。

Linux路由選路規則

網路問題大多數情況下都跟路由有關,那麼首先要學會看懂路由表,以下將簡單介紹下如何讀懂路由以及選路。

路由分為普通路由和策略路由,普通路由是以目的 ip 為準,和主機上的路由表進行逐條匹配,以最長匹配原則選路,如果你想根據某個目的 ip 來選擇從哪個介面出去,則需要用到策略路由Linux 系統可以同時存在 256(0-255)個路由表,而且每個路由表都各自獨立的,iproute 提供了一個路由表和名稱的對應表 (/etc/iproute2/rt_tables),可以根據需要增加路由表,數據包在傳輸時是根據 RPDB(路由策略資料庫) 內的策略決定數據包應該用哪個路由表傳輸的,通過命令 ip rule show 可以查看,此文暫不展開介紹策略路由的配置規則。

對於普通的路由匹配規則(劃重點)

如下:

伺服器是將本機 ip 與子網掩碼做與運算,得到網路地址,然後將訪問的目的地址與子網掩碼做與運算,若網路地址一致,則說明在同一網段,直接在本網段內廣播,無需路由

舉例:

結論:

訪問目的地址 A,由於網路地址相同,和本機 ip 在同一網段,則直接二層轉發,無需路由,若可以 ping 通,則證明二層沒有問題,直接進入三層路由判斷。

訪問目的地址 B,由於網路地址不同,不同 vlan 間互訪需要進行三層路由,則從上到下順序匹配選擇 10.0.0.0 這條路由,通過 eth0 埠,發送到網關 10.128.196.254,然後再通過網路設備進行選路。

Linux 網路排查步驟

1

第一步:確定二層以下是否 ok

(以伺服器單網卡為例,多網卡類似)

Ping網關地址

如果通,證明二層沒有問題,直接進入第二步三層路由判斷。

如果不通,需要進一步確認是系統配置問題還是網路問題。

系統配置檢查

1、ping 本機 ip 地址,確認網卡是否正常

2、檢查網卡配置,子網掩碼等是否配置正確,如果掩碼是 255.255.255.128,若配置成 255.255.255.0,則訪問 10.128.196.129 則會出現問題。

3、檢查本機網卡是否 up

4、檢查網卡速率是否正常以及是否是全雙工,有些可能由於網線等原因自動協商成 10Mb/s 等,也會影響訪問質量

網路側檢查

1、 交換機埠模式配置是否正常,如是否配置了 access 模式

2、 交換機 vlan 信息是否配置正確

3、 其他網路問題

以上,是針對單網卡單 ip 或者單網卡多個同段 ip(eth0:ip)的判斷方式。

如果有單網卡多個不同網段 ip(eth0.ip)這種方式,會涉及其他網路問題,如需要打 vlan 標籤,需要網路設備配置埠 trunk 模式等,排查過程略麻煩,但基本思路一致。

2

第二步:確定三層路由是否 ok

ping 非本機 ip 網段地址

系統側排查

1、 通過 route –n 查看路由表,會分多種路由,主機路由,默認路由等,根據上面介紹的匹配規則,查看路由是否配置正確

2、 如有有策略路由等,需要進一步根據匹配規則確定到目的 ip 的路由,此基礎篇暫不詳解策略路由。

3、 對方是否禁 ping,是否有白名單等,可以 ping 其他 ip 做測試

4、 通過 traceroute 或者 mtr 進行分析,看路由是否出本機到了網路設備

5、 通過 tcpdump 或者 tshark 進行抓包分析

網路側排查

1、 查看網路設備狀態

2、 查看網路路由

3、 運營商問題

4、 其他情況

小結

Linux 側的網路故障定位,只要掌握了方法是很快速而簡單的,對於 DNS 解析錯誤,對方業務埠 down 等等這些問題本文不做過多分析,問題千萬種,方法是關鍵,願本文對大家的排查思路有些許幫助。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 小米運維 的精彩文章:

TAG:小米運維 |