認(rèn)清ARP原理,排除網(wǎng)絡(luò)故障
發(fā)表時(shí)間:2023-07-17 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]認(rèn)清ARP, 排除網(wǎng)絡(luò)故障 最近, 碰到一個(gè)非常奇怪的問(wèn)題, 一臺(tái)P4品牌電腦, 內(nèi)置英特爾網(wǎng)卡, 一直以來(lái)用得挺好, 瀏覽因特網(wǎng), 內(nèi)網(wǎng)的通信都很正常。 突然有一天, 發(fā)現(xiàn)這臺(tái)計(jì)算機(jī)在...
認(rèn)清ARP, 排除網(wǎng)絡(luò)故障
最近, 碰到一個(gè)非常奇怪的問(wèn)題, 一臺(tái)P4品牌電腦, 內(nèi)置英特爾網(wǎng)卡, 一直以來(lái)用得挺好, 瀏覽因特網(wǎng), 內(nèi)網(wǎng)的通信都很正常。 突然有一天, 發(fā)現(xiàn)這臺(tái)計(jì)算機(jī)在瀏覽因特網(wǎng)時(shí)時(shí)通時(shí)斷, ping因特網(wǎng)上的地址時(shí), 也是通一下, 斷一下, 但ping內(nèi)網(wǎng)時(shí)什么問(wèn)題也沒(méi)有, 和內(nèi)網(wǎng)的通信也非常正常, 就是和因特網(wǎng)通信時(shí)有這種現(xiàn)象, 非常令人費(fèi)解。 這臺(tái)電腦的IP地址為192.168.24.55, 防火墻的IP地址為192.168.24.7。
故障分析:檢查物理鏈路
我單位所有訪問(wèn)因特網(wǎng)的電腦都是通過(guò)Netscreen NS25防火墻來(lái)連接的, 如果說(shuō)是防火墻的問(wèn)題, 那其他的電腦訪問(wèn)因特網(wǎng)都挺正常, 沒(méi)有時(shí)通時(shí)斷的現(xiàn)象。 根據(jù)這臺(tái)電腦ping的現(xiàn)象來(lái)看, 問(wèn)題似乎應(yīng)該在下三層, 而時(shí)通時(shí)斷的現(xiàn)象好像是典型的物理層的問(wèn)題, 那么首先開(kāi)始檢查鏈路。
這臺(tái)電腦接在一臺(tái)Cisco三層交換機(jī)的某一個(gè)端口上, 防火墻也接在這臺(tái)三層交換機(jī)上, 在三層交換機(jī)上啟用了路由, 配置上肯定沒(méi)有問(wèn)題。 先檢查電腦到交換機(jī)的網(wǎng)線, 如果說(shuō)這根網(wǎng)線有問(wèn)題, 那么這臺(tái)電腦與內(nèi)網(wǎng)的通信也應(yīng)該有問(wèn)題, 通過(guò)對(duì)這根網(wǎng)線的測(cè)試證實(shí)沒(méi)有問(wèn)題。 防火墻到交換機(jī)的跳線就更應(yīng)該沒(méi)有問(wèn)題了, 因?yàn)槠渌碾娔X都沒(méi)有問(wèn)題。 由此可以判斷鏈路是沒(méi)有問(wèn)題的, 網(wǎng)卡會(huì)有問(wèn)題嗎?肯定也不會(huì), 因?yàn)樗鷥?nèi)網(wǎng)的通信是正常的, 所以網(wǎng)卡肯定也沒(méi)有問(wèn)題。 那么就可以排除物理層的問(wèn)題了。
故障分析:模擬數(shù)據(jù)通信
再看網(wǎng)絡(luò)層, 這臺(tái)電腦能夠訪問(wèn)因特網(wǎng), 只不過(guò)有丟包而已, 似乎網(wǎng)絡(luò)層也不應(yīng)該有問(wèn)題, 那么所有問(wèn)題似乎就集中在數(shù)據(jù)鏈路層了。 數(shù)據(jù)鏈路層的問(wèn)題會(huì)是哪里呢?思考了幾天, 毫無(wú)頭緒, 最后只好仔細(xì)地想一想網(wǎng)絡(luò)通信的過(guò)程, 看能不能找到問(wèn)題。
假設(shè)這臺(tái)電腦有一個(gè)數(shù)據(jù)包需要發(fā)送到因特網(wǎng), 那么首先它會(huì)檢查目的地址與本機(jī)地址是否在一個(gè)網(wǎng)絡(luò)中, 如果不在一個(gè)網(wǎng)絡(luò)中, 就會(huì)將數(shù)據(jù)包發(fā)送給默認(rèn)網(wǎng)關(guān)。 本案例中目的IP為因特網(wǎng)地址, 肯定不在一個(gè)網(wǎng)絡(luò)中, 所以數(shù)據(jù)包會(huì)發(fā)送給默認(rèn)網(wǎng)關(guān)。 在這里默認(rèn)網(wǎng)關(guān)為那臺(tái)Cisco三層交換機(jī), IP地址為192.168.24.10。 這時(shí)192.168.24.55這臺(tái)電腦會(huì)檢查本機(jī)的ARP表, 查找192.168.24.10所對(duì)應(yīng)的MAC地址, 如果在ARP表中沒(méi)有發(fā)現(xiàn)相應(yīng)的ARP表項(xiàng), 它就會(huì)發(fā)送一個(gè)ARP請(qǐng)求包, 并將它發(fā)送給網(wǎng)絡(luò)中的所有設(shè)備來(lái)獲得192.168.24.10的MAC地址。 由于ARP請(qǐng)求包是以廣播方式發(fā)送的, 網(wǎng)絡(luò)中的所有設(shè)備都會(huì)接收到這個(gè)包, 然后傳送給網(wǎng)絡(luò)層檢驗(yàn)。
當(dāng)Cisco三層交換機(jī)接收到這個(gè)ARP請(qǐng)求時(shí), 就會(huì)檢查本機(jī)的IP地址和ARP請(qǐng)求包中的目的IP地址是否相同, 如果相同, 交換機(jī)就會(huì)做出ARP應(yīng)答, 將它的MAC地址發(fā)送給源, 也就是192.168.24.55這臺(tái)電腦。 這臺(tái)電腦收到ARP應(yīng)答包后, 就會(huì)將交換機(jī)的IP地址(192.168.24.10)和MAC地址寫(xiě)入ARP表, 然后將交換機(jī)的MAC地址作為目的MAC地址封裝到數(shù)據(jù)包中, 并將數(shù)據(jù)包發(fā)送到交換機(jī)。 交換機(jī)在收到數(shù)據(jù)包后, 就會(huì)檢查目的IP是否在本網(wǎng)段中, 若發(fā)現(xiàn)不在本網(wǎng)段中, 就會(huì)查找路由表, 看看有沒(méi)有到目的IP的路由條目, 如果沒(méi)有, 就會(huì)將數(shù)據(jù)包發(fā)送給默認(rèn)路由。 在本案例中這臺(tái)交換機(jī)的默認(rèn)路由是那臺(tái)IP為192.168.24.7的防火墻。 所以交換機(jī)就會(huì)發(fā)送一個(gè)ARP廣播, 以獲得防火墻的MAC地址。 防火墻做出ARP應(yīng)答后, 交換機(jī)就會(huì)將防火墻的MAC地址作為目的MAC地址封裝到數(shù)據(jù)包中, 數(shù)據(jù)包就會(huì)發(fā)送到防火墻, 然后防火墻就會(huì)又重復(fù)上述過(guò)程, 將數(shù)據(jù)包發(fā)送給因特網(wǎng)上的目的地址。 這一切過(guò)程都是正常的, 沒(méi)有什么問(wèn)題。 在電腦和交換機(jī)的ARP表中都能找到相應(yīng)的ARP記錄, 用tracert命令跟蹤路由也是正常的。 那問(wèn)題究竟在什么地方呢?看來(lái)還得繼續(xù)分析。
故障分析:過(guò)濾ARP表
在數(shù)據(jù)包到達(dá)了因特網(wǎng)上的目的地址之后, 響應(yīng)的數(shù)據(jù)包要返回到這臺(tái)電腦, 那么它也應(yīng)該重復(fù)前面的過(guò)程。 返回?cái)?shù)據(jù)包先到達(dá)防火墻, 在防火墻的ARP表中尋找目的IP地址所對(duì)應(yīng)的MAC地址, 如果沒(méi)有, 就會(huì)發(fā)送ARP請(qǐng)求, 得到目的電腦的MAC地址, 將電腦的IP地址和MAC地址寫(xiě)入防火墻的ARP表, 封裝后發(fā)送給這臺(tái)電腦。 這一切看起來(lái)都是正常的, 但為什么會(huì)出現(xiàn)時(shí)通時(shí)斷的現(xiàn)象呢?由這臺(tái)電腦在內(nèi)網(wǎng)都是正常的現(xiàn)象來(lái)判斷, 在三層交換機(jī)上應(yīng)該是沒(méi)有問(wèn)題的, 只是在訪問(wèn)因特網(wǎng)時(shí)才出現(xiàn)問(wèn)題, 最后決定從防火墻上開(kāi)始檢查。
Telnet上防火墻, 檢查防火墻配置, 一切正常;檢查端口, 一切正常;檢查路由表, 也是一切正常。 疑惑中, 似乎不知該從哪里下手了。 突然間, 想起來(lái)為了防止內(nèi)網(wǎng)用戶盜用IP地址上網(wǎng), 在防火墻上做了IP地址和MAC地址的綁定!對(duì), 檢查ARP表。 于是輸入命令get arp, 顯示一大串ARP表的信息, 竟然全部是IP地址和MAC地址的靜態(tài)綁定的信息, 僅有一條動(dòng)態(tài)的, 那是防火墻的下一跳的IP地址和下一跳的MAC地址的信息, 就是沒(méi)有192.168.24.55的ARP表項(xiàng), 難道是ARP表的問(wèn)題?似乎看到了一線希望!
于是決定先清除幾個(gè)靜態(tài)綁定的ARP表項(xiàng)試試。 先用unset arp命令一連清除了6條靜態(tài)綁定的ARP表項(xiàng), 然后在那臺(tái)電腦上ping因特網(wǎng)的地址, 居然不丟包了!?困擾我?guī)滋斓膯?wèn)題難道就這樣解決了嗎?我簡(jiǎn)直有點(diǎn)不敢相信, 又讓我的同事在這臺(tái)電腦上面測(cè)試一下, 登錄QQ, 瀏覽網(wǎng)頁(yè), 收發(fā)郵件……居然一切正常, 再也沒(méi)有原來(lái)時(shí)通時(shí)斷的現(xiàn)象了!再Telnet到防火墻上, 執(zhí)行g(shù)et arp命令一看, 192.168.24.55那臺(tái)電腦的ARP表項(xiàng)赫然在目。 看來(lái)問(wèn)題真的解決了!高興之余坐下來(lái)再好好想一想原因吧。
故障溯源
這臺(tái)Netscreen NS 25防火墻最多支持128個(gè)ARP表項(xiàng), 如果不進(jìn)行靜態(tài)綁定, ARP表項(xiàng)會(huì)不斷地進(jìn)行更新, 超時(shí)的自動(dòng)會(huì)刪掉, 所以不會(huì)出現(xiàn)ARP表項(xiàng)被占滿的情況。 而如果是靜態(tài)綁定, 那么它永遠(yuǎn)就不會(huì)被清除, 永遠(yuǎn)會(huì)占據(jù)一個(gè)ARP表項(xiàng), 留給動(dòng)態(tài)使用的ARP表項(xiàng)空間就會(huì)越來(lái)越少, 直到全部占滿, 導(dǎo)致我所碰到的情況。 那么既然如此, 有朋友會(huì)問(wèn)了, 既然都占滿了, 其他的電腦就會(huì)完全不通, 為什么會(huì)出現(xiàn)時(shí)通時(shí)斷的現(xiàn)象呢?于是我將ARP表項(xiàng)數(shù)了一下, 靜態(tài)綁定的剛好達(dá)到127個(gè), 剩下一個(gè)給防火墻的下一跳的地址占用了, 注意這個(gè)是動(dòng)態(tài)的, 當(dāng)它的更新時(shí)間到了之后, 就被刪掉了, 那臺(tái)電腦就占用了這個(gè)表項(xiàng), 于是網(wǎng)絡(luò)就通了, 因?yàn)檫有其他的電腦在不斷地訪問(wèn)因特網(wǎng), 所以192.168.24.55的ARP表項(xiàng)一到達(dá)更新時(shí)間馬上就會(huì)被防火墻的下一跳的地址所占用, 這時(shí)網(wǎng)絡(luò)就不通了。 其實(shí)在這時(shí), 我單位的所有機(jī)器在訪問(wèn)因特網(wǎng)時(shí)都會(huì)出現(xiàn)時(shí)通時(shí)斷的現(xiàn)象, 只不過(guò)防火墻的下一跳的地址占用ARP表項(xiàng)的時(shí)間長(zhǎng), 因特網(wǎng)中斷的時(shí)間在大家能夠忍受的范圍內(nèi), 都沒(méi)有發(fā)覺(jué)罷了。 因?yàn)榉阑饓Φ南乱惶牡刂氛加肁RP表項(xiàng)的時(shí)間長(zhǎng), 192.168.24.55的ARP表項(xiàng)寫(xiě)不進(jìn)ARP表, 產(chǎn)生超時(shí), 所以它不通的時(shí)間就長(zhǎng)一些, 就出現(xiàn)時(shí)通時(shí)斷的現(xiàn)象了。
上面是電腦上網(wǎng)安全的一些基礎(chǔ)常識(shí),學(xué)習(xí)了安全知識(shí),幾乎可以讓你免費(fèi)電腦中毒的煩擾。