使用ARP命令來(lái)綁定IP和MAC地址 |
發(fā)布時(shí)間: 2012/5/16 20:03:46 |
作為企業(yè)級(jí)的路由防火墻,ISA Server并沒(méi)有提供對(duì)于MAC地址的控制功能。不過(guò),你可以使用Windows的命令A(yù)RP來(lái)實(shí)現(xiàn)IP地址和MAC地址的綁定。這篇文章介紹了Windows下ARP協(xié)議工作的原理,以及如何使用ARP命令來(lái)靜態(tài)綁定IP地址和MAC地址。 ISA Server中沒(méi)有提供對(duì)于MAC地址的控制功能,Why?這是因?yàn)镸AC地址只能在本地網(wǎng)絡(luò)中使用,當(dāng)數(shù)據(jù)包跨越路由器時(shí),數(shù)據(jù)包中主機(jī)的源MAC地址就會(huì)被路由器的出站接口的MAC地址所代替,這個(gè)時(shí)候,使用MAC地址來(lái)進(jìn)行控制就不適用了。所以只要是企業(yè)級(jí)的硬件或者軟件防火墻,都基本沒(méi)有提供對(duì)MAC地址的控制功能。 不過(guò)微軟也早就考慮到了這點(diǎn),在Windows中,如果你安裝了TCP/IP網(wǎng)絡(luò)協(xié)議組件,那么你就可以執(zhí)行命令A(yù)RP。ARP命令的作用是查看本機(jī)的ARP緩存、靜態(tài)綁定IP地址和MAC地址和刪除靜態(tài)綁定項(xiàng)。其實(shí)綁定IP地址和MAC地址的本意是為了減少ARP廣播流量,只是可以利用這一功能來(lái)控制IP地址的使用。 在這里我還是先簡(jiǎn)單的描述一下Windows下ARP協(xié)議的工作原理。ARP協(xié)議(Address Resolve Protocol,地址解析協(xié)議)工作在TCP/IP協(xié)議的第二層-數(shù)據(jù)鏈路層,用于將IP地址轉(zhuǎn)換為網(wǎng)絡(luò)接口的硬件地址(媒體訪問(wèn)控制地址,即MAC地址)。 無(wú)論是任何高層協(xié)議的通訊,最終都將轉(zhuǎn)換為數(shù)據(jù)鏈路層硬件地址的通訊。 每臺(tái)主機(jī)都具有一個(gè)用于緩存MAC地址的ARP緩存列表,你可以使用命令A(yù)RP -a或ARP -g來(lái)查看當(dāng)前的ARP緩存列表。此ARP緩存列表是動(dòng)態(tài)更新的,默認(rèn)情況下,當(dāng)其中的緩存項(xiàng)超過(guò)兩分鐘沒(méi)有活動(dòng)時(shí),此緩存項(xiàng)就會(huì)超時(shí)被刪除。你可以使用ARP -s來(lái)靜態(tài)綁定IP地址和MAC地址,不過(guò)在Windows server 2003和XP以前的Windows系統(tǒng)中,就算你設(shè)置了靜態(tài)MAC地址綁定項(xiàng),同樣會(huì)通過(guò)接收其他主機(jī)的數(shù)據(jù)包而更新已經(jīng)綁定的項(xiàng)。 在Windows server 2003和XP中,靜態(tài)綁定的項(xiàng)不會(huì)被動(dòng)態(tài)更新,直到TCP/IP協(xié)議終止為止,例如重啟計(jì)算機(jī) 。如果要?jiǎng)?chuàng)建永久的靜態(tài)MAC地址綁定項(xiàng),你可以寫一個(gè)腳本文件來(lái)執(zhí)行ARP靜態(tài)綁定,然后使用計(jì)劃任務(wù)在啟動(dòng)計(jì)算機(jī)時(shí)執(zhí)行該腳本即可。 例如A主機(jī)的IP地址為192.168.0.1,它現(xiàn)在需要與IP為192.168.0.8的主機(jī)(主機(jī)B)進(jìn)行通訊,那么將進(jìn)行以下動(dòng)作: A主機(jī)查詢自己的ARP緩存列表, 如果發(fā)現(xiàn)具有對(duì)應(yīng)于目的IP地址192.168.0.8的MAC地址項(xiàng),則直接使用此MAC地址項(xiàng)構(gòu)造并發(fā)送以太網(wǎng)數(shù)據(jù)包,如果沒(méi)有發(fā)現(xiàn)對(duì)應(yīng)的MAC地址項(xiàng)則繼續(xù)下一步; A主機(jī)發(fā)出ARP解析請(qǐng)求廣播,目的MAC地址是FF:FF:FF:FF:FF:FF,請(qǐng)求IP為192.168.0.8的主機(jī)回復(fù)MAC地址; B主機(jī)收到ARP解析請(qǐng)求廣播后,回復(fù)給A主機(jī)一個(gè)ARP應(yīng)答數(shù)據(jù)包,其中包含自己的IP地址和MAC地址; A接收到B主機(jī)的ARP回復(fù)后,將B主機(jī)的MAC地址放入自己的ARP緩存列表,然后使用B主機(jī)的MAC地址作為目的MAC地址,B主機(jī)的IP地址(192.168.0.8)作為目的IP地址, 構(gòu)造并發(fā)送以太網(wǎng)數(shù)據(jù)包; 如果A主機(jī)還要發(fā)送數(shù)據(jù)包給192.168.0.8, 由于在ARP緩存列表中已經(jīng)具有IP地址192.168.0.8的MAC地址,所以A主機(jī)直接使用此MAC地址發(fā)送數(shù)據(jù)包,而不再發(fā)送ARP解析請(qǐng)求廣播;當(dāng)此緩存地址項(xiàng)超過(guò)兩分鐘沒(méi)有活動(dòng)(沒(méi)有使用)后,此ARP緩存將超時(shí)被刪除。 默認(rèn)情況下ARP緩存的超時(shí)時(shí)限是兩分鐘,你可以在注冊(cè)表中進(jìn)行修改?梢孕薷牡逆I值有兩個(gè),都位于 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 修改的鍵值: 鍵值1:ArpCacheLife,類型為Dword,單位為秒,默認(rèn)值為120 鍵值2:ArpCacheMinReferencedLife,類型為Dword,單位為秒,默認(rèn)值為600 注意:這些鍵值默認(rèn)是不存在的,如果你想修改,必須自行創(chuàng)建; 修改后重啟計(jì)算機(jī)后生效 。 如果ArpCacheLife的值比ArpCacheMinReferencedLife的值大,那么ARP緩存的超時(shí)時(shí)間設(shè)置為ArpCacheLife的值;如果ArpCacheLife的值不存在或者比ArpCacheMinReferencedLife的值小,那么對(duì)于未使用的ARP緩存,超時(shí)時(shí)間設(shè)置為120秒;對(duì)于正在使用的ARP緩存,超時(shí)時(shí)間則設(shè)置為ArpCacheMinReferencedLife的值。 下圖是我們的試驗(yàn)網(wǎng)絡(luò)結(jié)構(gòu),ISA Server作為一個(gè)邊緣防火墻,內(nèi)部局域網(wǎng)(192.168.0.0/24)通過(guò)ISA Server接入Internet。在這個(gè)試驗(yàn)中,我將在ISA Server上綁定內(nèi)部客戶True的IP地址192.168.0.8和MAC地址,這樣,當(dāng)True不在線時(shí),另外一個(gè)內(nèi)部客戶Fake就算修改自己的IP地址為True的IP地址192.168.0.8,也不能通過(guò)ISA Server來(lái)上網(wǎng)。 各計(jì)算機(jī)的TCP/IP設(shè)置如下,本次試驗(yàn)不涉及DNS解析,各服務(wù)器的DNS服務(wù)器設(shè)置為空,在試驗(yàn)之前已經(jīng)確認(rèn)了網(wǎng)絡(luò)連接工作正常: ISA 2004 Firewall: LAN Interface: IP:192.168.0.1/24 DG:None MAC:00:03:47:F4:FC:E7 True(將離線): IP:192.168.0.8/24 DG:192.168.0.1 MAC:00:0D:60:C3:05:34 Fake(將修改IP地址為192.168.0.8): IP:192.168.0.8/24 DG:192.168.0.1 MAC:00:06:D0:06:05:47 首先,我在ISA Server上使用ARP -S來(lái)綁定True的IP地址和MAC地址,運(yùn)行命令: ARP -s 192.168.0.8 00-0D-60-C3-05-34 然后執(zhí)行ARP -a來(lái)查看ARP緩存列表,結(jié)果如下圖所示。你可以看到在ARP緩存列表中IP地址192.168.0.8的類型為static,這表明它是靜態(tài)項(xiàng)。此時(shí),我們?cè)贗SA Server上的綁定就成功了。 現(xiàn)在我們?cè)诳蛻魴C(jī)Fake上,將自己的IP地址修改為192.168.0.8,然后Ping ISA Server: C:\Documents and Settings\admin>ipconfig /all Windows IP Configuration Host Name . . . . . . . . . . . . : anonymous Primary Dns Suffix . . . . . . . : Node Type . . . . . . . . . . . . : Unknown IP Routing Enabled. . . . . . . . : No WINS Proxy Enabled. . . . . . . . : No Ethernet adapter 本地連接: Connection-specific DNS Suffix . : Description . . . . . . . . . . . : Intel(R) PRO/100 VE Network Connection Physical Address. . . . . . . . . : 00-06-D0-06-05-47 Dhcp Enabled. . . . . . . . . . . : No IP Address. . . . . . . . . . . . : 192.168.0.8 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 192.168.0.1 DNS Servers . . . . . . . . . . . : 192.168.0.1 C:\Documents and Settings\admin>ping 192.168.0.1 -n 2 Pinging 192.168.0.1 with 32 bytes of data: Request timed out. Request timed out. Ping statistics for 192.168.0.1: Packets: Sent = 2, Received = 0, Lost = 2 (100% loss), Ping超時(shí),Why?從Sniffer上捕獲的數(shù)據(jù)包可以更清楚的進(jìn)行說(shuō)明: 下圖是捕獲的數(shù)據(jù)包,它描述了Fake(192.168.0.8) Ping 192.168.0.1的全部過(guò)程: 由于Fake(00:06:D0:06:05:47)沒(méi)有192.168.0.1的MAC地址,所以Fake發(fā)送ARP地址解析請(qǐng)求廣播,詢問(wèn)192.168.0.1的MAC地址是什么; ISA Server(00:03:47:F4:FC:E7)使用ARP應(yīng)答回復(fù)Fake(00:06:D0:06:05:47),告訴Fake自己的IP地址(192.168.0.1)和MAC地址; 獲得192.168.0.1的MAC地址后,F(xiàn)ake(192.168.0.8)向192.168.0.1發(fā)送PING請(qǐng)求數(shù)據(jù)包; 192.168.0.1向192.168.0.8回復(fù)PING回復(fù)數(shù)據(jù)包; Fake(192.168.0.8)再次向192.168.0.1發(fā)送PING請(qǐng)求數(shù)據(jù)包; 192.168.0.1再次向192.168.0.8回復(fù)PING回復(fù)數(shù)據(jù)包; 這一切看起來(lái)沒(méi)有任何問(wèn)題?那為什么Fake的Ping會(huì)超時(shí)呢? 這一切從表明上看是沒(méi)有任何問(wèn)題,但是仔細(xì)看捕獲的數(shù)據(jù)包的以太網(wǎng)頭部,你就會(huì)發(fā)現(xiàn)問(wèn)題所在: 首先,我們看第三個(gè)數(shù)據(jù)包,F(xiàn)ake(192.168.0.8)向192.168.0.1發(fā)送的Ping請(qǐng)求,如下圖所示,F(xiàn)ake以自己的MAC地址為源MAC地址、192.168.0.1的MAC地址(00:03:47:F4:FC:E7)為目的MAC地址發(fā)送數(shù)據(jù)包,這沒(méi)有任何問(wèn)題。 那么看看第四個(gè)ISA Server回復(fù)的Ping回復(fù)數(shù)據(jù)包呢,源MAC地址是ISA Server的MAC地址(00:03:47:F4:FC:E7),這也沒(méi)有問(wèn)題,但是注意看目的MAC地址,00:0D:60:C3:05:34是離線的客戶機(jī)True的MAC地址。還記得我們?cè)贗SA Server上做的IP地址(192.168.0.8)和MAC地址綁定嗎? ISA Server直接使用自己ARP緩存中的靜態(tài)綁定項(xiàng)來(lái)發(fā)送數(shù)據(jù),而不是使用收到的Ping請(qǐng)求數(shù)據(jù)包中的源MAC地址來(lái)作為目的地址。 因此,F(xiàn)ake認(rèn)為此數(shù)據(jù)包不是發(fā)給自己的,不會(huì)處理此數(shù)據(jù)包,所以認(rèn)為沒(méi)有Ping回復(fù)數(shù)據(jù)包,自然就是超時(shí)了。 最后說(shuō)一下, 我不推薦大家使用靜態(tài)IP地址和MAC地址的綁定,這會(huì)帶來(lái)更多的管理負(fù)荷。你可以利用ISA Server強(qiáng)大的身份驗(yàn)證功能,結(jié)合IP地址來(lái)進(jìn)行管理,這樣具有更好的效果。也請(qǐng)不要在論壇問(wèn)我ARP命令是如何使用的,Windows的幫助是最好的老師。 本文出自:億恩科技【www.allwellnessguide.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |