使用ARP命令來綁定IP和MAC地址 |
發(fā)布時(shí)間: 2012/5/16 20:03:46 |
作為企業(yè)級的路由防火墻,ISA Server并沒有提供對于MAC地址的控制功能。不過,你可以使用Windows的命令A(yù)RP來實(shí)現(xiàn)IP地址和MAC地址的綁定。這篇文章介紹了Windows下ARP協(xié)議工作的原理,以及如何使用ARP命令來靜態(tài)綁定IP地址和MAC地址。 ISA Server中沒有提供對于MAC地址的控制功能,Why?這是因?yàn)镸AC地址只能在本地網(wǎng)絡(luò)中使用,當(dāng)數(shù)據(jù)包跨越路由器時(shí),數(shù)據(jù)包中主機(jī)的源MAC地址就會被路由器的出站接口的MAC地址所代替,這個時(shí)候,使用MAC地址來進(jìn)行控制就不適用了。所以只要是企業(yè)級的硬件或者軟件防火墻,都基本沒有提供對MAC地址的控制功能。 不過微軟也早就考慮到了這點(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廣播流量,只是可以利用這一功能來控制IP地址的使用。 在這里我還是先簡單的描述一下Windows下ARP協(xié)議的工作原理。ARP協(xié)議(Address Resolve Protocol,地址解析協(xié)議)工作在TCP/IP協(xié)議的第二層-數(shù)據(jù)鏈路層,用于將IP地址轉(zhuǎn)換為網(wǎng)絡(luò)接口的硬件地址(媒體訪問控制地址,即MAC地址)。 無論是任何高層協(xié)議的通訊,最終都將轉(zhuǎn)換為數(shù)據(jù)鏈路層硬件地址的通訊。 每臺主機(jī)都具有一個用于緩存MAC地址的ARP緩存列表,你可以使用命令A(yù)RP -a或ARP -g來查看當(dāng)前的ARP緩存列表。此ARP緩存列表是動態(tài)更新的,默認(rèn)情況下,當(dāng)其中的緩存項(xiàng)超過兩分鐘沒有活動時(shí),此緩存項(xiàng)就會超時(shí)被刪除。你可以使用ARP -s來靜態(tài)綁定IP地址和MAC地址,不過在Windows server 2003和XP以前的Windows系統(tǒng)中,就算你設(shè)置了靜態(tài)MAC地址綁定項(xiàng),同樣會通過接收其他主機(jī)的數(shù)據(jù)包而更新已經(jīng)綁定的項(xiàng)。 在Windows server 2003和XP中,靜態(tài)綁定的項(xiàng)不會被動態(tài)更新,直到TCP/IP協(xié)議終止為止,例如重啟計(jì)算機(jī) 。如果要創(chuàng)建永久的靜態(tài)MAC地址綁定項(xiàng),你可以寫一個腳本文件來執(zhí)行ARP靜態(tài)綁定,然后使用計(jì)劃任務(wù)在啟動計(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)行以下動作: A主機(jī)查詢自己的ARP緩存列表, 如果發(fā)現(xiàn)具有對應(yīng)于目的IP地址192.168.0.8的MAC地址項(xiàng),則直接使用此MAC地址項(xiàng)構(gòu)造并發(fā)送以太網(wǎng)數(shù)據(jù)包,如果沒有發(fā)現(xiàn)對應(yīng)的MAC地址項(xiàng)則繼續(xù)下一步; A主機(jī)發(fā)出ARP解析請求廣播,目的MAC地址是FF:FF:FF:FF:FF:FF,請求IP為192.168.0.8的主機(jī)回復(fù)MAC地址; B主機(jī)收到ARP解析請求廣播后,回復(fù)給A主機(jī)一個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解析請求廣播;當(dāng)此緩存地址項(xiàng)超過兩分鐘沒有活動(沒有使用)后,此ARP緩存將超時(shí)被刪除。 默認(rèn)情況下ARP緩存的超時(shí)時(shí)限是兩分鐘,你可以在注冊表中進(jìn)行修改?梢孕薷牡逆I值有兩個,都位于 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的值小,那么對于未使用的ARP緩存,超時(shí)時(shí)間設(shè)置為120秒;對于正在使用的ARP緩存,超時(shí)時(shí)間則設(shè)置為ArpCacheMinReferencedLife的值。 下圖是我們的試驗(yàn)網(wǎng)絡(luò)結(jié)構(gòu),ISA Server作為一個邊緣防火墻,內(nèi)部局域網(wǎng)(192.168.0.0/24)通過ISA Server接入Internet。在這個試驗(yàn)中,我將在ISA Server上綁定內(nèi)部客戶True的IP地址192.168.0.8和MAC地址,這樣,當(dāng)True不在線時(shí),另外一個內(nèi)部客戶Fake就算修改自己的IP地址為True的IP地址192.168.0.8,也不能通過ISA Server來上網(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來綁定True的IP地址和MAC地址,運(yùn)行命令: ARP -s 192.168.0.8 00-0D-60-C3-05-34 然后執(zhí)行ARP -a來查看ARP緩存列表,結(jié)果如下圖所示。你可以看到在ARP緩存列表中IP地址192.168.0.8的類型為static,這表明它是靜態(tài)項(xiàng)。此時(shí),我們在ISA Server上的綁定就成功了。 現(xiàn)在我們在客戶機(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)行說明: 下圖是捕獲的數(shù)據(jù)包,它描述了Fake(192.168.0.8) Ping 192.168.0.1的全部過程: 由于Fake(00:06:D0:06:05:47)沒有192.168.0.1的MAC地址,所以Fake發(fā)送ARP地址解析請求廣播,詢問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請求數(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請求數(shù)據(jù)包; 192.168.0.1再次向192.168.0.8回復(fù)PING回復(fù)數(shù)據(jù)包; 這一切看起來沒有任何問題?那為什么Fake的Ping會超時(shí)呢? 這一切從表明上看是沒有任何問題,但是仔細(xì)看捕獲的數(shù)據(jù)包的以太網(wǎng)頭部,你就會發(fā)現(xiàn)問題所在: 首先,我們看第三個數(shù)據(jù)包,F(xiàn)ake(192.168.0.8)向192.168.0.1發(fā)送的Ping請求,如下圖所示,F(xiàn)ake以自己的MAC地址為源MAC地址、192.168.0.1的MAC地址(00:03:47:F4:FC:E7)為目的MAC地址發(fā)送數(shù)據(jù)包,這沒有任何問題。 那么看看第四個ISA Server回復(fù)的Ping回復(fù)數(shù)據(jù)包呢,源MAC地址是ISA Server的MAC地址(00:03:47:F4:FC:E7),這也沒有問題,但是注意看目的MAC地址,00:0D:60:C3:05:34是離線的客戶機(jī)True的MAC地址。還記得我們在ISA Server上做的IP地址(192.168.0.8)和MAC地址綁定嗎? ISA Server直接使用自己ARP緩存中的靜態(tài)綁定項(xiàng)來發(fā)送數(shù)據(jù),而不是使用收到的Ping請求數(shù)據(jù)包中的源MAC地址來作為目的地址。 因此,F(xiàn)ake認(rèn)為此數(shù)據(jù)包不是發(fā)給自己的,不會處理此數(shù)據(jù)包,所以認(rèn)為沒有Ping回復(fù)數(shù)據(jù)包,自然就是超時(shí)了。 最后說一下, 我不推薦大家使用靜態(tài)IP地址和MAC地址的綁定,這會帶來更多的管理負(fù)荷。你可以利用ISA Server強(qiáng)大的身份驗(yàn)證功能,結(jié)合IP地址來進(jìn)行管理,這樣具有更好的效果。也請不要在論壇問我ARP命令是如何使用的,Windows的幫助是最好的老師。 本文出自:億恩科技【xuefeilisp.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |