當前位置:首頁 » 操作系統 » linuxarp

linuxarp

發布時間: 2022-11-27 01:45:33

linux防火牆如何防禦ARP攻擊

windows下放arp攻擊可以用金山ARP防火牆,把網關ip和MAC填上,然後選項里把安全模式的鉤勾上就基本沒什麼問題。Linux沒找到這么現成的東西, google上找了一些方法,都自己試過一遍,不是非常管用。

進行arp攻擊要做兩件事情:
1、欺騙目標機器,攻擊機器A告訴目標機器B:我是網關!
2、欺騙網關,攻擊機器A告訴網關:我是B!

也就是A進行雙向欺騙。
這樣做以後目標機器B發給網關的數據包都讓攻擊機器A給沒收了,沒有發給網關,所以B就上不了網了。要讓B能上網,A需要將從B收到的包轉發給網關。(有時候開P2P終結這之類的軟體的時候發現別人上不了網了,有時候是因為自己有一個NB的防火牆,有時侯是其他原因,從被控制的機器上發過來的包沒有能轉發給網關,所以。。。)

我在網上找了一些關於Linux怎麼防arp攻擊的文章,基本上有這么幾種做法。
1、綁定IP-MAC。通過arp -s 或者 arp -f。我就咬定哪個是網關了,你們誰說的話我都不信!
但是有個缺點,必須雙向綁定IP-MAC,如果你無法控制路由器,不能在網關那裡設置靜態IP,這個方法就無效了。
2、既然控制不了網關,我只能告訴網關哪個才是真正的我了。向網關發送自己的IP和MAC。也就是告訴網關:我才是XXX。
(1)用arping,或者arpspoof(arpsniffer)。
命令:arping -U -I 網卡介面 -s 源IP 目標IP
由於命令裡面沒有指定網關的MAC,所以形同虛設,效果不好。
(2)用arpoison或者ARPSender,可以指定MAC,效果算是比較好,但有時候還是不行。
命令:arpoison -i 網卡介面 -d 網關IP -s 我的IP -t 網關MAC -r 我的MAC
參考了這篇文章: http://hi..com/yk103/blog/item/f39e253f9d6aeeed55e72361.html
我用Wireshark看了一下,發現雖然我指定了目標的MAC,但是我的機器依然會間歇性地往攻擊機器發送我的IP和MAC,然後攻擊機器利用我的MAC進行雙向欺騙。

所以我想,有沒有什麼辦法不讓除了網關之外的其他人知道我的MAC呢?後來就找到了一下這篇文章。

文章地址: http://www.kanwi.cn/read-348.html
文章內容:(因為原文地址訪問非常慢所以在這里貼出來)
Linux/FreeBSD防止ARP欺騙的一種 被動方法(隱藏MAC)
作者: Knight 日期: 2008-11-17 14:15

文章作者:Helvin
信息來源:邪惡八進制信息安全團隊(www.eviloctal.com)

首先對國內某些IDC不負責任的行為表示抗議

一般欺騙機器通過ARP Request獲得網關的MAC,然後同樣方法獲得你伺服器的MAC進行雙向欺騙,然後sniffer密碼,掛馬之類。
國內幾乎所有的IDC都是幾百伺服器公用一個網關的。然後上百個伺服器總有幾個有漏洞的,然後你就被ARP欺騙掛馬或者抓密碼了

下面介紹的是Linux 利用arptables來防止ARP Request獲得你的MAC。這樣攻擊者會認為你的伺服器是不存在的(本來很復雜的,需要patch編譯內核什麼的,上周才發現還有一個 arptables,免編譯內核,現在把方法寫一下)

Debian/Ubuntu:(runas sudo)CentOS/RHAS 叫arptables_jf
引用:

apt-get install arptables
arptables -A INPUT --src-mac ! 網關MAC -j DROP
arptables -A INPUT -s ! 網關IP -j DROP

如果你有本網的內網機器要互聯,可以 引用:

arptables -I INPUT --src-mac 你的其他伺服器MAC ACCEPT

如果你的MAC已經被欺騙機器拿到,那隻能ifconfig ethx hw ether MAC來修改了

有一定的危險性,請酌情測試,你也可以瘋狂刷新網關+本機ARP綁定,看具體需要
還要注意這個時候不要發出ARP Request到除網關以外的其他IP,其後果可能是被其他機器拿到MAC

補充一個FreeBSD下的隱藏MAC的方法
首先sysctl net.link.ether.ipfw=1開啟IPFW ether層過濾功能(網橋模式要使用sysctl net.link.ether.bridge_ipfw=1)
然後
ipfw add 00005 allow ip from any to any MAC 網關MAC any /* 打開你到網關的通信 */
ipfw add 00006 allow ip from any to any MAC any 網關MAC /* 打開網關到你的通信 */
/* ........中間你可以添加本網段內需要互聯的IP地址MAC雙向通信........ */
ipfw add 00010 deny ip from any to any MAC any any /* 關閉所有其他MAC的任何響應 */

如果伺服器作為內網網關使用,可以在內網網卡界面
ifconfig em1 -arp /* 關閉ARP響應(假設em0是內網網卡) */
arp -f /etc/arp.list /* 設置靜態ARP表 */
以下是ARP(8) 關於arp.list格式的描述,
Cause the file filename to be read and multiple entries to be set
in the ARP tables. Entries in the file should be of the form

hostname ether_addr [temp] [pub]

with argument meanings as given above. Leading whitespace and
empty lines are ignored. A `#' character will mark the rest of
the line as a comment.

我覺得可以把 綁定IP-MAC + arposion + MAC隱藏的方法綜合起來
轉自 http://hi..com/aj_shuaikun/blog/item/ab39b3d982a59fe038012fd0.html

❷ Linux 配置ip地址時會發送免費arp嗎

會的

PC通過DHCP申請地址,在獲取到IP地址後,會發送免費ARP。

❸ Linux主機如何防範ARP攻擊

arp欺騙的原理不多述,基本就是利用發 送假的arp數據包,冒充網關。一般在網上通訊的時候網關的IP和MAC的綁定是放在arp 緩存裡面的,假的arp包就會刷新這個緩存,導致本該發送到網關的數據包發到了欺騙 者那裡。解決的辦法就是靜態arp。
假設網關的IP是192.168.0.1,我們要 先得到網關的正確MAC,先ping一下網關:
ping 192.168.0.1

然後運行arp查看arp緩存中的網關MAC:
localhost~$ arp
Address HWtype HWaddress Flags Mask Interface
192.168.0.1 ether 00:12:34:56:78:9A C eth0
、這里得到的網關MAC假定 為00:12:34:56:78:9A,C代表這個綁定是保存在緩沖里的,我們要做的就是把這個IP和 MAC靜態的綁定在一起,首先建立/etc/ethers文件,輸入以下內容:
192.168.0.1 00:12:34:56:78:9A

保存退出,之後便是應 用這個靜態綁定:
localhost~$ arp -f

再運行arp查看:
localhost~$ arp
Address HWtype HWaddress Flags Mask Interface
192.168.0.1 ether 00:12:34:56:78:9A CM eth0
多了個M,表示靜態網關 ~
另外,如果你不會和區域網內的用戶通訊的話,那麼可以乾脆 把arp解析關掉,假定你的網卡是eth0,那麼可以運行:
localhost~$ ifconfig eth0 -arp

這樣對付那些終結者軟體就可以了,但是真的有人 向攻擊的話,這樣還是不夠的,因為攻擊者還可以欺騙網關,解決的辦法就是在網關和 區域網內機器上做雙向綁定,原理方法同上,一般網吧裡面也是這樣做的。

❹ Linux內核-arp協議

從ip_finish_output2到dev_queue_xmit路徑:

http://www.bluestep.cc/linux%e5%91%bd%e4%bb%a4arping-%e7%bd%91%e7%bb%9c%e7%ae%a1%e7%90%86-%e9%80%9a%e8%bf%87%e5%8f%91%e9%80%81arp%e5%8d%8f%e8%ae%ae%e6%8a%a5%e6%96%87%e6%b5%8b%e8%af%95%e7%bd%91%e7%bb%9c/

arp協議:

(1).硬體類型:

硬體地址類型,該欄位值一般為ARPHRD_ETHER,表示乙太網。

(2).協議類型:

表示三層地址使用的協議,該欄位值一般為ETH_P_IP,表示IP協議

(3)硬體地址長度,乙太網MAC地址就是6;

(4)協議地址長度,IP地址就是4;

(5)操作碼

常見的有四種,arp請求,arp相應,rarp請求,rarp相應。

(6)發送方硬體地址與IP地址,(7)目標硬體地址與目標IP地址。

arp頭數據結構:

arp模塊的初始化函數為arp_init(),這個函數在ipv4協議棧的初始化函數inet_init()中被調用。
1.初始化arp表arp_tbl;
2.注冊arp協議類型;
3.建立arp相關proc文件,/proc/net/arp;
4.注冊通知事件

一個neigh_table對應一種鄰居協議,IPv4就是arp協議。用來存儲於鄰居協議相關的參數、功能函數、鄰居項散列表等。

一個neighbour對應一個鄰居項,就是一個arp條目

鄰居項函數指針表,實現三層和二層的dev_queue_xmit()之間的跳轉。

用來存儲統計信息,一個結構實例對應一個網路設備上的一種鄰居協議。

注冊arp報文類型 :dev_add_pack(&arp_packet_type);

就是把arp_packet_type添加到ptype_base哈希表中。

注冊新通知事件的時候,在已經注冊和UP的設備上,會調用一次這個通知事件。

設備事件類型:

創建一個鄰居項,並將其添加到散列表上,返回指向該鄰居項的指針。
tbl:待創建的鄰居項所屬的鄰居表,即arp_tbl;
pkey:三層協議地址(IP地址)
dev:輸出設備
want_ref:??

創建鄰居項

1.設置鄰居項的類型
2.設置鄰居項的ops指針
3.設置鄰居項的output函數指針

調用dst_link_failure()函數向三層報告錯誤,當鄰居項緩存中還有未發送的報文,而該鄰居卻無法訪問時被調用。不懂。

用來發送arp請求,在鄰居項狀態定時器處理函數中被調用。

neigh:arp請求的目的鄰居項

skb:緩存在該鄰居項中的待發送報文,用來獲取該skb的源ip地址。

將得到的硬體源、目的地址,IP源、目的地址等作為參數,調用arp_send()函數創建一個arp報文並將其輸出。

創建及發送arp報文

創建arp報文,填充欄位。

發送arp報文

用來從二層接收並處理一個arp報文。這個函數中就是做了一些參數檢查,然後調用arp_process()函數。

neigh_event_ns

neigh_update

這個函數的作用就是更新鄰居項硬體地址和狀態。分支比較多。

neigh_update_notify

代理arp(proxy arp),通常像路由器這樣的設備才使用,用來代替處於另一個網段的主機回答本網段主機的arp請求。

感覺代碼ARP好像沒啥用呀。

網路主機發包的一般過程:

1.當目的IP和自己在同一網段時,直接arp請求該目的IP的MAC。

2.當目的IP和自己不再同一網段時,arp請求默認網關的MAC。

https://www.cnblogs.com/taitai139/p/12336554.html

https://www.cnblogs.com/Widesky/p/10489514.html

當主機沒有默認網關的時候,arp請求別的網段的報文,到達路由器後,本來路由器是要隔離廣播的,把這個arp請求報文給丟棄,這樣就沒法通信了。當路由器開啟arp proxy後,路由器發現請求的目的IP在其他網段,就自己給主機回復一個arp響應報文,這樣源主機就把路由器的MAC當成目的IP主機對應的MAC,可以通信了。這樣可能會造成主機arp表中,多個IP地址都對應於路由器的同一個MAC地址。

可以使用arping命令發送指定IP的arp請求報文。

寫完了發現這個老妹寫的arp代理文章蠻好的,不過她好像是轉載的。

❺ 如何給linux給ARP表添加條目

Liunx添加ARP表方式如下:
[功能]
管理系統的arp緩存。

[描述]
用來管理系統的arp緩存,常用的命令包括:
arp: 顯示所有的表項。
arp -d address: 刪除一個arp表項。
arp -s address hw_addr: 設置一個arp表項。

常用參數:
-a 使用bsd形式輸出。(沒有固定的列)
-n 使用數字形式顯示ip地址,而不是默認的主機名形式。
-D 不是指定硬體地址而是指定一個網路介面的名稱,表項將使用相應介面的MAC地址。一般用來設置ARP代理。
-H type, --hw-type type: 指定檢查特定類型的表項,默認type為ether,還有其他類型。
-i If, --device If: 指定設置哪個網路介面上面的arp表項。
-f filename: 作用同'-s',不過它通過文件來指定IP地址和MAC地址的綁定。文件中每行分別是主機和MAC,中間以空格分割。如果沒有指定文件名稱,則使用/etc/ethers文件。

以下例子中,用主機名稱的地方也可以用點分10進制的ip地址來表示。另外輸出結果中用"C"表示ARP緩存內容,"M"表示永久性表項,"P"表示公共的表項。

[舉例]
*查看arp表:
#arp
Address HWtype HWaddress FlagsMask Iface
hostname1 ether 44:37:e6:97:92:16 C eth0
hostname2 ether 00:0f:fe:43:28:c5 C eth0
hostname3 ether 00:1d:92:e3:d5:ee C eth0
hostname4 ether 00:1d:0f:11:f2:a5 C eth0
這里,Flags中的"C"代表此表項目是高速緩存中的內容,高速緩存中的內容過一段時間(一般20分鍾)會清空,而"M"則表示靜態表項,靜態表項的內容不會過一段時間被清空。

*查看arp表,並且用ip顯示而不是主機名稱:
# arp -n
Address HWtype HWaddress FlagsMask Iface
10.1.10.254 ether 00:1d:92:e3:d5:ee C eth0
10.1.10.253 ether 44:37:e6:9b:2c:53 C eth0
10.1.10.178 ether 00:1b:78:83:d9:85 C eth0
10.1.10.119 ether 00:1d:0f:11:f2:a5 C eth0
這里,對於上面的條目,假設當我們"ping 10.1.10.1"通過之後,arp中會多一條"10.1.10.1"相關的信息。

*查看arp表,顯示主機名稱和ip:
#arp -a
ns.amazon.esdl.others.com (10.1.10.254) at00:1d:92:e3:d5:ee [ether] on eth0
server.amazon.eadl.others.com (10.1.10.253) at44:37:e6:9b:2c:53 [ether] on eth0
D2-jh.amazon.esdl.others.com (10.1.10.178) at00:1b:78:83:d9:85 [ether] on eth0
aplab.local (10.1.10.119) at 00:1d:0f:11:f2:a5[ether] on eth0

*添加一對IP和MAC地址的綁定:
# arp -s 10.1.1.1 00:11:22:33:44:55:66
這里,如果網路無法達到,那麼會報告錯誤,具體如下:
root@quietheart:/home/lv-k# arp -s 10.1.1.100:11:22:33:44:55:66
SIOCSARP: Network is unreachable
root@quietheart:/home/lv-k# arp -n
Address HWtype HWaddress FlagsMask Iface
10.1.10.254 ether 00:1d:92:e3:d5:ee C eth0
10.1.10.253 ether 44:37:e6:9b:2c:53 C eth0
10.1.10.178 ether 00:1b:78:83:d9:85 C eth0
10.1.10.119 ether 00:1d:0f:11:f2:a5 C eth0
實際上,如果"arp -s"設置成功之後,會增加一個Flags為"CM"的表項,有些系統靜態條目不會因為ARP響應而更新,而高速緩存中的條目會因此而更新。如果想要手工設置沒有"M",那麼用"temp"選項,例如:"arp -s IP MAC temp"類似的命令,實踐發現,如果已經設置過IP了,那麼再設置也不會改變其Flags。

*刪除一個arp表項:
# arp -d 10.1.10.118
這里,刪除之後只是硬體地址沒有了,如下:
root@quietheart:~# arp -n
Address HWtype HWaddress FlagsMask Iface
10.1.10.118 ether 00:25:9c:c2:79:90 CM eth0
10.1.10.254 ether 00:1d:92:e3:d5:ee C eth0
root@quietheart:~# arp -d 10.1.10.118
root@quietheart:~# arp -n
Address HWtype HWaddress FlagsMask Iface
10.1.10.118 (incomplete) eth0
10.1.10.254 ether 00:1d:92:e3:d5:ee C

*刪除eth0上面的一個arp表項:
# arp -i eth0 -d 10.1.10.118

[其它]
*指定回復的MAC地址:
#/usr/sbin/arp -i eth0 -Ds 10.0.0.2 eth1 pub
當eth0收到IP地址為10.0.0.2的請求時,將會用eth1的MAC地址回答。
例如,雙網卡機器運行這條命令:
/usr/sbin/arp -i eth0 -Ds 10.0.0.2 eth1 pub
會多一項:
10.0.0.2 * MP eth0

❻ 如何在我的linux查看我的arp表格

在linux中查看arp地址解析協議需要使用終端命令。

以Deepin linux為例,使用終端命令查看arp步驟如下所示:

1、在程序列表中點擊打開終端命令程序。


❼ Linux內核參數之arp_ignore和arp_announce

arp_ignore和arp_announce參數都和ARP協議相關,主要用於控制系統返回arp響應和發送arp請求時的動作。這兩個參數很重要,特別是在LVS的DR場景下,它們的配置直接影響到DR轉發是否正常。

首先看一下Linux內核文檔中對於它們的描述:

arp_ignore - INTEGER

Define different modes for sending replies in response to

received ARP requests that resolve local target IP addresses:

0 - (default): reply for any local target IP address, configured

on any interface

1 - reply only if the target IP address is local address

configured on the incoming interface

2 - reply only if the target IP address is local address

configured on the incoming interface and both with the

sender's IP address are part from same subnet on this interface

3 - do not reply for local addresses configured with scope host,

only resolutions for global and link addresses are replied

4-7 - reserved

8 - do not reply for all local addresses

The max value from conf/{all,interface}/arp_ignore is used

when ARP request is received on the {interface}

arp_ignore參數的作用是控制系統在收到外部的arp請求時,是否要返回arp響應。

arp_ignore參數常用的取值主要有0,1,2,3~8較少用到:

0:響應任意網卡上接收到的對本機IP地址的arp請求(包括環回網卡上的地址),而不管該目的IP是否在接收網卡上。

1:只響應目的IP地址為接收網卡上的本地地址的arp請求。

2:只響應目的IP地址為接收網卡上的本地地址的arp請求,並且arp請求的源IP必須和接收網卡同網段。

3:如果ARP請求數據包所請求的IP地址對應的本地地址其作用域(scope)為主機(host),則不回應ARP響應數據包,如果作用域為全局(global)或鏈路(link),則回應ARP響應數據包。

4~7:保留未使用

8:不回應所有的arp請求

sysctl.conf中包含all和eth/lo(具體網卡)的arp_ignore參數,取其中較大的值生效。

arp_announce - INTEGER

Define different restriction levels for announcing the local

source IP address from IP packets in ARP requests sent on

interface:

0 - (default) Use any local address, configured on any interface

1 - Try to avoid local addresses that are not in the target's

subnet for this interface. This mode is useful when target

hosts reachable via this interface require the source IP

address in ARP requests to be part of their logical network

configured on the receiving interface. When we generate the

request we will check all our subnets that include the

target IP and will preserve the source address if it is from

such subnet. If there is no such subnet we select source

address according to the rules for level 2.

2 - Always use the best local address for this target.

In this mode we ignore the source address in the IP packet

and try to select local address that we prefer for talks with

the target host. Such local address is selected by looking

for primary IP addresses on all our subnets on the outgoing

interface that include the target IP address. If no suitable

local address is found we select the first local address

we have on the outgoing interface or on all other interfaces,

with the hope we will receive reply for our request and

even sometimes no matter the source IP address we announce.

The max value from conf/{all,interface}/arp_announce is used.

arp_announce的作用是控制系統在對外發送arp請求時,如何選擇arp請求數據包的源IP地址。(比如系統准備通過網卡發送一個數據包a,這時數據包a的源IP和目的IP一般都是知道的,而根據目的IP查詢路由表,發送網卡也是確定的,故源MAC地址也是知道的,這時就差確定目的MAC地址了。而想要獲取目的IP對應的目的MAC地址,就需要發送arp請求。arp請求的目的IP自然就是想要獲取其MAC地址的IP,而arp請求的源IP是什麼呢? 可能第一反應會以為肯定是數據包a的源IP地址,但是這個也不是一定的,arp請求的源IP是可以選擇的,控制這個地址如何選擇就是arp_announce的作用)

arp_announce參數常用的取值有0,1,2。

0:允許使用任意網卡上的IP地址作為arp請求的源IP,通常就是使用數據包a的源IP。

1:盡量避免使用不屬於該發送網卡子網的本地地址作為發送arp請求的源IP地址。

2:忽略IP數據包的源IP地址,選擇該發送網卡上最合適的本地地址作為arp請求的源IP地址。

sysctl.conf中包含all和eth/lo(具體網卡)的arp_ignore參數,取其中較大的值生效。

(1)當arp_ignore參數配置為0時,eth1網卡上收到目的IP為環回網卡IP的arp請求,但是eth1也會返回arp響應,把自己的mac地址告訴對端。

(2)當arp_ignore參數配置為1時,eth1網卡上收到目的IP為環回網卡IP的arp請求,發現請求的IP不是自己網卡上的IP,不會回arp響應。

(3)當arp_announce參數配置為0時,系統要發送的IP包源地址為eth1的地址,IP包目的地址根據路由表查詢判斷需要從eth2網卡發出,這時會先從eth2網卡發起一個arp請求,用於獲取目的IP地址的MAC地址。該arp請求的源MAC自然是eth2網卡的MAC地址,但是源IP地址會選擇eth1網卡的地址。

(4)當arp_announce參數配置為2時,eth2網卡發起arp請求時,源IP地址會選擇eth2網卡自身的IP地址。

因為DR模式下,每個真實伺服器節點都要在環回網卡上綁定虛擬服務IP。這時候,如果客戶端對於虛擬服務IP的arp請求廣播到了各個真實伺服器節點,如果arp_ignore參數配置為0,則各個真實伺服器節點都會響應該arp請求,此時客戶端就無法正確獲取LVS節點上正確的虛擬服務IP所在網卡的MAC地址。假如某個真實伺服器節點A的網卡eth1響應了該arp請求,客戶端把A節點的eth1網卡的MAC地址誤認為是LVS節點的虛擬服務IP所在網卡的MAC,從而將業務請求消息直接發到了A節點的eth1網卡。這時候雖然因為A節點在環回網卡上也綁定了虛擬服務IP,所以A節點也能正常處理請求,業務暫時不會受到影響。但時此時由於客戶端請求沒有發到LVS的虛擬服務IP上,所以LVS的負載均衡能力沒有生效。造成的後果就是,A節點一直在單節點運行,業務量過大時可能會出現性能瓶頸。

所以DR模式下要求arp_ignore參數要求配置為1。

每個機器或者交換機中都有一張arp表,該表用於存儲對端通信節點IP地址和MAC地址的對應關系。當收到一個未知IP地址的arp請求,就會再本機的arp表中新增對端的IP和MAC記錄;當收到一個已知IP地址(arp表中已有記錄的地址)的arp請求,則會根據arp請求中的源MAC刷新自己的arp表。

如果arp_announce參數配置為0,則網卡在發送arp請求時,可能選擇的源IP地址並不是該網卡自身的IP地址,這時候收到該arp請求的其他節點或者交換機上的arp表中記錄的該網卡IP和MAC的對應關系就不正確,可能會引發一些未知的網路問題,存在安全隱患。

所以DR模式下要求arp_announce參數要求配置為2。

arp_ignore和arp_announce參數分別有all,default,lo,eth1,eth2...等對應不同網卡的具體參數。當all和具體網卡的參數值不一致時,取較大值生效。

一般只需修改all和某個具體網卡的參數即可(取決於你需要修改哪個網卡)。下面以修改lo網卡為例:

net.ipv4.conf.all.arp_ignore=1

net.ipv4.conf.lo.arp_ignore=1

net.ipv4.conf.all.arp_announce=2

net.ipv4.conf.lo.arp_announce=2

sysctl -w net.ipv4.conf.all.arp_ignore=1

sysctl -w net.ipv4.conf.lo.arp_ignore=1

sysctl -w net.ipv4.conf.all.arp_announce=2

sysctl -w net.ipv4.conf.lo.arp_announce=2

echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore

echo "1">/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "2">/proc/sys/net/ipv4/conf/all/arp_announce

echo "2">/proc/sys/net/ipv4/conf/lo/arp_announce

❽ linux系統arp問題

這個簡單, 通過tcpmp抓包獲取攻擊的IP地址, 然後使用防火牆鎖定就行了, 不過這是一個編程的過程, 稍微復雜哦
低於這種攻擊, 還是有效的
請樓主看一下my網名吧?這個問題可以幫助搞定一下的哦

❾ linux下防arp

方法一:
首先安裝arptables:
sudo apt-get install arptables
然後定義規則:
sudo arptables -A INPUT --src-mac ! 網關物理地址 -j DROP
sudo arptables -A INPUT -s ! 網關IP -j DROP
sudo arptables -A OUTPUT --destination-mac ff:ff:ff:ff:ff:ff -j ACCEPT
不過這樣就有一點不好,區域網內的資源不能用!
sudo arptables -F
當然我們可以做個腳本,每次開機的時候自動運行!~sudo gedit /etc/init.d/arptables,內容如下:
#! /bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
arptables -A INPUT --src-mac ! 網關物理地址 -j DROP
arptables -A INPUT -s ! 網關IP -j DROP
arptables -A OUTPUT --destination-mac ff:ff:ff:ff:ff:ff -j ACCEPT
然後給arptables加個execution的屬性,
sudo chmod 755 /etc/init.d/arptables
再把arptables設置自動運行,
sudo update-rc.d arptables start 99 S .
用sysv-rc-conf直接設置

方法二:
1、先使用arp和 arp -a查看一下當前ARP緩存列表
[root@ftpsvr ~]# arp
Address HWtype HWaddress Flags Mask Iface
192.168.1.234 ether 00:04:61:AE:11:2B C eth0
192.168.1.145 ether 00:13:20:E9:11:04 C eth0
192.168.1.1 ether 00:02:B3:38:08:62 C eth0
說明:
Address:主機的IP地址
Hwtype:主機的硬體類型
Hwaddress:主機的硬體地址
Flags Mask:記錄標志,」C」表示arp高速緩存中的條目,」M」表示靜態的arp條目。
[root@ftpsvr ~]# arp -a
? (192.168.1.234) at 00:04:61:AE:11:2B [ether] on eth0
? (192.168.1.1) at 00:16:76:22:23:86 [ether] on eth0
2、新建一個靜態的mac–>ip對應表文件:ip-mac,將要綁定的IP和MAC 地下寫入此文件,格式為 ip mac。
[root@ftpsvr ~]# echo 『192.168.1.1 00:02:B3:38:08:62 『 > /etc/ip-mac
[root@ftpsvr ~]# more /etc/ip-mac
192.168.1.1 00:02:B3:38:08:62
3、設置開機自動綁定
[root@ftpsvr ~]# echo 『arp -f /etc/ip-mac 『 >> /etc/rc.d/rc.local
4、手動執行一下綁定
[root@ftpsvr ~]# arp -f /etc/ip-mac
5、確認綁定是否成功
[root@ftpsvr ~]# arp
Address HWtype HWaddress Flags Mask Iface
192.168.0.205 ether 00:02:B3:A7:85:48 C eth0
192.168.1.234 ether 00:04:61:AE:11:2B C eth0
192.168.1.1 ether 00:02:B3:38:08:62 CM eth0
[root@ftpsvr ~]# arp -a
? (192.168.0.205) at 00:02:B3:A7:85:48 [ether] on eth0
? (192.168.1.234) at 00:04:61:AE:11:2B [ether] on eth0
? (192.168.1.1) at 00:02:B3:38:08:62 [ether] PERM on eth0
從綁定前後的ARP緩存列表中,可以看到網關(192.168.1.1)的記錄標志已經改變,說明綁定成功。

熱點內容
linux下samba 發布:2024-03-28 16:54:12 瀏覽:538
我的世界國際服手機版免費開伺服器 發布:2024-03-28 16:45:36 瀏覽:283
phpmongodb擴展下載 發布:2024-03-28 16:41:03 瀏覽:322
android開發教程筆記 發布:2024-03-28 16:31:48 瀏覽:770
榮威i6max配置怎麼選 發布:2024-03-28 16:18:11 瀏覽:454
cml編程 發布:2024-03-28 16:14:53 瀏覽:757
linuxc語言文件讀寫 發布:2024-03-28 15:59:57 瀏覽:578
點遍歷演算法 發布:2024-03-28 15:57:34 瀏覽:496
java網路框架 發布:2024-03-28 15:42:07 瀏覽:98
我的世界本地部署伺服器 發布:2024-03-28 15:40:55 瀏覽:166