不久前,一位朋友想把他管理的局域網出口全部進行IP和MAC地址綁定,以防止非法用戶上網。該局域網是用Linux實現Internet接入和管理。整個網絡包括數棟樓房,分別通過交換機級聯到總的Internet出口。網絡使用了10.0.0.x到10.0.3.x/255.255.252.0這樣的子網,總容量應該有1016(254×4)臺主機。目前有大約400位合法上網用戶,這些用戶可能會隨時增減。在Linux系統下,想利用MAC原理對IP進行封殺,從而達到對某個IP地址或IP地址段的管理和控制,可以通過Linux系統提供的ARP來實現?! ?/P>
構思
決定使用ARP綁定后,接下來就要考慮ARP的實現方法。ARP(Address Resolution Protocol)協議是用來向對方的計算機、網絡設備通知自己IP對應的MAC地址的。如果所有非法用戶都被賦予了錯誤的MAC地址,那么他們是無法通過這臺服務器上網的。因此,ARP綁定要求必須將所有可能的IP地址全部與MAC地址綁定,才能夠杜絕非法用戶(當然,用戶修改MAC地址除外)?! ?/P>
經過一番思索,確定了初步的構思。首先,用Linux Shell的循環方法生成一張包含從10.0.0.1到10.0.3.254的無效MAC地址匹配表,稱之為全局表。然后根據DHCP服務器的數據得到一張合法用戶的IP和MAC地址表,稱之為合法表。接著,讀取合法表中每個用戶的IP,并在全局表中尋找匹配的IP,如果找到的話就用合法用戶的MAC地址替換原來無效的MAC地址。最后,這張全局表中的合法用戶匹配正確MAC地址,而非法用戶匹配無效的MAC地址。只要用戶把這張表寫入系統ARP緩存,非法用戶就不能通過簡單的盜取IP方法來通過網關了?! ?/P>
實現
首先生成一張初始的全局表。它包含所有IP地址,每個IP地址與一個非法的MAC地址匹配。它的格式必須是arp命令能夠識別的。初始化全局表的腳本為init,內容如下:
#!/bin/bash
ipprefix=10.0.
count1=0
while (( $count1
do
count2=1
while (( $count2
do
echo“$ipprefix$count1.$count2 00e000000001”
let $count2+=1
done
let $count1+=1
done
新聞熱點
疑難解答