在有些系統中有這樣的需求,希望內部網中的某幾個IP地址連接互聯網,而又希望這些IP地址不被非法用戶盜用。可以通過下面的解決辦法實現:
首先使用ipchains或者iptables來設定只允許合法的IP地址連出。
對於合法IP建立IP/Mac捆綁。要討論這個問題我們首先需要了解ARP協議的工作原理,arp協議是地址解析協議(Address Resolution Protocol)的縮寫,其作用及工作原理如下:
在底層的網絡通信中,兩個節點想要相互通信,必須先要知道源與目標的MAC地址。為了讓系統能快速地找到一個遠程節點的MAC地址,每一個本地的內核都保存有一個即時的查詢表 (稱為ARP緩存)。ARP中有影射遠程主機的IP地址到其對應的MAC地址的一個列表。地址解析協議(ARP)緩存是一個常駐內存的數據結構,其中的內容是由本地系統的內核來管理和維護的。默認的情況下,ARP緩存中保留有最近十分鐘本地系統與之通信的節點的IP地址(和對應的MAC地址)。
當一個遠程主機的MAC地址存在於本地主機的ARP 緩存中,轉換遠程節點的IP地址為MAC地址不會遇到問題。然而在許多情況下,遠程主機的MAC地址並不存在於本地的ARP緩存中,系統會怎麼處理呢?在知道一個遠程主機的IP地址,但是MAC地址不在本地的ARP緩存中的時候,以下的過程用來獲取遠程節點的MAC地址:本地主機發送一個廣播包給網絡中的所有的節點,詢問是否有對應的IP地址。一個節點(只有一個)會回答這個ARP廣播信息。在回應的信息包裡就會包含有這個遠程主機的MAC地址。在收到這個返回包後,本地節點就會在本地ARP緩存中記錄遠程節點的MAC地址。
如果我們將IP/MAC對應關系建立為固定的,也就是對那些合法IP地址建立靜態的MAC對應關系,那麼即使非法用戶盜用了IP地址linux路由器在回應這些IP發出的連接請求時則不會通過arp協議詢問其mac地址而是使用Linux建立的靜態MAC地址、發出應答數據這樣盜用IP者則不會得到應答數據從而不能使用網絡服務。
建立靜態IP/MAC捆綁的方法是:建立/etc/ethers文件,其中包含正確的IP/MAC對應關系,格式如下:
192.168.2.32 08:00:4E:B0:24:47
然後再/etc/rc.d/rc.local最後添加:arp -f即可
2.4內核的iptables可以對IP和Mac同時進行限定,使用該功能對合法IP的規則同時限定IP地址和Mac地址即可。