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
發現沒有?多了一個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
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表進行控制
我們知道,ARP(Address Resolution Protocol
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地址的軟體修改,Linux和Windows本身也都有辦法修改這一實體地址。不過由於這種方式相對穩定,摒棄了繁瑣的客戶端設定,對使用者完全透明,而且具備很強的可操作性,所以在某種程度上說是安全的。
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