1. 程式人生 > >arp 靜態繫結Mac地址

arp 靜態繫結Mac地址

[email protected] root]# arp -a
? (192.168.100.83) at 00:15:58:A2:13: D0 [ether] on eth0
? (192.168.100.81) at 00:15:C5:E1:D1:58 [ether] on eth0

[[email protected] bin]# arp -s 192.168.100.81 00:15:C5:E1:D1:58[[email protected] bin]# arp -a
? (192.168.100.83) at 00:15:58:A2:13: D0 [ether] on eth0
? (192.168.100.81) at 00:15:C5:E1: D1:58 [ether] PERM

 on eth0

發現沒有?多了一個PERM

或者
[[email protected] bin]# cat /proc/net/arpIP address  HWtype  Flags  HWaddress  Mask  Device
192.168.100.83  0x1  0x2  00:15:58:A2:13:D0  *  eth0
192.168.100.81  0x1  0x6  00:15:C5:E1:D1:58  *  eth0

[[email protected] bin]# arp -s 192.168.100.83 00:15:58:A2:13:D0[[email protected] bin]# cat /proc/net/arp

IP address  HW type  Flags  HW address  Mask  Device
192.168.100.83  0x1  0x6  00:15:58:A2:13:D0  *  eth0
192.168.100.81  0x1  0x6  00:15:C5:E1: D1:58  *  eth0

發現沒有?Flags改變了!

所以我們可以用兩種方法找到arp的靜態繫結地址:

arp -a | grep PERM或者

cat /proc/net/arp | grep 0x6

但建議用後者比較快。利用靜態ARP表進行控制

我們知道,ARPAddress Resolution Protocol

,地址轉換協議)被當作底層協議,用於IP地址到實體地址的轉換。在乙太網中,所有對IP的訪問最終都轉化為對網絡卡MAC地址的訪問。不妨設想一下,如果主機AARP列表中,到主機BIP地址與MAC地址對應不正確,由A發往B資料包就會發向錯誤的MAC地址,當然無法順利到達B,結 果是AB根本不能進行通訊。Linux可以通過arp命令控制ARP轉換,即IPMAC的轉換。因此,也能利用這一功能對使用者MAC地址進行匹配。下面我們就來看看arp命令的用法。輸入arp將顯示當前所有ARP轉換記錄,類似於這樣: 

Address  HWtype  HWaddress  Flags  Mask  Iface 
www.baidu.com ether  00:06:29:57:16:F5  C  eth0 
218.200.80.177  ether  00:01:30:F4:32:40  C  eth1 
192.168.100.25  ether  00:02:1E:F1:92:C2  C  eth0 

由此可以看到,當前系統保留的IP地址與MAC地址一一對應,並指明瞭硬體型別(Hwtype)和通訊所使用的介面(Iface)。不過這些都是動態生成的,無需手工干預。我們要做的恰恰是手工干預這一過程。 我們需要用到arp命令的另一重要功能,就是手工更改這一對應關係。此外,該命令還可以讀取文字檔案中的ARP記錄,其預設檔案是/etc/ethers。也就是說,當輸入ARP-f的時候,系統就會讀取/etc/ethers這個檔案,並以其中的專案取代系統當前的ARP記錄。假設/etc/ethers 檔案內容如下: 

192.168.100.25 00:02:01:50:BB:53

然後執行命令arp –f

這時,我們檢視系統ARP表,會發現無論192.168.100.25原來對應的MAC地址是什麼,都會被新的所取代: 

www.baidu.com ether  00:06:29:57:16:F5  C  eth0 
218.200.80.177  ether  00:01:30:F4:32:40  C  eth1 
192.168.100.25  ether  00:02:01:50:BB:53  C  eth0

此時,本機發往192.168.100.25的資料包目標MAC地址將由原來的00:02:1E:F1:92:C2改為00:02:01:50:BB:53顯然,如果192.168.100.25所在網絡卡的MAC地址並非00:02:01:50:BB:53,資料包就無法到達正確的目的地,那麼它們也就無法通訊了,這樣也達到了識別非法使用者的目的。當然,控制MAC地址的方法還不止這些,例如可以利用交換機的埠管理功能識別使用者。根據交換機的原理,它是直接將資料傳送到相應埠,那麼就必須保有一個數據庫,包含所有埠所連網絡卡的MAC地址,由此可見,控制每個埠使用的MAC地址理論上是完全可行的。大部分中高階交換機如3Com SuperStack系列等,都具有這種功能。具體操作與交換機型號有關,這裡就不贅述。最後,提醒一下,MAC地址控制並非絕對保險。正如這個世界上沒有絕對解不開的密碼一樣,所謂安全都是相對於特定的環境而言。現在,很多網絡卡都支援MAC地址的軟體修改,LinuxWindows本身也都有辦法修改這一實體地址。不過由於這種方式相對穩定,摒棄了繁瑣的客戶端設定,對使用者完全透明,而且具備很強的可操作性,所以在某種程度上說是安全的。

我們先看一下linux下的arp命令(如果開始arp表中的內容為空的話,需要先對某臺主機進行一個連線,例如ping一下目標主機來產生一個arp項

Linux Arp命令顯示和修改地址解析協議(ARP)使用的“IP 到物理”地址轉換表。
ARP -s inet_addr eth_addr [if_addr]
ARP -d inet_addr [if_addr]
ARP -a [inet_addr] [-N if_addr] [-v] -a            通過詢問當前協議資料,顯示當前ARP項。如果指定inet_addr,則只顯示指定計算機的IP地址和實體地址。如果不止一個網路介面使用ARP,則顯示每個ARP表的項。
-g            與-a相同。
-v            在詳細模式下顯示當前ARP項。所有無效項和環回介面上的項都將顯示。
inet_addr     指定Internet地址(IP地址)。
-N if_addr    顯示if_addr指定的網路介面的ARP項。
-d            刪除inet_addr指定的主機。inet_addr可以是萬用字元*,以刪除所有主機。
-s            新增主機並且將Internet地址inet_addr與實體地址eth_addr相關聯。實體地址是用連字元分隔的6個十六進位制位元組。該項是永久的。
eth_addr      指定實體地址。
if_addr       如果存在,此項指定地址轉換表應修改的介面的 Internet 地址。如果不存在,則使用第一個適用的介面。 示例:
新增靜態項。這個很有用,特別是區域網中中了arp病毒以後
# arp -s 123.253.68.209 00:19:56:6F:87:D2
# arp -a   .... 顯示 ARP 表。 但是arp -s設定的靜態項在使用者登出之後或重起之後會失效,如果想要任何時候都不失效,可以將ip和mac的對應關係寫入arp命令預設的配置檔案/etc/ethers中 例如:
  引用
[email protected]:/# vi /etc/ethers
211.144.68.254 00:12:D9:32:BF:44
寫入之後執行下面的命令就好了 引用
arp -f /etc/ethers
為保證重起之後繫結仍然有效,需要把上述命令寫入/etc/ethers ARP(Address Resolution Protocol),或稱地址解析協議。 本地機向"某個IP地址 -- 目標機IP地址"傳送資料時,先查詢本地的ARP表,如果在ARP表中找到"目標機IP地址"的ARP表項,(網路協議)將把"目標機IP地址"對應的"MAC地址"放到MAC包的"目的MAC地址欄位"直接傳送出去;
如果在ARP表沒有找到"目標機IP地址"的ARP表項,則向區域網傳送廣播ARP包("目的MAC地址欄位" == FF:FF:FF:FF:FF:FF),目標機將向本地機回覆ARP包(包含目標機的MAC地址)

轉自:http://fifi258.blog.163.com/blog/static/325827412008115119295/

相關推薦

arp 靜態Mac地址

[email protected] root]# arp -a? (192.168.100.83) at 00:15:58:A2:13: D0 [ether] on eth0 ? (192.168.100.81) at 00:15:C5:E1:D1:58 [ether] on eth0 [[e

DHCP靜態ARP靜態

DHCP就是動態分配IP,如果你的路由器或者交換機開啟了DHCP靜態繫結,那麼新連上來的電腦,根據他的MAC地址會自動分配一個已繫結的IP,這是在電腦網絡卡上設定了自動獲取IP的情況下。那麼,如果該電腦已經設定了可以上網的網段內的其他IP,而不需要DHCP分配的時候,也是可

Windows 7下用arp命令IP和MAC地址,提示“ARP 項新增失敗: 拒絕訪問”的解決方法

在Win 7版本以管理員身份執行時提示:“ARP 項新增失敗:請求的操作需要提升。”    解決辦法: CMD中輸入:netsh i  i show in  //注意兩個i之間是有空格的 然後找到“本地連線”對應的 “Idx” (我的是

Linux Arp命令IP和MAC地址防止ARP欺騙

Linux Arp命令危害:Linux Arp命令危害極大,有的病毒就使用ARP欺騙,不僅影響自身機器,同時也會影響同網段的其它機器,將其它機器的HTTP資料包里加入病毒程式碼。 1、程式碼例子如:<html><iframe src=http://病毒連結.htm width=0 h

在核心交換機上配置DHCP做靜態嚴格限制地址分配

拓撲圖S5700作為核心裝置,配置DHCP,為辦公網路分配IP地址S2700作為接入裝置 S5700配置 vlan 100description bangong interface GigabitEthernet0/0/1port link-type trunkport trunk allow-pass

理解java的動態 靜態

在java中所有變數都是靜態繫結 在Java中方法只有static和final是靜態繫結,其餘全部是動態繫結 理解靜態繫結: 靜態繫結就是指在編譯時就已經確定是哪個類的物件呼叫的。 所以當出現一下語句時: Parent parent=new Parent(); P

php魔術常量;資料(變數)序列化/反序列化;魔術方法;static後期靜態特性

與類有關的魔術常量: __CLASS__,:獲取其所在的類的類名。 __METHOD__:獲取其所在的方法的方法名。 class A{   function f1(){     echo __CLASS__; //輸出“A”     echo __METHOD__; //輸出“f1”

深入理解Java動態靜態

動態繫結 以下是我的理解,可能和其他大佬們的理解略有偏差,如有想法不同的或者有錯誤的地方歡迎您指出來,謝謝 先上程式碼: public class Father { public void f() { System.out.println("Father meth

PHP學習——25 PHP面向物件(類的靜態與延遲技術:self,parent,static詳解)

<?php class Employee { public static $name = '湯姆'; public static $age = 22; public static $salary = 4000; public static function show() // 靜

PHP的後期靜態

參考:https://blog.csdn.net/lamp_yang_3533/article/details/79912453 1.定義 後期靜態繫結(也叫延遲靜態繫結),可用於在繼承範圍內引用靜態呼叫的類 2.工作原理 static 後期靜態繫結的工作原理是儲存了上一個非轉發呼叫(

Java中的靜態與動態事例

在這個例子中使用Java面向物件中的多型來簡單介紹靜態繫結和動態繫結的區別。 /* * 建立一個Father類。 * 為了方便獲取,成員變數a設定為public的。 * */ class Father{ public int a = 10; public void saying(

php中後期靜態(延遲靜態)技術

定義一個父類 這就要用到後期靜態繫結的技術,所謂後期,是指靜態方法的呼叫者,只有在執行狀態下才進行動態繫結,使用關鍵字 static 來實現, 此時, static 就像一個變數,始終與當前的呼叫類是繫結的 class Father{ public static $money

PHP延遲靜態

“後期繫結”的意思是說,static:: 不再被解析為定義當前方法所在的類,而是在實際執行時計算的。 也可以稱之為“靜態繫結”,因為它可以用於(但不限於)靜態方法的呼叫。 <?php class A { public static function who() { echo

Java靜態和動態

Java靜態繫結和動態繫結 靜態繫結 動態繫結 將方法呼叫連線到方法體稱為繫結。也就是通過呼叫方法連線到具體的方法體。 Java兩種繫結模式 首先了解一下變數和型別 每個基本變數都會有個型別 int a =1;double b =

Linux的Apache應用筆記--指定地址與埠

配置Apache HTTP伺服器來監聽特定的地址和埠 概述 Listen: 監聽指定的埠或主機地址或者兩者的組合,這決定了httpd如何響應不同的ip地址、主機名和埠。 為了讓主機響應埠8

C++ 動態靜態

virtual 函式實現多型性 #include <iostream> using namespace std; struct TreeNode { TreeNode *left; TreeNode *rignt; }; class Gener

“全棧2019”Java第五十五章:方法的靜態與動態

難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第五十五章:方法的靜態繫結與動態繫結 下一章 “全棧2019”Java第五十六章:多型與欄位

Java動態靜態-多型

一、問題 Java方法呼叫過程中,Jvm是如何知道呼叫的是哪個類的方法?Jvm又是如何處理?   二、概念 a、當子類和父類(介面和實現類)存在同一個方法時,子類重寫父類(介面)方法時,程式在執行時呼叫的方法時,是呼叫父類(介面)的方法呢?還是呼叫子類的方法呢?我

PHP進階4 後期靜態

                     不積跬步無以至千里不積小流無以成江海 後期靜態繫結 class A { public static funct

Java方法的靜態與動態講解(向上轉型的執行機制詳解)

   今天看設計模式-模板方法模式時發現一個實現父類呼叫子類方法的效果的程式碼,不理解其中的原理,然後詢問大佬之後,發現這原來是動態繫結的知識,所以惡補了一下。 package com.practice; /** * 父類呼叫子類的方法 * * @author li