Linux下ARP相关操作

1.基本原理

地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。相关协议有RARP代理ARPNDP用于在IPv6中代替地址解析协议。

2.arp命令

arp命令用来管理ARP缓存

arp -v 详细模式

$ arp -v
Address                  HWtype  HWaddress           Flags Mask            Iface
xxxxx                    ether   00:12:da:46:34:00   C                     eth0
10.1.1.17                ether   00:16:3e:f2:38:33   C                     eth1
10.1.1.12                ether   00:16:3e:f2:37:6b   C                     eth1
Entries: 3	Skipped: 0	Found: 3

arp -n 显示数字地址

$ arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
xxxxxxxx                 ether   00:12:da:46:34:00   C                     eth0
10.1.1.13                ether   00:16:3e:f2:37:7d   C                     eth1
10.1.1.18                ether   00:16:3e:f2:38:35   C                     eth1

arp  -a 查看指定主机的IP和MAC对应关系,默认显示全部

$ arp -a
? (xxxxxxxxx) at 00:12:da:46:34:00 [ether] on eth0
? (10.1.1.13) at 00:16:3e:f2:37:7d [ether] on eth1
? (10.1.1.18) at 00:16:3e:f2:38:35 [ether] on eth1
[[email protected] ~]$ arp -a 10.1.1.18
? (10.1.1.18) at 00:16:3e:f2:38:35 [ether] on eth1

arp -d 删除指定主机的IP和MAC对应关系

$ sudo arp -d 10.1.1.18

arp -i 只显示指定网卡的IP和MAC对应关系

$ arp -i eth0
Address                  HWtype  HWaddress           Flags Mask            Iface
xxxxxxxxxxxxx            ether   00:12:da:46:34:00   C                     eth0
$ arp -i eth1
Address                  HWtype  HWaddress           Flags Mask            Iface
10.1.1.13                ether   00:16:3e:f2:37:7d   C                     eth1
10.1.1.18                ether   00:16:3e:f2:38:35   C

arp -s hostname hw_addr, --set hostname    手动设置IP和MAC的对应关系

$ sudo arp -s 10.1.1.18 00:16:3e:f2:38:35

3.arping命令

arping [ -AbDfhqUV]  [ -c count]  [ -w deadline]  [ -s source]  -I interface destination

想目标主机发送ARP请求

-A 使用ARP REPLAY替代ARP REQUEST报文

$ sudo arping -A  -I eth1  -s 10.1.1.12  10.1.1.19
ARPING 10.1.1.19 from 10.1.1.12 eth1
Unicast reply from 10.1.1.19 [00:16:3E:F2:38:3B]  627.781ms
Unicast reply from 10.1.1.19 [00:16:3E:F2:38:3B]  988.125ms
Unicast reply from 10.1.1.19 [00:16:3E:F2:38:3B]  827.356ms
Unicast reply from 10.1.1.19 [00:16:3E:F2:38:3B]  837.510ms
Unicast reply from 10.1.1.19 [00:16:3E:F2:38:3B]  303.940ms

-b 只发送MAC层面的ARP广播报文,正常情况下,arping先以发送ARP广播报文方式启动,当收到ARP REPLY报文后就转成单播

$ sudo arping -b  -I eth1  -s 10.1.1.12  10.1.1.19
ARPING 10.1.1.19 from 10.1.1.12 eth1
Unicast reply from 10.1.1.19 [00:16:3E:F2:38:3B]  0.764ms
Unicast reply from 10.1.1.19 [00:16:3E:F2:38:3B]  0.843ms
Unicast reply from 10.1.1.19 [00:16:3E:F2:38:3B]  0.744ms

-c 指定发送ARP REQUEST报文个数.如果再指定-w参数,arping将一直等待ARP REPLY报文,直到超时时间截止

$ sudo arping -c 5  -I eth1  -s 10.1.1.12  10.1.1.19
ARPING 10.1.1.19 from 10.1.1.12 eth1
Unicast reply from 10.1.1.19 [00:16:3E:F2:38:3B]  0.771ms
Unicast reply from 10.1.1.19 [00:16:3E:F2:38:3B]  0.744ms
Unicast reply from 10.1.1.19 [00:16:3E:F2:38:3B]  0.741ms
Unicast reply from 10.1.1.19 [00:16:3E:F2:38:3B]  0.806ms
Unicast reply from 10.1.1.19 [00:16:3E:F2:38:3B]  0.731ms
Sent 5 probes (1 broadcast(s))
Received 5 response(s)

-w deadline

以秒为单位指定超时时间。

参考文档:

http://baike.baidu.com/link?url=TrCbU1FJnpEU_MO209Dolv6X2mW09RRw9XwJHNK5YaDc0groMMAIjP-8LB6DVbXeM4H1YWQQ5QpQHyNA8tj6UjtJ77j0waYDcpcQIdJLDcy

时间: 2024-10-05 06:12:10

Linux下ARP相关操作的相关文章

linux下进程相关操作

一.定义和理解 狭义定义:进程是正在运行的程序的实例. 广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动. 进程的概念主要有两点: 第一,进程是一个实体.每一个进程都有它自己的地址空间,一般情况下,包括文本区域.数据区域和堆栈区域.文本区域存储处理器执行的代码:数据区域存储变量和进程执行期间使用的动态分配的内存:堆栈区域存储着活动过程调用的指令和本地变量. 第二,进程是一个“执行中的程序”.程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们

Linux下tomcat相关操作

tomcat安装: 直接到官网下载tar包解压即可. tomcat相关操作: 首先,进入Tomcat下的bin目录,例如:cd /usr/tomcat/bin 启动Tomcat:./startup.sh 关闭Tomcat:./shutdown.sh 查看Tomcat是否关闭:ps -ef|grep java,若信息较多表示未关闭,反之已关闭. 如果你想直接干掉Tomcat,你可以使用kill命令,直接杀死Tomcat进程:例如可以根据上面查看tomcat是否关闭的命令获取到进程ID,然后直接ki

Linux下 svn相关操作

一.首先看看svn安装的位置: 命令: find / -name svn /var/svn :表示安装目录 /user/bin/svn :表示命令目录 可以看到的是svn的地址是var/svn 那么到底是不是:我们到这个目录下看: 二.重启或启动 1 首先查看svn的进程: 查看进程命令:ps -ef(查看所有进程):要筛选的话用grep,筛选svn的进程命令:ps -ef|grep svn. 2  杀死主进程:杀死进程的命令用kill -9 进程id. 3:启动svn:启动svn的命令用svn

Linux下使用Python操作MySQL数据库

安装mysql-python 1.下载mysql-python 打开终端: cd /usr/local sudo wget http://nchc.dl.sourceforge.net/sourceforge/mysql-python/MySQL-python-1.2.2.tar.gz 官网地址:http://sourceforge.net/projects/mysql-python/ 2.解压 sudo tar -zxvf MySQL-python-1.2.2.tar.gz cd MySQL-

linux下的安全操作

Linux下的安全操作,使用前要备份 Cd /etc/yum.repos.d/ Ls 改名 cp Centos-Base.repo Centos-Base.repo.ori Ori代表的原始文件 Wget(获取网址下载) :http://...../Centos-Base-163.repo Ls 替换原来的Base Cp CentOS-Base-163.repo CentOS-Base.repo 替换原来的Base Yum grouplist 查看包组,装了那些包 SELINUX是美国安全局对于

linux下硬盘的操作

linux的磁盘管理:他的目录和磁盘分区相互独立,用挂载相互关联,卸载取消关联. 1.fdisk fdisk -l     用来列出来我们硬盘的分区情况 fdisk /dev/sda 用来管理sda硬盘,比如说增.删等等操作,具体的可以用fdisk -m 来查看命令 2.mkfs 用来格式化分区,或者说是给分区格式化他的文件系统.用命令 ls /sbin/mkfs* 可以查看我们有那些可以使用的文件系统. 比如用命令  mkfs -t ext4 /dev/ext4   就可以给相应的分区make

linux 下 osw随操作系统启动而自动启动的标准脚本

linux 下 osw随操作系统启动而启动的标准脚本.osw是指--os watcher,这是一个监控os各项指标的shell脚本.osw的监控数据一般用于oracle技术人员评估os各项资源的使用情况,该使用情况会作为oracle 技术人员评估一些oracle 数据库行为(比如节点驱逐等)的参考依据. [[email protected] ~]$ cat /etc/rc.local #!/bin/sh # # This script will be executed *after* all t

linux下网卡相关查看设置

查整机硬件信息命令dmesg 查看网卡设备相关dmesg | grep eth 查看网卡eth0信息dmesg | grep eth0 使用ethtool命令查看指定网卡信息ethtool eth0 使用 mii-tool命令查看指定网卡情况mii-tool -v eth1 为了使用lspci命令需要安装以下软件包yum -y install pciutils 查看pci接口硬件信息lspci 在linux的proc文件系统中,通过查看/proc/net/dev文件可以得到每个网络接口的吞吐量c

linux下监控用户操作记录的工具

linux下监控用户操作记录的工具: apt-get install bsdutils mkdir /opt/operation_log chmod 777 -R /opt/operation_log vi /etc/profile exec script -t 2> /opt/operation_log/$USER-$UID-date +%F-%T.data -a -q -f /opt/operation_log/$USER-$UID-date +%F-%T.log :wq source /e