`
字符串
  • 浏览: 37808 次
文章分类
社区版块
存档分类
最新评论

Linux下ARP相关操作

 
阅读更多

1.基本原理
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。相关协议有RARP、代理ARP。NDP用于在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
[gintama@gintama-taiwan-lb1 ~]$ 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
以秒为单位指定超时时间。
-D 重复地址检查模式
$ sudo arping -D 10.1.1.200
ARPING 10.1.1.200 from 0.0.0.0 eth0
Unicast reply from 10.1.1.200 [00:16:3E:F2:37:6B]  0.692ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)
-I 指定发送ARP REQUEST的网卡
-s 指定源地址
 如果使用DAD模式,设置成为0.0.0.0
 如果使用Unsolicited ARP mode,设置成为目的地址
 其他情况下,根据路由表计算
4.阻止ARP flux
ARP协议用于将IP地址转换成为物理地址,默认情况下,拥有多块网卡的Linux主机会响应该主机的任意网卡上接收到的任意网卡上绑定的IP地址的ARP请求。
假设一台Linux主机拥有两块网卡A和B,IP地址和MAC地址分别是
主机A 
IP  10.10.41.102
MAC  08:00:27:4B:63:93
主机B
IP  10.10.41.142
MAC  08:00:27:47:78:55
现在使用arping命令分别向两个IP发送ARP REQUEST
$ sudo arping 10.10.41.142
ARPING 10.10.41.142 from 10.10.41.17 eth0
Unicast reply from 10.10.41.142 [08:00:27:4B:63:93]  1.721ms
Unicast reply from 10.10.41.142 [08:00:27:4B:63:93]  1.774ms
Unicast reply from 10.10.41.142 [08:00:27:4B:63:93]  2.626ms
Unicast reply from 10.10.41.142 [08:00:27:4B:63:93]  1.174ms
Unicast reply from 10.10.41.142 [08:00:27:4B:63:93]  1.164ms
^CSent 5 probes (1 broadcast(s))
Received 5 response(s)
$ sudo arping 10.10.41.102
ARPING 10.10.41.102 from 10.10.41.17 eth0
Unicast reply from 10.10.41.102 [08:00:27:4B:63:93]  1.988ms
Unicast reply from 10.10.41.102 [08:00:27:4B:63:93]  1.266ms
Unicast reply from 10.10.41.102 [08:00:27:4B:63:93]  1.478ms
Unicast reply from 10.10.41.102 [08:00:27:4B:63:93]  1.243ms
^CSent 4 probes (1 broadcast(s))
Received 4 response(s)
可以看到10.10.41.142这个IP返回的不是它该有的MAC地址

分享到:
评论

相关推荐

    linux下arp欺骗源代码

    以上是对“linux下arp欺骗源代码”这一主题的详细阐述,涵盖了ARP协议的基础知识、ARP欺骗的原理、arpspoof工具的使用以及Linux编程相关的知识。了解这些内容,不仅可以帮助我们防范网络攻击,也能为网络安全研究和...

    Linux下C语言操作静态ARP表,包括增加、查询和删除,完整源代码

    Linux下C语言操作静态ARP表,包括增加、查询和删除,完整源代码,直接gcc可以编译,可运行测试。

    linux 下ARP请求包发送程序

    在Linux操作系统中,ARP(Address Resolution Protocol)是一种用于获取网络中IP地址对应的物理MAC地址的协议。ARP请求包发送程序是实现这一功能的工具,它允许我们主动向网络中的目标设备发送ARP请求,以获取其MAC...

    arp_linux.rar_arp_arp linux_linux ARP_linux下apr协议_perhapssma

    标题中的"arp_linux.rar_arp_arp linux_linux ARP_linux下apr协议_perhapsma"暗示了这个压缩包包含有关Linux环境中ARP(Address Resolution Protocol)协议的资料,可能是一个名为"arp_linux"的源代码文件,用于在...

    linux下收发arp包

    在Linux环境下,可以通过Socket API来实现对ARP数据包的收发操作。本文将详细介绍如何在Linux环境下利用Socket API来实现ARP数据包的发送与接收。 #### 二、Socket API简介 在Linux系统中,Berkeley Socket API 是...

    arp.zip_RAW_arp linux_arp 测试源码_linux ARP

    本压缩包“arp.zip_RAW_arp_linux_arp 测试源码_linux ARP”包含了Linux下关于ARP协议的原始套接字(raw socket)测试源码,这为深入学习和实践ARP工作原理提供了宝贵的资料。 `arp.c`文件很可能是实现这一功能的...

    Linux系统中ARP的编程实现技术.pdf

    Linux系统是一个开源的多用户、多进程、实时性较好的操作系统,支持多种网络协议,包括TCP/IP协议。Linux系统提供了多种网络通信应用程序开发接口,其中最常用的就是Socket接口。 Socket接口是一种低层的开发接口,...

    Linux系统下ARP数据包截取和分析.pdf

    在Linux操作系统中,ARP(Address Resolution Protocol,地址解析协议)数据包的截取和分析是网络安全管理和故障排查的重要手段。ARP协议主要用于解决IP地址到物理地址(MAC地址)的映射问题,但同时也可能成为网络...

    arp广播发送和接收linux程序

    在Linux系统中,ARP的操作可以通过编程实现,本主题涉及的是在Linux环境下编写发送和接收ARP广播的程序。 1. ARP协议基础: ARP协议是基于TCP/IP协议栈的,工作在OSI模型的第二层——数据链路层。它通过发送广播...

    基于Linux的ARP检测与防御系统.pdf

    基于Linux的ARP检测与防御系统.pdf

    基于Linux的ARP防火墙的研究与实现.pdf

    基于Linux的ARP防火墙的研究与实现.pdf

    linux ARP协议

    在Linux环境下安装Wireshark通常包括几个步骤:下载源码包、解压、配置、编译和安装。这里提供了一个在RHEL 6.4上的安装实例: 1. **下载源码包**:从官方网站http://www.wireshark.org/download.html 下载...

    Linux系统中ARP欺骗攻击的防范.pdf

    在网络安全领域,ARP欺骗是一种常见的攻击手段,尤其在Linux操作系统中,由于ARP协议的特性,攻击者可以利用它来干扰网络通信,导致数据包被错误地转发,甚至窃取敏感信息。ARP(Address Resolution Protocol)协议...

    linux下原始socket实现ARP局域网欺骗工具

    总结起来,Linux下的原始套接字提供了对ARP协议的底层访问,使得开发者能够实现ARP欺骗工具。这种工具虽然在网络安全研究和测试中有用,但滥用可能会导致严重的安全问题。因此,对ARP欺骗的理解和应用应始终谨慎行事...

    使用kali linux实现arp欺骗

    Kali Linux是一个专门用于渗透测试和安全评估的Linux发行版,它预装了很多安全相关的工具,其中包括用于实施ARP欺骗的工具如arpspoof。使用Kali Linux实现ARP欺骗,攻击者能够轻松地截获局域网中的数据包,进行中间...

    linux下面 arp协议实现和测试用例

    在Linux操作系统中,ARP(Address Resolution Protocol,地址解析协议)是一种关键的网络协议,用于将IP地址转换为物理层的MAC地址。这个过程被称为“地址解析”,是TCP/IP协议栈中的重要组成部分。ARP协议允许设备...

    Linux桥接状态下对ARP欺瞒的一种解决方法.pdf

    Linux桥接状态下对ARP欺瞒的一种解决方法.pdf

    Linux防止ARP攻击一些方法总结linux操作系统电脑资料.doc

    - 可以编写一个Shell脚本来自动执行上述操作,例如`arpDefend.sh`脚本,脚本中包含了静态绑定网关MAC,以及使用`arpoison`发送ARP回复以更新目标IP的MAC地址。 5. **启用ARP代理**: - 在某些网络环境中,可以...

    linux-使用ARP协议在您的网络中检测新的未知设备的命令行工具

    在Linux中,我们可以通过以下命令来查看和操作ARP缓存: 1. **arp** 命令:显示当前ARP缓存中的条目。例如,`arp -a` 或 `ip neighbor show` 可以列出所有已知的IP-MAC映射。 2. **arping** 工具:主动发送ARP请求...

    Linux 下一个ARP解析程序

    在Linux操作系统环境中,ARP(Address Resolution Protocol)是网络层协议,用于将IP地址转换为物理MAC地址,以便数据能够在局域网(LAN)上正确传输。反向ARP(Reverse ARP,RARP)则是相反的过程,它允许设备通过...

Global site tag (gtag.js) - Google Analytics