ICMP重定向字段的路由重定向?qū)嶒?yàn)
ICMP的重定向字段,被路由器用于通知主機(jī)去往目標(biāo)的最佳網(wǎng)關(guān),是數(shù)據(jù)鏈路上的另一臺(tái)路由器。
實(shí)驗(yàn)?zāi)康模?/strong>
1.驗(yàn)證重定向。
2.重定向?qū)χ鳈C(jī)的數(shù)據(jù)轉(zhuǎn)發(fā)的影響。
3.關(guān)閉重定向后,數(shù)據(jù)轉(zhuǎn)發(fā)過(guò)程。
實(shí)驗(yàn)拓?fù)洌?/strong>
實(shí)驗(yàn)設(shè)計(jì):
1.R2、R3、R4、R5運(yùn)行RIPv2協(xié)議,R1關(guān)閉路由功能,將默認(rèn)網(wǎng)關(guān)指向R2
2.R4、R5上各有環(huán)回接口,IP分別為4.4.4.4、5.5.5.5,所有IP地址使用/24位地址。
3.在驗(yàn)證過(guò)重定向后,關(guān)閉R2 F0/0的路由重定向功能,通過(guò)抓包,查看數(shù)據(jù)轉(zhuǎn)發(fā)路徑。
實(shí)驗(yàn)過(guò)程:
各路由器的配置在此就不寫了,直接來(lái)驗(yàn)證實(shí)驗(yàn)結(jié)果。
首先先對(duì)拓?fù)溥M(jìn)行分析,從拓?fù)渖峡?,R1發(fā)往R4的數(shù)據(jù),其最短路徑應(yīng)為R1—R3——R4;R1發(fā)往R5的數(shù)據(jù),其最短路徑應(yīng)為R1—R2—R5。我們通過(guò)抓包,來(lái)分別檢驗(yàn)到R4,R5的數(shù)據(jù)轉(zhuǎn)發(fā)路徑。當(dāng)然在開始前要做些準(zhǔn)備工作:
1.在R1上使用debug ip icmp命令來(lái)開啟debug信息。
2.關(guān)閉R2 F0/0接口的路由重定向功能,應(yīng)為該功能是默認(rèn)開啟的,命令如下:
1.關(guān)閉R2路由重定向功能時(shí)的數(shù)據(jù)傳輸路徑
1.1 在R1上ping 5.5.5.5
ping通后,看看抓包的結(jié)果,查看R1的F0/0口即可
圖1 R1 ping請(qǐng)求抓包
圖2 R1 ping應(yīng)答抓包
從請(qǐng)求及應(yīng)答包的二層頭部可以看出,R1的數(shù)據(jù)發(fā)向了R2,因?yàn)镽2運(yùn)行有RIP協(xié)議,故數(shù)據(jù)包將由R2轉(zhuǎn)給R5。#p#
1.2 在R1上ping 4.4.4.4
圖3 R1 ping 4.4.4.4 請(qǐng)求抓包
圖4 R1 ping 4.4.4.4 應(yīng)答抓包
為了更好的說(shuō)明問(wèn)題,再在R3 f0/0上進(jìn)行抓包
圖5 R3上抓取的ping請(qǐng)求包
圖6 R3上抓取的ping應(yīng)答包
由圖3可看出,R1向R4的ping請(qǐng)求首先發(fā)向了ca00.0518.0000(R2),由圖4可看出,直接向R1轉(zhuǎn)發(fā)此次ping應(yīng)答的是ca02.0518.0000(R3)。
由圖5可看出,ca01.0518.0000(R2)發(fā)送過(guò)來(lái)一個(gè)ping請(qǐng)求,由圖6可看出,對(duì)于這個(gè)ping請(qǐng)求,做出的應(yīng)答R3直接發(fā)向了ca00.0518.0000(R1)。
意即,當(dāng)關(guān)閉重定向時(shí),關(guān)于此次ping的全過(guò)程的路徑是R1—R2—R3—R4(數(shù)據(jù)到達(dá)R4,開始回包)—R3—R1。一去一回是所經(jīng)過(guò)的路徑不一樣,也就是產(chǎn)生了不對(duì)稱的流量。同時(shí),不進(jìn)行重定向,在有時(shí)間間隔的ping過(guò)程中,存在丟包顯現(xiàn),意即數(shù)據(jù)鏈路的可靠性較低。
2.開啟R2的路由重定向功能
因?yàn)槁酚芍囟ㄏ蚬δ苤饕轻槍?duì)于去往R4的數(shù)據(jù)流量,故可不再進(jìn)行ping R5的實(shí)驗(yàn)。
R1 ping 4.4.4.4,結(jié)果如圖7。由圖7中可看出,當(dāng)R1 ping 4.4.4.4后,產(chǎn)生了一條重定向提示:接收到來(lái)自123.1.1.2的重定向信息—去往4.4.4.4使用網(wǎng)關(guān)123.1.1.3。
圖7 R1 ping 4.4.4.4的debug信息
接著,在查看一下R1此時(shí)的路由表,如圖8。#p#
圖8 R1路由表
此時(shí),可發(fā)像,R1的缺省網(wǎng)關(guān)仍為123.1.1.2,只是路由表中多了一條明細(xì)信息,將去往4.4.4.4的網(wǎng)關(guān)指向了123.1.1.3。
下面將34.1.1.3、34.1.1.4也ping通,通時(shí)再ping一下34.1.1.0/24網(wǎng)段的其他地址,看看R1路由表信息,如圖9。
圖9 R1路由表
由圖9可看出,雖然,34.1.1.5及34.1.1.6是不存在的主機(jī)地址,但是仍被重定向到了R3。這是因?yàn)镽2使用的是RIP協(xié)議,擁有到達(dá)34.1.1.0/24及4.4.4.0/24網(wǎng)段的路由,因此在R2查看過(guò)自己路由表后,會(huì)將所有去往34.1.1.0/24及4.4.4.0/24網(wǎng)段的數(shù)據(jù)全部重定向到R3。在路由表中Last Use是距上一次使用時(shí)的時(shí)間,Total uses應(yīng)該是使用的頻次。
在進(jìn)行下一步的路徑驗(yàn)證之前,我們先看一下抓包工具抓出來(lái)的重定向ICMP包,如圖10。
從圖10中,從而三層頭部信息中可知這是有R2發(fā)給R1的信息,在ICMP消息中,可看出類型為5,代碼為1,校驗(yàn)和為0x2b19,重定向到123.1.1.1,再其后便表明為哪個(gè)地址進(jìn)行的重定向。
圖10 重定向ICMP抓包
現(xiàn)在開始進(jìn)行路勁驗(yàn)證,同樣還是通過(guò)分析抓到的ping包來(lái)進(jìn)行,如圖11~14。
圖11 ping R4的請(qǐng)求包
圖 12 ping R4的應(yīng)答包
圖 13 ping R5的請(qǐng)求包#p#
圖 14 ping R5的應(yīng)答包
由圖11、12可看出,去往R4的流量均直接使用R3進(jìn)行傳輸,而不再使用R2,即網(wǎng)關(guān)被重定向到R3;由圖13、14可看出,去往R5的流量仍有R2進(jìn)行處理,即網(wǎng)關(guān)仍未R2。
3.一個(gè)解決路由從定向問(wèn)題的方法
卷一中提供了一個(gè)避免路由重定向的方法,就是主機(jī)將網(wǎng)關(guān)指向自己的接口,下面開始驗(yàn)證一下,結(jié)果如圖15、16所示。
圖15 R1 ping R5(有缺省網(wǎng)關(guān))
圖 16 R2 debug信息
由圖15中debug信息可知,數(shù)據(jù)包已經(jīng)形成并發(fā)送到f0/0口(網(wǎng)關(guān)),而從圖16 R2的debug信息中,卻沒有發(fā)現(xiàn)有數(shù)據(jù)經(jīng)過(guò),且也為接受到ARP的請(qǐng)求。由此可是,在用路由器模擬主機(jī)的實(shí)驗(yàn)環(huán)境下,這個(gè)解決方案是不成立的。但是我可以肯定的說(shuō),當(dāng)主機(jī)將網(wǎng)關(guān)指向自己的以太網(wǎng)口的時(shí),再ping不同網(wǎng)段的的主機(jī)是會(huì)發(fā)出ARP請(qǐng)求的,也就是說(shuō)真實(shí)主機(jī)將網(wǎng)關(guān)指向自己的時(shí)候,在這種情況向的確可以避免路由重定向。關(guān)于主機(jī)將網(wǎng)關(guān)指向自己時(shí)的ARP實(shí)驗(yàn)結(jié)果,見下次實(shí)驗(yàn)。
當(dāng)然,在這中路由器模擬主機(jī)的環(huán)境下,采用卷一中的提示,避免路由重定向也是可實(shí)現(xiàn)的。通過(guò)上一次的代理ARP實(shí)驗(yàn)可知,當(dāng)用路由器模擬的主機(jī)在不指網(wǎng)關(guān)的時(shí)候,要與不同網(wǎng)段數(shù)據(jù)通信的時(shí)候也是會(huì)發(fā)送ARP請(qǐng)求的。因此,要先將R1的默認(rèn)網(wǎng)關(guān)清掉,然后再ping R5,結(jié)果如圖17所示。
由圖17中可發(fā)現(xiàn),當(dāng)R1 ping 5.5.5.5的時(shí)候,首先發(fā)送了關(guān)于5.5.5.5的MAC地址的ARP查詢,第一個(gè)包由于還未接到應(yīng)答,不知道二層頭部信息,因此封裝失敗。黃色的框中顯示,R1收到的關(guān)于5.5.5.5的ARP應(yīng)答,指明5.5.5.5的MAC地址是ca01.0518.0000(R2的MAC地址,因?yàn)槟J(rèn)代理ARP功能是打開的)。同樣,ping 4.4.4.4的時(shí)候,R1也會(huì)發(fā)送ARP查詢,MAC地址將由R3來(lái)代理,如圖17中的ARP表,意即去往R4的數(shù)據(jù)將交由R3來(lái)轉(zhuǎn)發(fā)。
這種做法的確避免了路由重定向,不過(guò)卻加重了網(wǎng)絡(luò)的負(fù)擔(dān),因?yàn)锳RP請(qǐng)求使用的是廣播,而在指明網(wǎng)關(guān)后,使用的均為單播信息。
另外需說(shuō)明一點(diǎn),在此實(shí)驗(yàn)中,R1發(fā)出了ARP請(qǐng)求,而R2、R3均有到達(dá)兩個(gè)網(wǎng)段的路由,只從這點(diǎn)考慮的話,R1的每個(gè)ARP請(qǐng)求應(yīng)該會(huì)接到兩個(gè)ARP應(yīng)答。但是實(shí)際上R1每個(gè)ARP請(qǐng)求只收到了一個(gè)準(zhǔn)確的最近網(wǎng)關(guān)的ARP代理應(yīng)答,而通過(guò)抓包也發(fā)現(xiàn),R2、R3均未為要使用接受ARP請(qǐng)求的端口發(fā)送數(shù)據(jù)的ARP請(qǐng)求做應(yīng)答。即R2未給向4.4.4.4的請(qǐng)求做應(yīng)答,因?yàn)槿ネ?.4.4.4的數(shù)據(jù)讓要從f0/0口(接受4.4.4.4 ARP請(qǐng)求的端口)發(fā)出;同樣R3未給向5.5.5.5的請(qǐng)求做應(yīng)答。這也就是說(shuō)路由器的代理ARP功能是為其它端口進(jìn)行代理,也就是說(shuō)當(dāng)路由器判定數(shù)據(jù)讓要從接受ARP請(qǐng)求的端口轉(zhuǎn)發(fā),將不會(huì)應(yīng)答此請(qǐng)求。
由以上過(guò)程,我又想到一個(gè)實(shí)驗(yàn),即如果R2、R3為同一個(gè)網(wǎng)絡(luò)開啟了負(fù)載均衡,那么R1會(huì)接受誰(shuí)的ARP代理,此實(shí)驗(yàn)留待下次解決。
圖 17 R1 ping R5 debug信息(無(wú)網(wǎng)關(guān))
總結(jié)
1.當(dāng)路由器從一個(gè)接口接到一個(gè)數(shù)據(jù),經(jīng)查詢過(guò)路由表,判定仍要從接收該數(shù)據(jù)接口發(fā)送該數(shù)據(jù)時(shí),將會(huì)向原目標(biāo)發(fā)送重定向的ICMP消息。
2.不使用路由重定向功能,會(huì)造成不對(duì)稱流量,并且鏈路可靠性降低。
3.主機(jī)將網(wǎng)關(guān)指向自己可避免路由重定向的問(wèn)題,但會(huì)造成ARP流量的增加。
4.路由器模擬主機(jī),在配置缺省網(wǎng)關(guān)(即使網(wǎng)關(guān)指向自己)之后,將不會(huì)發(fā)出不同網(wǎng)段的ARP請(qǐng)求,這與未配置網(wǎng)關(guān)的主機(jī)相同;而主機(jī)在將網(wǎng)關(guān)指向自己之后,會(huì)發(fā)出不同網(wǎng)段的ARP請(qǐng)求,這與未配置缺省網(wǎng)關(guān)的路由器模擬的主機(jī)相同。
5.路由器的代理ARP功能是為其它端口進(jìn)行代理的,也就是說(shuō)當(dāng)路由器判定數(shù)據(jù)仍要從接受ARP請(qǐng)求的端口轉(zhuǎn)發(fā)時(shí),將不會(huì)應(yīng)答此請(qǐng)求。