使用ARP命令來綁定IP與MAC地址
發(fā)表時(shí)間:2023-07-16 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]前言:我本來沒有想過寫關(guān)于ARP綁定的文章, 坦白的說一句, 在你理解ARP工作的原理時(shí), 這其實(shí)比較簡(jiǎn)單。 只是看到最近論壇很多人在問關(guān)于綁定IP和MAC地址的問題, 所以才決定寫這個(gè)文章,...
前言:我本來沒有想過寫關(guān)于ARP綁定的文章, 坦白的說一句, 在你理解ARP工作的原理時(shí), 這其實(shí)比較簡(jiǎn)單。 只是看到最近論壇很多人在問關(guān)于綁定IP和MAC地址的問題,
所以才決定寫這個(gè)文章, 希望能一勞永逸。
作為企業(yè)級(jí)的路由防火墻, ISA Server并沒有提供對(duì)于MAC地址的控制功能。 不過, 你可以使用Windows的命令A(yù)RP來實(shí)現(xiàn)IP地址和MAC地址的綁定。 這篇文章介紹了Windows下ARP協(xié)議工作的原理, 以及如何使用ARP命令來靜態(tài)綁定IP地址和MAC地址。
ISA Server中沒有提供對(duì)于MAC地址的控制功能, Why?這是因?yàn)镸AC地址只能在本地網(wǎng)絡(luò)中使用, 當(dāng)數(shù)據(jù)包跨越路由器時(shí), 數(shù)據(jù)包中主機(jī)的源MAC地址就會(huì)被路由器的出站接口的MAC地址所代替, 這個(gè)時(shí)候, 使用MAC地址來進(jìn)行控制就不適用了。 所以只要是企業(yè)級(jí)的硬件或者軟件防火墻, 都基本沒有提供對(duì)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地址的使用。
在這里我還是先簡(jiǎn)單的描述一下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ù)鏈路層硬件地址的通訊。
每臺(tái)主機(jī)都具有一個(gè)用于緩存MAC地址的ARP緩存列表, 你可以使用命令A(yù)RP -a或ARP -g來查看當(dāng)前的ARP緩存列表。 此ARP緩存列表是動(dòng)態(tài)更新的, 默認(rèn)情況下, 當(dāng)其中的緩存項(xiàng)超過兩分鐘沒有活動(dòng)時(shí), 此緩存項(xiàng)就會(huì)超時(shí)被刪除。 你可以使用ARP -s來靜態(tài)綁定IP地址和MAC地址, 不過在Windows server 2003和XP以前的Windows系統(tǒng)中, 就算你設(shè)置了靜態(tài)MAC地址綁定項(xiàng), 同樣會(huì)通過接收其他主機(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è)腳本文件來執(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ù)包, 如果沒有發(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)超過兩分鐘沒有活動(dòng)(沒有使用)后, 此ARP緩存將超時(shí)被刪除。
默認(rèn)情況下ARP緩存的超時(shí)時(shí)限是兩分鐘, 你可以在注冊(cè)表中進(jìn)行修改。 可以修改的鍵值有兩個(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)通過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, 也不能通過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í), 我們?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)行說明:
下圖是捕獲的數(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地址解析請(qǐng)求廣播, 詢問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地址后, 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ù)包;
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ù)包;
這一切看起來沒有任何問題?那為什么Fake的Ping會(huì)超時(shí)呢?
這一切從表明上看是沒有任何問題, 但是仔細(xì)看捕獲的數(shù)據(jù)包的以太網(wǎng)頭部, 你就會(huì)發(fā)現(xiàn)問題所在:
首先, 我們看第三個(gè)數(shù)據(jù)包, Fake(192.168.0.8)向192.168.0.1發(fā)送的Ping請(qǐng)求, 如下圖所示, Fake以自己的MAC地址為源MAC地址、192.168.0.1的MAC地址(00:03:47:F4:FC:E7)為目的MAC地址發(fā)送數(shù)據(jù)包, 這沒有任何問題。
那么看看第四個(gè)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地址。 還記得我們?cè)贗SA Server上做的IP地址(192.168.0.8)和MAC地址綁定嗎?
ISA Server直接使用自己ARP緩存中的靜態(tài)綁定項(xiàng)來發(fā)送數(shù)據(jù), 而不是使用收到的Ping請(qǐng)求數(shù)據(jù)包中的源MAC地址來作為目的地址。
因此, Fake認(rèn)為此數(shù)據(jù)包不是發(fā)給自己的, 不會(huì)處理此數(shù)據(jù)包, 所以認(rèn)為沒有Ping回復(fù)數(shù)據(jù)包, 自然就是超時(shí)了。
最后說一下,
我不推薦大家使用靜態(tài)IP地址和MAC地址的綁定, 這會(huì)帶來更多的管理負(fù)荷。 你可以利用ISA Server強(qiáng)大的身份驗(yàn)證功能, 結(jié)合IP地址來進(jìn)行管理, 這樣具有更好的效果。 也請(qǐng)不要在論壇問我ARP命令是如何使用的, Windows的幫助是最好的老師。
上面是電腦上網(wǎng)安全的一些基礎(chǔ)常識(shí),學(xué)習(xí)了安全知識(shí),幾乎可以讓你免費(fèi)電腦中毒的煩擾。