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