絡(luò)排查實(shí)戰(zhàn))
寫(xiě)這篇總結(jié)之前我先隨手翻了翻之前的幾篇筆記?;A(chǔ)概念系列連起來(lái)看前面已經(jīng)把分層模型、以太網(wǎng)、交換機(jī)轉(zhuǎn)發(fā)這些底子打過(guò)了這一篇正好接上IP地址是怎么在網(wǎng)絡(luò)里被用起來(lái)的。說(shuō)白了就是回答一個(gè)很實(shí)際的問(wèn)題——當(dāng)你點(diǎn)開(kāi)一個(gè)網(wǎng)頁(yè)、連上一個(gè)服務(wù)數(shù)據(jù)包是怎么靠IP地址一步步找到目標(biāo)的。適合剛學(xué)網(wǎng)絡(luò)的在校同學(xué)也適合工作里經(jīng)常跟網(wǎng)絡(luò)打交道但有些細(xì)節(jié)始終沒(méi)捋清楚的從業(yè)者。這一篇盡量把關(guān)鍵機(jī)制講透后面排查問(wèn)題的時(shí)候能直接派上用場(chǎng)。1. 先把IP地址放在整個(gè)網(wǎng)絡(luò)體系里的位置搞清楚1.1 IP地址解決的本質(zhì)問(wèn)題端到端尋址我們把網(wǎng)絡(luò)通信想象成寄快遞。你寄包裹的時(shí)候快遞單上要有收件人的地址。這個(gè)地址必須足夠全局可讀郵局系統(tǒng)才能一級(jí)一級(jí)把包裹送過(guò)去。IP地址扮演的就是這個(gè)角色它是網(wǎng)絡(luò)層為每一臺(tái)設(shè)備分配的邏輯地址解決的核心問(wèn)題是這個(gè)數(shù)據(jù)包應(yīng)該送到哪里。這里有兩個(gè)字要特別注意邏輯。與MAC地址燒錄在網(wǎng)卡上不同IP地址不是硬件自帶的而是由管理員或DHCP服務(wù)器分配后寫(xiě)入操作系統(tǒng)的網(wǎng)絡(luò)配置里的。這意味著它可以隨時(shí)變更、重新規(guī)劃不受物理位置限制。你在公司里換一個(gè)工位網(wǎng)線一插可能就換了一個(gè)IP但你網(wǎng)卡的MAC地址從來(lái)沒(méi)有變過(guò)。所以網(wǎng)絡(luò)層的尋址是邏輯尋址鏈路層的尋址是物理尋址二者配合才構(gòu)成了完整的通信鏈路。有了這個(gè)邏輯地址網(wǎng)絡(luò)設(shè)備主要是路由器才能做一件關(guān)鍵的事情路由決策。路由器維護(hù)一張路由表里面記錄著哪個(gè)IP段走哪個(gè)接口、下一跳是誰(shuí)。當(dāng)一個(gè)數(shù)據(jù)包到達(dá)路由器時(shí)它會(huì)提取目的IP地址查表然后把包轉(zhuǎn)發(fā)到正確的出口。這個(gè)過(guò)程在網(wǎng)絡(luò)世界里每時(shí)每刻都在發(fā)生而IP地址正是路由查找的關(guān)鍵索引。1.2 從組網(wǎng)角度看IP地址的靜態(tài)配置與動(dòng)態(tài)分配實(shí)際組網(wǎng)時(shí)IP地址怎么落到設(shè)備上主要有兩種方式靜態(tài)配置和動(dòng)態(tài)獲取。靜態(tài)配置就是管理員手動(dòng)在設(shè)備的網(wǎng)絡(luò)設(shè)置里填I(lǐng)P、掩碼、網(wǎng)關(guān)。適用于服務(wù)器、網(wǎng)絡(luò)打印機(jī)、路由器互聯(lián)接口這類(lèi)地址需要保持固定的場(chǎng)景。好處是可控性強(qiáng)壞處是規(guī)模一大就非常費(fèi)手而且容易因?yàn)槭终`造成沖突。動(dòng)態(tài)獲取靠的是DHCP動(dòng)態(tài)主機(jī)配置協(xié)議。設(shè)備開(kāi)機(jī)后發(fā)一個(gè)DHCP Discover廣播DHCP服務(wù)器收到后從地址池里挑一個(gè)空閑IP連同掩碼、網(wǎng)關(guān)、DNS一起發(fā)給設(shè)備這就是所謂的DHCP Offer。整個(gè)流程走的是四次握手Discover、Offer、Request、Ack。租約默認(rèn)一般是24小時(shí)到了續(xù)租時(shí)間設(shè)備會(huì)再發(fā)Request去更新。對(duì)終端用戶來(lái)說(shuō)完全無(wú)感知但對(duì)排障來(lái)說(shuō)DHCP這條線是非常關(guān)鍵的排查對(duì)象。家用的無(wú)線路由器之所以能插上就能上網(wǎng)就是因?yàn)樗诔鰪S時(shí)默認(rèn)開(kāi)啟了DHCP服務(wù)給你的手機(jī)電腦自動(dòng)下發(fā)了一個(gè)192.168.x.x的地址。你手動(dòng)改成靜態(tài)IP反而容易出問(wèn)題這個(gè)后面在第5章會(huì)專(zhuān)門(mén)提。2. IP地址的分類(lèi)邏輯與地址空間劃分2.1 早期分類(lèi)編址Classful Addressing時(shí)代的A/B/C類(lèi)在比較早的互聯(lián)網(wǎng)設(shè)計(jì)階段IP地址被分成了固定幾類(lèi)最常用的就是A、B、C三類(lèi)。劃分依據(jù)是地址的最前面幾位二進(jìn)制A類(lèi)首位為0網(wǎng)絡(luò)號(hào)占8位主機(jī)號(hào)占24位。范圍從1.0.0.0到126.255.255.255適合超大型網(wǎng)絡(luò)每個(gè)A類(lèi)網(wǎng)絡(luò)理論上可以容納約1677萬(wàn)臺(tái)主機(jī)。B類(lèi)前兩位為10網(wǎng)絡(luò)號(hào)占16位主機(jī)號(hào)占16位。范圍從128.0.0.0到191.255.255.255適合中型網(wǎng)絡(luò)每個(gè)網(wǎng)絡(luò)最多約6.5萬(wàn)臺(tái)主機(jī)。C類(lèi)前三位為110網(wǎng)絡(luò)號(hào)占24位主機(jī)號(hào)占8位。范圍從192.0.0.0到223.255.255.255適合小型網(wǎng)絡(luò)每個(gè)網(wǎng)絡(luò)最多254臺(tái)主機(jī)。這套分類(lèi)在教科書(shū)里講得非常清楚但實(shí)際用起來(lái)問(wèn)題特別明顯。最典型的就是一刀切導(dǎo)致的空間浪費(fèi)一個(gè)公司可能只需要500個(gè)IP地址但你得申請(qǐng)一個(gè)B類(lèi)地址段一給就是6萬(wàn)多剩下的大半都閑置了。反過(guò)來(lái)如果只有幾百臺(tái)設(shè)備卻拿到一個(gè)C類(lèi)地址段那又根本不夠用。為了解決這個(gè)供需錯(cuò)配90年代業(yè)界轉(zhuǎn)向了CIDR。2.2 CIDR與VLSM不再按類(lèi)別劃分按前綴長(zhǎng)度劃分CIDR無(wú)類(lèi)域間路由徹底打破了A/B/C的框框。它的表示法很直接IP地址后面加一個(gè)斜杠斜杠后面是前綴長(zhǎng)度即網(wǎng)絡(luò)部分占多少位。比如172.16.4.0/22表示前22位是網(wǎng)絡(luò)號(hào)后10位是主機(jī)號(hào)。這個(gè)寫(xiě)法的好處是你可以按需“切分”地址空間。比如你向某機(jī)構(gòu)申請(qǐng)到一段203.0.113.0/24的地址內(nèi)部就可以自行切成多個(gè)子網(wǎng)/25切出2個(gè)子網(wǎng)每個(gè)126臺(tái)可用主機(jī)/26切出4個(gè)子網(wǎng)每個(gè)62臺(tái)可用主機(jī)。這就是VLSM可變長(zhǎng)子網(wǎng)掩碼的核心思想不搞固定大小的桶按實(shí)際需求靈活分配。在路由器層面CIDR也帶來(lái)了一個(gè)額外福利路由聚合。以前要通告相鄰的幾個(gè)C類(lèi)段得寫(xiě)好幾條路由現(xiàn)在如果有連續(xù)的地址塊比如192.168.4.0/24、192.168.5.0/24、192.168.6.0/24、192.168.7.0/24只要這四段的上游路由行為一致就可以聚合通告為192.168.4.0/22。這樣核心路由器的路由表數(shù)量大幅減少轉(zhuǎn)發(fā)效率明顯提升。這也是我排障時(shí)喜歡把路由表show ip route summary看一眼的原因之一聚合得好不好直接影響網(wǎng)絡(luò)的收斂速度。2.3 公網(wǎng)地址與私網(wǎng)地址的劃分邏輯聊到IP地址就不能不提公網(wǎng)和私網(wǎng)。RFC 1918規(guī)定了三段始終不會(huì)被公網(wǎng)路由的私有地址范圍地址段前綴范圍默認(rèn)標(biāo)準(zhǔn)掩碼10.0.0.0/810.0.0.0 - 10.255.255.255大企業(yè)內(nèi)網(wǎng)常用255.0.0.0172.16.0.0/12172.16.0.0 - 172.31.255.255中型企業(yè)常用255.240.0.0192.168.0.0/16192.168.0.0 - 192.168.255.255家庭/小型辦公最常用255.255.0.0這些地址可以在任何人的內(nèi)網(wǎng)里重復(fù)使用。你家路由器用192.168.1.1別人家路由器也可以互相不影響因?yàn)樗鼈冊(cè)诟髯缘木钟蚓W(wǎng)里私有運(yùn)轉(zhuǎn)。問(wèn)題是訪問(wèn)互聯(lián)網(wǎng)時(shí)私網(wǎng)地址不能直接使用必須經(jīng)過(guò)NAT網(wǎng)絡(luò)地址轉(zhuǎn)換映射成公網(wǎng)地址。最典型的就是家用路由器做的端口多路復(fù)用——局域網(wǎng)里幾十臺(tái)設(shè)備共用一個(gè)公網(wǎng)IP路由器靠端口號(hào)區(qū)分是哪個(gè)內(nèi)網(wǎng)設(shè)備的流量。理解這層關(guān)系有助于以后排查很多內(nèi)網(wǎng)能通、外網(wǎng)不通的問(wèn)題先看地址是不是私網(wǎng)段再看NAT是否生效最后查公網(wǎng)側(cè)的出入方向基本就能定位到問(wèn)題點(diǎn)。3. 子網(wǎng)掩碼與網(wǎng)段計(jì)算3.1 掩碼的二進(jìn)制本質(zhì)它其實(shí)是一把尺子很多人對(duì)子網(wǎng)掩碼的理解停留在255.255.255.0就代表一個(gè)網(wǎng)段這沒(méi)錯(cuò)但不夠。掩碼真正的意義在于它定義了IP地址中哪些位屬于網(wǎng)絡(luò)號(hào)、哪些位屬于主機(jī)號(hào)。掩碼寫(xiě)成二進(jìn)制高位全是連續(xù)的1低位全是連續(xù)的0。比如255.255.255.0寫(xiě)成二進(jìn)制就是24個(gè)1后面跟8個(gè)0。要判斷兩個(gè)IP是否在同一個(gè)網(wǎng)段方法很簡(jiǎn)單把IP地址和掩碼做逐位的與運(yùn)算得到網(wǎng)絡(luò)號(hào)如果兩個(gè)IP的網(wǎng)絡(luò)號(hào)相同它們就在同一個(gè)二層范圍內(nèi)直接通信不需要經(jīng)過(guò)路由器。舉個(gè)例子。IP是192.168.1.100掩碼是255.255.255.0。192.168.1.100的二進(jìn)制是兩組八位拼接起來(lái)與掩碼做與運(yùn)算后主機(jī)號(hào)部分清零結(jié)果就是192.168.1.0也就是網(wǎng)絡(luò)號(hào)。而192.168.1.255是子網(wǎng)廣播地址。一臺(tái)主機(jī)可以用的地址范圍是192.168.1.1到192.168.1.254共254個(gè)。這里有一個(gè)值得記住的公式一個(gè)前綴長(zhǎng)度為n的子網(wǎng)里可用主機(jī)數(shù)等于2的(32-n)次方減去2。減去的兩個(gè)地址一個(gè)是網(wǎng)絡(luò)號(hào)一個(gè)是廣播地址。這是配置地址和規(guī)劃地址池時(shí)最基礎(chǔ)的計(jì)算。3.2 按需劃分子網(wǎng)的實(shí)例從/24切出兩個(gè)子網(wǎng)我們拿最常見(jiàn)的192.168.1.0/24來(lái)演示。假設(shè)你公司有行政和研發(fā)兩個(gè)部門(mén)想讓他們各自獨(dú)立、互不干擾就需要把這個(gè)網(wǎng)段切成兩個(gè)子網(wǎng)。從/24往后借一位變成/25得到兩個(gè)子網(wǎng)子網(wǎng)A192.168.1.0/25掩碼255.255.255.128可用地址1.1~1.126廣播地址1.127。子網(wǎng)B192.168.1.128/25掩碼255.255.255.128可用地址1.129~1.254廣播地址1.255。每段可用主機(jī)數(shù)從254變成126。如果你的設(shè)備數(shù)不到120臺(tái)這樣切完全夠用。如果還不夠就繼續(xù)往后借位/26可以切4段每段62臺(tái)主機(jī)/27切8段每段30臺(tái)主機(jī)/28切16段每段14臺(tái)主機(jī)。切割過(guò)程中最需要小心的是不要把廣播地址和網(wǎng)絡(luò)號(hào)當(dāng)成可用IP分配給設(shè)備。很多人配置靜態(tài)IP時(shí)隨手填了192.168.1.255或192.168.1.0結(jié)果一部分設(shè)備通信異常還一直找不到原因。這種問(wèn)題在做地址規(guī)劃時(shí)就要提前避開(kāi)。3.3 掩碼寫(xiě)錯(cuò)導(dǎo)致的假通掩碼不匹配導(dǎo)致的癥狀非常典型兩臺(tái)設(shè)備IP同段但掩碼不同其中一臺(tái)認(rèn)為對(duì)方不在同一個(gè)網(wǎng)絡(luò)里于是把發(fā)往對(duì)方的數(shù)據(jù)交給網(wǎng)關(guān)處理如果網(wǎng)關(guān)又沒(méi)有對(duì)應(yīng)的轉(zhuǎn)發(fā)規(guī)則通信就直接失敗。舉個(gè)實(shí)例。電腦A配置192.168.1.10/24電腦B配置192.168.1.20/16掩碼255.255.0.0。A認(rèn)為B就在本網(wǎng)段直接發(fā)ARP請(qǐng)求去找B的MAC地址B收到了會(huì)回但B用/16掩碼計(jì)算后認(rèn)為A在同一個(gè)大網(wǎng)段192.168.0.0/16覆蓋了1.10也能直接回。這種情況下兩邊反而能通。真出問(wèn)題的往往是更復(fù)雜的多網(wǎng)段環(huán)境B認(rèn)為目的IP 192.168.2.30另一網(wǎng)段的設(shè)備也在自己的/16范圍內(nèi)于是直接發(fā)ARP而實(shí)際上目的設(shè)備在路由器后面ARP永遠(yuǎn)得不到響應(yīng)流量就卡在B這里。這種局域網(wǎng)內(nèi)有一臺(tái)大掩碼設(shè)備造成的路由黑洞在外派支持時(shí)遇到過(guò)不止一次。查這種問(wèn)題其實(shí)很快在兩臺(tái)設(shè)備上分別看ip route或者route print比對(duì)它們對(duì)目的地址的判定是直連還是經(jīng)由網(wǎng)關(guān)就能看出掩碼是否出了偏差。4. 地址解析與報(bào)文的實(shí)際流轉(zhuǎn)4.1 ARPIP地址怎么找到MAC地址IP地址是網(wǎng)絡(luò)層的標(biāo)識(shí)但數(shù)據(jù)真正在以太網(wǎng)上傳輸時(shí)靠的是MAC地址。這就需要一個(gè)翻譯的過(guò)程由ARP地址解析協(xié)議完成。當(dāng)一臺(tái)主機(jī)要向同一網(wǎng)段的另一臺(tái)主機(jī)發(fā)包時(shí)它先查看自己的ARP緩存表。如果緩存里沒(méi)有目的IP對(duì)應(yīng)的MAC地址就向整個(gè)網(wǎng)段發(fā)一個(gè)廣播幀誰(shuí)的IP是192.168.1.20請(qǐng)把你的MAC地址告訴我。對(duì)應(yīng)設(shè)備收到后發(fā)現(xiàn)自己的IP被點(diǎn)名就單播回復(fù)一個(gè)ARP應(yīng)答告知自己的MAC地址。之后發(fā)送方把這個(gè)映射關(guān)系緩存下來(lái)后續(xù)報(bào)文直接封裝目的MAC發(fā)出。這個(gè)機(jī)制平時(shí)工作得很安靜但有幾個(gè)排查要點(diǎn)值得記牢。第一ARP表是會(huì)過(guò)期的Windows默認(rèn)緩存時(shí)間也就幾十秒到幾分鐘不等所以ping不通但緩存里卻有對(duì)方MAC這類(lèi)矛盾時(shí)常出現(xiàn)需要手動(dòng)清緩存。第二如果有人偽造ARP應(yīng)答就可能實(shí)現(xiàn)ARP欺騙把流量引到錯(cuò)誤的設(shè)備上。所以在不可信的網(wǎng)絡(luò)環(huán)境里對(duì)關(guān)鍵設(shè)備做靜態(tài)ARP綁定是有必要的。第三跨網(wǎng)段通信時(shí)數(shù)據(jù)包里的目的MAC地址是網(wǎng)關(guān)的MAC而不是最終目的主機(jī)的MAC。這一點(diǎn)初學(xué)容易混淆。4.2 數(shù)據(jù)包跨網(wǎng)段時(shí)到底發(fā)生了什么兩臺(tái)設(shè)備不在同一個(gè)網(wǎng)段時(shí)源主機(jī)會(huì)怎么處理它把自己的IP和掩碼做與運(yùn)算得出自己的網(wǎng)絡(luò)號(hào)再用目的IP和掩碼做與運(yùn)算得出目的網(wǎng)絡(luò)號(hào)兩者不一致于是判定目標(biāo)在遠(yuǎn)端。此時(shí)源主機(jī)把數(shù)據(jù)包的三層目的IP寫(xiě)為最終目標(biāo)IP但二層幀的目的MAC寫(xiě)為默認(rèn)網(wǎng)關(guān)的MAC然后把幀發(fā)到網(wǎng)關(guān)。網(wǎng)關(guān)路由器解開(kāi)二層幀看到三層目的IP查路由表確定下一跳或出接口再做一次二層封裝發(fā)給下一跳設(shè)備。這個(gè)解封裝、查表、再封裝的過(guò)程在沿途每一跳路由器上重復(fù)執(zhí)行直到到達(dá)目標(biāo)網(wǎng)段。到達(dá)目標(biāo)網(wǎng)段后路由器把數(shù)據(jù)包發(fā)給最終目標(biāo)主機(jī)前還是要靠ARP解析出目標(biāo)主機(jī)的MAC地址完成最后一跳交付。排查跨網(wǎng)段不通時(shí)我一般會(huì)分三段來(lái)看源主機(jī)到網(wǎng)關(guān)通不通、沿途路由器每一跳通不通、最后一跳到目標(biāo)主機(jī)通不通。用tracertWindows或tracerouteLinux就能把這些跳點(diǎn)逐層摸出來(lái)卡在哪一跳問(wèn)題基本就集中在哪一跳。4.3 域名解析與IP地址的配合流程平時(shí)我們幾乎不會(huì)直接輸入IP地址上網(wǎng)輸入的是域名。這里有一個(gè)容易被忽視卻非常重要的配合關(guān)系DNS把域名解析成IP應(yīng)用層拿著IP去建立連接網(wǎng)絡(luò)層再按IP尋址轉(zhuǎn)發(fā)。如果DNS掛了瀏覽器會(huì)報(bào)無(wú)法解析服務(wù)器的DNS地址這時(shí)候即使IP網(wǎng)絡(luò)完全正常你也上不了網(wǎng)。排障時(shí)有一個(gè)很基礎(chǔ)但很實(shí)用的技巧當(dāng)域名解析有問(wèn)題時(shí)先ping域名看看解析出的IP是什么再用nslookup或dig去獨(dú)立驗(yàn)證。如果nslookup能返回正確IP但瀏覽器就是打不開(kāi)那問(wèn)題往往在本地DNS緩存或應(yīng)用層而不在網(wǎng)絡(luò)本身。Windows下可以用ipconfig /flushdns清空本地緩存Linux下一般是重啟systemd-resolved或nscd服務(wù)。DNS屬于應(yīng)用層范疇但它直接決定了IP地址工作方式這整條鏈路能不能跑起來(lái)。所以做網(wǎng)絡(luò)排查時(shí)把DNS解析放進(jìn)檢查清單能省掉很多彎路。5. 實(shí)戰(zhàn)排查IP地址相關(guān)的典型問(wèn)題與速查方案5.1 IP地址沖突最經(jīng)典的翻車(chē)現(xiàn)場(chǎng)IP沖突幾乎是內(nèi)網(wǎng)靜態(tài)IP環(huán)境里最容易碰到的問(wèn)題。兩臺(tái)設(shè)備用了同一個(gè)IP表現(xiàn)非常有趣時(shí)通時(shí)斷或者一臺(tái)能上另一臺(tái)完全上不了。原因在于ARP緩存——網(wǎng)絡(luò)里的交換機(jī)或其它主機(jī)的ARP表一會(huì)兒指向這臺(tái)設(shè)備一會(huì)兒指向那臺(tái)設(shè)備數(shù)據(jù)包自然就跟著飄忽不定。排查沖突的快捷辦法是在出問(wèn)題的設(shè)備上執(zhí)行arp -a找到?jīng)_突IP對(duì)應(yīng)的MAC地址再逐一比對(duì)實(shí)際設(shè)備。更徹底的辦法是上交換機(jī)查看接入端口的MAC地址表找到這個(gè)IP對(duì)應(yīng)的所有MAC逐端口去定位。Windows系統(tǒng)碰到IP沖突時(shí)會(huì)在右下角彈窗提示但很多精簡(jiǎn)版系統(tǒng)或Linux環(huán)境沒(méi)有這個(gè)提示所以還是得靠主動(dòng)排查。5.2 配置了靜態(tài)IP但上不了網(wǎng)先查這三項(xiàng)很多人把IP從自動(dòng)獲取改成手動(dòng)填寫(xiě)之后發(fā)現(xiàn)上不了網(wǎng)而后臺(tái)又看不出什么明顯報(bào)錯(cuò)。這種場(chǎng)景下優(yōu)先檢查三個(gè)點(diǎn)掩碼、網(wǎng)關(guān)、DNS。第一掩碼對(duì)不對(duì)。如果掩碼和網(wǎng)關(guān)的掩碼不一致系統(tǒng)可能判定網(wǎng)關(guān)在“遠(yuǎn)端”直接把包發(fā)給一個(gè)不存在的下一跳。第二網(wǎng)關(guān)地址對(duì)不對(duì)。家用路由器一般是192.168.1.1或192.168.0.1但也可能是別的段比如有些定制固件是192.168.31.1。填錯(cuò)網(wǎng)關(guān)時(shí)系統(tǒng)能獲取到IP但出不去。第三DNS寫(xiě)沒(méi)寫(xiě)。很多手工配置只填了IP和掩碼DNS留空或者填錯(cuò)結(jié)果QQ這類(lèi)直連IP的軟件能上瀏覽器就是打不開(kāi)網(wǎng)頁(yè)。每次看到這類(lèi)問(wèn)題我的第一建議都是如果不能明確知道自己要配什么內(nèi)容就先用回DHCP自動(dòng)獲取讓設(shè)備自己拿地址。這樣往往能瞬間消除一多半的人為配置錯(cuò)誤。5.3 DHCP獲取不到地址從哪里看起設(shè)備連上網(wǎng)絡(luò)后拿不到IP可能的原因很多由淺入深排下來(lái)基本是網(wǎng)線或無(wú)線信號(hào)問(wèn)題、交換機(jī)端口VLAN配置問(wèn)題、DHCP服務(wù)器故障、地址池耗盡、中繼配置錯(cuò)誤。優(yōu)先查看系統(tǒng)日志和DHCP客戶端狀態(tài)。Windows下用ipconfig /release再ipconfig /renew注意觀察返回信息如果一直停留在無(wú)法聯(lián)系DHCP服務(wù)器大概率是二層鏈路或DHCP服務(wù)本身有問(wèn)題。Linux下可以查看dhclient或NetworkManager的日志。另一個(gè)常見(jiàn)坑是網(wǎng)絡(luò)中如果有多個(gè)DHCP服務(wù)器且分配策略沖突會(huì)出現(xiàn)IP拿到了但時(shí)好時(shí)壞的詭異現(xiàn)象。排查時(shí)可以用抓包工具過(guò)濾dhcp或bootp協(xié)議看看設(shè)備發(fā)出的Discover有沒(méi)有收到Offer就能快速定位是哪一側(cè)的問(wèn)題。5.4 快速自查命令速查表場(chǎng)景命令Windows / Linux看什么查看本機(jī)地址與掩碼ipconfig /all ; ip addr showIP、掩碼、網(wǎng)關(guān)是否按預(yù)期配置測(cè)試基本連通性ping 目標(biāo)IP是否收到回包丟包和延遲情況查DNS解析nslookup 域名 ; dig 域名解析出的IP是否正常查看ARP映射arp -a ; ip neigh show目標(biāo)IP對(duì)應(yīng)的MAC是否異常追蹤路徑tracert 目標(biāo) ; traceroute 目標(biāo)卡在哪一跳鏈路中哪些節(jié)點(diǎn)延遲高看路由表route print ; ip route show默認(rèn)路由和直連路由是否齊全把這張表貼在工位附近遇到日常網(wǎng)絡(luò)問(wèn)題可以先按表自查一遍很多故障其實(shí)都是配置層面的小問(wèn)題。真正要抓包的場(chǎng)景再上Wireshark去過(guò)濾arp、icmp、dhcp這些協(xié)議也不遲。在最后多提一嘴IP地址本身只是一個(gè)標(biāo)識(shí)真正讓網(wǎng)絡(luò)跑起來(lái)的是圍繞它的整套解析、尋址、轉(zhuǎn)發(fā)機(jī)制。很多看似玄學(xué)的網(wǎng)絡(luò)故障歸根結(jié)底都是掩碼算錯(cuò)、路由缺失、ARP混亂或者地址沖突這老幾樣。把這篇里的細(xì)節(jié)吃透再配合命令行去驗(yàn)證遇到問(wèn)題至少心里會(huì)有一個(gè)清晰的排查順序。我覺(jué)得對(duì)剛接觸網(wǎng)絡(luò)的同學(xué)來(lái)說(shuō)與其死背概念不如自己在家里用兩臺(tái)設(shè)備搭一個(gè)最小網(wǎng)絡(luò)親手配一次靜態(tài)IP、看一次ARP緩存的變化比看十遍書(shū)都印象深。