ARP代理(善意的欺骗)
目录
1 ARP代理概述
2 代理ARP工作流程
3 代理 ARP 的优缺点
3.1 优点
3.2 缺点
4 linux上配置ARP代理
4.1 hostA配置
4.2 router配置
4.3 hostD配置
4.4 结果显示
1 ARP代理概述
本文档解释了代理地址解析协议 (ARP) 的概念。代理 ARP 是一种技术,即一台主机(通常是路由器)应答要发送至另一台机器的 ARP 请求。"通过"伪造"其身份,需要说明的是这里的"伪造"是一种善意的欺骗,路由器负责将信息包路由到“真实”目的地。"代理 ARP 可以帮助子网中的计算机到达远程子网,而无需配置路由或默认网关。RFC 1027 中定义了代理 ARP。
2 代理ARP工作流程
下面是代理 ARP 如何工作的示例,网络图摘自《Proxy ARP》
子网 A 上的主机 A (172.16.10.100) 需要向子网 B 上的主机 D (172.16.20.200) 发送数据包。如图所示,主机 A 有一个 /16 子网掩码。这意味着主机 A 相信它能够直接连接到整个 172.16.0.0 网络。当主机 A 需要与它相信能够直接连接的任何设备进行通信时,它将向目标发送一个 ARP 请求。因此,当主机 A 需要向主机 D 发送数据包时,主机 A 相信主机 D 是直接连接的,因此它向主机 D 发送一个 ARP 请求。
为了访问主机 D (172.16.20.200),主机 A 需要主机 D 的 MAC 地址。
因此,主机 A 在子网 A 中广播一个 ARP 请求,如下显示:
发送方的 MAC 地址 发送方的 IP 地址 目标 MAC 地址 目标 IP 地址
00-00-0c-94-36-aa 172.16.10.100 00-00-00-00-00-00 172.16.20.200
在此 ARP 请求中,主机 A (172.16.10.100) 请求主机 D (172.16.20.200) 发送其 MAC 地址。然后,该 ARP 请求数据包封装在一个以太网帧中,并将主机 A 的 MAC 地址作为源地址,将广播地址 (FFFF.FFFF.FFFF) 作为目标地址。由于 ARP 请求是一种广播,因此它能够访问子网 A 中的所有节点(包括路由器的 e0 接口),但不能访问主机 D。由于默认情况下路由器不转发广播,因此广播不会到达主机 D。
由于路由器知道目标地址 (172.16.20.200) 在另一个子网上,并且能访问主机 D,这一点非常重要,因此它向主机 A 回复自己的 MAC 地址。
发送方的 MAC 地址 发送方的 IP 地址 目标 MAC 地址 目标 IP 地址
00-00-0c-94-36-ab 172.16.20.200 00-00-0c-94-36-aa 172.16.10.100
这是路由器发送到主机 A 的代理 ARP 应答。代理 ARP 应答数据包封装在一个以太网帧中,并将路由器的 MAC 地址作为源地址,将主机 A 的 MAC 地址作为目标地址。ARP 应答总是单播到原始请求方。
收到此ARP应答后,主机A更新其ARP表,如显示:
IP 地址 Mac 地址
172.16.20.200 00-00-0c-94-36-ab
从现在起,主机 A 将它希望发送至 172.16.20.200(主机 D)的所有数据包转发到 MAC 地址 00-00-0c-94-36-ab(路由器)。因为路由器知道如何到达主机 D,所以路由器将数据包转发给主机 D。子网 B 上所有主机的路由器 MAC 地址都存放在子网 A 中主机的 ARP 缓存中。因此,目标为子网 B 的所有数据包都发送到路由器。路由器将这些数据包转发给子网 B 中的主机。
下表显示了主机 A 的 ARP 缓存:
IP 地址 Mac 地址
172.16.20.200 00-00-0c-94-36-ab
172.16.20.100 00-00-0c-94-36-ab
172.16.10.99 00-00-0c-94-36-ab
172.16.10.200 00-00-0c-94-36-bb
注意: 多个 IP 地址映射到单个 MAC 地址(此路由器的 MAC 地址),表示代理 ARP 正在使用中。
必须配置 Cisco 的接口,才能接受和响应代理 ARP。默认情况下启用该接口。必须在连接到 ISP 路由器的路由器接口上配置 no ip proxy-arp 命令。可以使用接口配置命令 no ip proxy-arp 在每个接口上单独禁用代理 ARP,如下所示:
Router# configure terminalEnter configuration commands, one per line. End with CNTL/Z.Router(config)# interface ethernet 0Router(config-if)# no ip proxy-arpRouter(config-if)# ^ZRouter#
若要在接口上启用代理 ARP,请发出 ip proxy-arp 接口配置命令。
注意: 当子网 A 上的主机 B (172.16.10.200/24) 试图向子网 B 上的目标主机 D (172.16.20.200) 发送数据包时,它会查看其 IP 路由表,并相应地路由数据包。主机 B (172.16.10.200/24) 不对主机 D IP 地址 172.16.20.200 进行 ARP,因为它与主机 B 以太网接口 172.16.20.200/24 上配置的地址属于不同的子网。
3 代理 ARP 的优缺点
3.1 优点
- 代理 ARP 的主要优点是它可以添加到网络上的单个路由器,而不会干扰网络上其他路由器的路由表。
- 如果 IP 主机没有配置默认网关,或者没有任何路由智能功能,则必须在网络中使用代理 ARP。
3.2 缺点
主机不了解其网络的物理详情,因而假定它是一个平面网络,它们只需通过发送 ARP 请求就能到达所有目标。但是,将 ARP 用于任何场合也有缺点。下面是一些缺点:
- 它增加了网段中的 ARP 流量。
- 主机需要更大的 ARP 表才能处理 IP 到 MAC 地址的映射。
- 安全性可能遭到破坏。为了拦截数据包,某台计算机可能会假借另一台计算机的名义,这是一种“欺骗”行为。
- 它不适用于不使用 ARP 进行地址解析的网络。
- 它不通用于所有网络拓扑。例如,连接两个物理网络的多个路由器。
4 linux上配置ARP代理
由于手头没有思科路由器,这里通过选取三台普通 linux系统设备分别模仿上图的hostA、router、hostD
hostA:eth6[172.16.10.100/16]<--->router:eth13[172.16.10.99/24]router:eth15[172.16.20.99/24]<---> hostD:eth12[172.16.20.200/24]
4.1 hostA配置
[root@hostA /]# ifconfig eth6 172.16.10.100/16
[root@hostA /]# ifconfig eth6
eth6 Link encap:Ethernet HWaddr 00:12:62:E4:99:CEinet addr:172.16.10.100 Bcast:172.16.255.255 Mask:255.255.0.0inet6 addr: fe80::212:62ff:fee4:99ce/64 Scope:LinkUP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1RX packets:23050879 errors:0 dropped:0 overruns:0 frame:0TX packets:7806356 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:2817919383 (2.6 GiB) TX bytes:749434839 (714.7 MiB)
4.2 router配置
[root@localhost /]# ifconfig eth13 172.16.10.99/24
[root@localhost /]# ifconfig eth15 172.16.20.99/24
[root@localhost /]# echo 1 > /proc/sys/net/ipv4/ip_forward
[root@localhost /]# echo 1 > /proc/sys/net/ipv4/conf/eth13/proxy_arp
[root@localhost /]# ifconfig
eth13 Link encap:Ethernet HWaddr 00:12:62:E4:99:8Cinet addr:172.16.10.99 Bcast:172.16.10.255 Mask:255.255.255.0inet6 addr: fe80::212:62ff:fee4:998c/64 Scope:LinkUP BROADCAST RUNNING PROMISC MULTICAST MTU:1504 Metric:1RX packets:20636494 errors:0 dropped:0 overruns:0 frame:0TX packets:4816989 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:1667300375 (1.5 GiB) TX bytes:871254498 (830.8 MiB)
...
eth15 Link encap:Ethernet HWaddr 00:12:62:E4:99:90inet addr:172.16.20.99 Bcast:172.16.20.255 Mask:255.255.255.0inet6 addr: fe80::212:62ff:fee4:9990/64 Scope:LinkUP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1RX packets:51 errors:0 dropped:0 overruns:0 frame:0TX packets:889 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:4936 (4.8 KiB) TX bytes:61374 (59.9 KiB)Interrupt:16
...
[root@localhost /]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
172.16.20.0 * 255.255.255.0 U 0 0 0 eth15
172.16.10.0 * 255.255.255.0 U 0 0 0 eth13
....
[root@localhost /]#
关于代理的arp配置,首先代理是这对网口配置的,可以通过直接修改配置文件proxy_arp ,也可以通过指令sysctl指令,重启不会丢失。
sysctl -w "net.ipv4.conf.eth13.proxy_arp=1"
还有一点需要注意的是,linux系统转发配置时默认关闭的,转发报文时需要手动打开
4.3 hostD配置
[root@hostD ~]# ifconfig eth12 172.16.20.200/24
[root@hostD ~]# ifconfig eth12
eth12 Link encap:Ethernet HWaddr 20:13:06:17:03:04inet addr:172.16.20.200 Bcast:172.16.20.255 Mask:255.255.255.0inet6 addr: fe80::2213:6ff:fe17:304/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:291699 errors:0 dropped:0 overruns:0 frame:0TX packets:39 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:18669794 (17.8 MiB) TX bytes:3554 (3.4 KiB)Interrupt:16[root@hostD ~]# route add -net 172.16.10.100 netmask 255.255.255.255 gw 172.16.20.99
[root@hostD ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
172.16.10.100 172.16.20.99 255.255.255.255 UGH 0 0 0 eth12
172.16.20.0 * 255.255.255.0 U 0 0 0 eth12
....
4.4 结果显示
======================hostA================================
[root@hostA /]# ping 172.16.20.200
PING 172.16.20.200 (172.16.20.200) 56(84) bytes of data.
From 172.16.10.100 icmp_seq=1 Destination Host Unreachable
From 172.16.10.100 icmp_seq=3 Destination Host Unreachable
...
From 172.16.10.100 icmp_seq=25 Destination Host Unreachable
64 bytes from 172.16.20.200: icmp_seq=26 ttl=63 time=2773 ms //router中写入arp代理配置
64 bytes from 172.16.20.200: icmp_seq=27 ttl=63 time=1773 ms
64 bytes from 172.16.20.200: icmp_seq=28 ttl=63 time=773 ms
....[root@hostA /]# arp
Address HWtype HWaddress Flags Mask Iface
172.16.20.200 ether 00:12:62:e4:99:8c C eth6
172.16.10.99 ether 00:12:62:e4:99:8c C eth6
...======================router==============================
[root@localhost /]# arp
Address HWtype HWaddress Flags Mask Iface
172.16.20.200 ether 20:13:06:17:03:04 C eth15
172.16.10.100 ether 00:12:62:e4:99:ce C eth13
....
[root@localhost /]#======================hostD================================
[root@hostD ~]# arp
Address HWtype HWaddress Flags Mask Iface
172.16.20.99 ether 00:12:62:e4:99:90 C eth12
...
[root@localhost ~]#
ARP代理(善意的欺骗)相关推荐
- 图解ARP协议(四)代理ARP:善意的欺骗
首发于 跟杰哥学网络与安全 写文章 登录 图解ARP协议(四)代理ARP:善意的欺骗 拼客学院陈鑫杰 24 天前 一.代理ARP概述 我:当电脑要访问互联网上的服务器,目标MAC是什么? 很多小伙伴在 ...
- 图解ARP协议(四)代理ARP原理与实践(“善意的欺骗”)
一.代理ARP概述 我:当电脑要访问互联网上的服务器,目标MAC是什么? 很多小伙伴在刚学习网络协议的时候,经常这样直接回应:不就是服务器的MAC嘛! 这时我会反问:那电脑怎么拿到这个服务器的MAC地 ...
- 代理ARP原理与实践(“善意的欺骗”)
一.代理ARP概述 我:当电脑要访问互联网上的服务器,目标MAC是什么? 很多小伙伴在刚学习网络协议的时候,经常这样直接回应:不就是服务器的MAC嘛! 这时我会反问:那电脑怎么拿到这个服务器的MAC地 ...
- 【ARP地址解析协议(完整解析过程、ARP欺骗、免费ARP、ARP代理)】-20211125【下】
目录 一.ARP地址解析协议 ARP地址解析协议:将IP地址解析为Mac地址 ARP地址解析过程 1)pc1首先会查询自身的ARP缓存表,是否存在目标ARP缓存条目. ARP请求报文(原理) 2)由于 ...
- ARP家族--ARP,代理ARP,Gratuitous ARP
ARP背景: 当思考主机A和主机B互相通信,人们更关注的是域名或者IP地址,但是在内核层面,机器更关注的链路层地址(MAC地址),而不关注上层的应用.主机之间如何获取MAC地址,那么就引入了ARP的概 ...
- Linux ARP代理 与 NAT
有时候我们会在一个已有网络(10.10.10.0/24)内组建一个实验网络(192.168.1.0/24),网络结构如上图所示. 假设我们不能控制(修改)A网络内除D主机以外的系统配置,但可以完全控制 ...
- ARP挂马***--嗅探欺骗的最恐怖方式
ARP挂马***--嗅探欺骗的最恐怖方式 局域网内"交换型"网络环境中的嗅探***,利用的是ARP欺骗的原理,它是点对点地发生在3台主机(网关.欺骗主机与被欺骗主机)之间的. 然而 ...
- 利用ARP的攻击与欺骗实现网络监控和管理(长角牛监控机)
实验目的:理解ARP的攻击与欺骗原理及在实际环境中的应用 实验环境: ① 两台vm虚拟机(win10系统与win7系统) ② 华为eNSP模拟软件 ③ NetrobocopSetup_v3.68长角牛 ...
- ARP代理(Proxy ARP)
ARP代理通俗地说,就是由中间设备代替其他主机响应arp请求.下图展现了ARP代理工作的主要过程: ARP代理工作过程示意图 ARP代理工作的过程说明 1,192.168.0.16/16主机向外发送目 ...
最新文章
- 不明原因的约束报错的两种处理方式
- 什么是Python蛋?
- VTK:绘图之BarChart
- OpenCV图像颜色模型转换:cvtColor函数的使用
- CGAL window 10安装、Demo使用步骤以及问题解决记录
- 条件队列java_Java并发系列(4)AbstractQueuedSynchronizer源码分析之条件队列
- poj2586 Y2K Accounting Bug
- python set集合_Python字典(dict)和集合(set)
- 理解 Generator 的执行
- Django 2.0.1 官方文档翻译: 文档目录 (Page 1)
- 建立账套时,没有选择客户分类档案
- NDK-JNI实战教程(二) JNI官方中文资料
- TcpClient类异步接收数据
- java 网易邮箱_Java mail 163邮箱配置
- Git 设置SSH key
- leaflet 常用方法总结
- 骑士游历问题——至少需要多少步
- C语言度量代码质量常用指标,代码度量标准
- 【Android归纳】基于XListView的下拉刷新、上拉加载更多的控件分析
- 卷积神经网络之前向传播算法