目录

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 优点

  1. 代理 ARP 的主要优点是它可以添加到网络上的单个路由器,而不会干扰网络上其他路由器的路由表。
  2. 如果 IP 主机没有配置默认网关,或者没有任何路由智能功能,则必须在网络中使用代理 ARP。

3.2 缺点

主机不了解其网络的物理详情,因而假定它是一个平面网络,它们只需通过发送 ARP 请求就能到达所有目标。但是,将 ARP 用于任何场合也有缺点。下面是一些缺点:

  1. 它增加了网段中的 ARP 流量。
  2. 主机需要更大的 ARP 表才能处理 IP 到 MAC 地址的映射。
  3. 安全性可能遭到破坏。为了拦截数据包,某台计算机可能会假借另一台计算机的名义,这是一种“欺骗”行为。
  4. 它不适用于不使用 ARP 进行地址解析的网络。
  5. 它不通用于所有网络拓扑。例如,连接两个物理网络的多个路由器。

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代理(善意的欺骗)相关推荐

  1. 图解ARP协议(四)代理ARP:善意的欺骗

    首发于 跟杰哥学网络与安全 写文章 登录 图解ARP协议(四)代理ARP:善意的欺骗 拼客学院陈鑫杰 24 天前 一.代理ARP概述 我:当电脑要访问互联网上的服务器,目标MAC是什么? 很多小伙伴在 ...

  2. 图解ARP协议(四)代理ARP原理与实践(“善意的欺骗”)

    一.代理ARP概述 我:当电脑要访问互联网上的服务器,目标MAC是什么? 很多小伙伴在刚学习网络协议的时候,经常这样直接回应:不就是服务器的MAC嘛! 这时我会反问:那电脑怎么拿到这个服务器的MAC地 ...

  3. 代理ARP原理与实践(“善意的欺骗”)

    一.代理ARP概述 我:当电脑要访问互联网上的服务器,目标MAC是什么? 很多小伙伴在刚学习网络协议的时候,经常这样直接回应:不就是服务器的MAC嘛! 这时我会反问:那电脑怎么拿到这个服务器的MAC地 ...

  4. 【ARP地址解析协议(完整解析过程、ARP欺骗、免费ARP、ARP代理)】-20211125【下】

    目录 一.ARP地址解析协议 ARP地址解析协议:将IP地址解析为Mac地址 ARP地址解析过程 1)pc1首先会查询自身的ARP缓存表,是否存在目标ARP缓存条目. ARP请求报文(原理) 2)由于 ...

  5. ARP家族--ARP,代理ARP,Gratuitous ARP

    ARP背景: 当思考主机A和主机B互相通信,人们更关注的是域名或者IP地址,但是在内核层面,机器更关注的链路层地址(MAC地址),而不关注上层的应用.主机之间如何获取MAC地址,那么就引入了ARP的概 ...

  6. Linux ARP代理 与 NAT

    有时候我们会在一个已有网络(10.10.10.0/24)内组建一个实验网络(192.168.1.0/24),网络结构如上图所示. 假设我们不能控制(修改)A网络内除D主机以外的系统配置,但可以完全控制 ...

  7. ARP挂马***--嗅探欺骗的最恐怖方式

    ARP挂马***--嗅探欺骗的最恐怖方式 局域网内"交换型"网络环境中的嗅探***,利用的是ARP欺骗的原理,它是点对点地发生在3台主机(网关.欺骗主机与被欺骗主机)之间的. 然而 ...

  8. 利用ARP的攻击与欺骗实现网络监控和管理(长角牛监控机)

    实验目的:理解ARP的攻击与欺骗原理及在实际环境中的应用 实验环境: ① 两台vm虚拟机(win10系统与win7系统) ② 华为eNSP模拟软件 ③ NetrobocopSetup_v3.68长角牛 ...

  9. ARP代理(Proxy ARP)

    ARP代理通俗地说,就是由中间设备代替其他主机响应arp请求.下图展现了ARP代理工作的主要过程: ARP代理工作过程示意图 ARP代理工作的过程说明 1,192.168.0.16/16主机向外发送目 ...

最新文章

  1. 不明原因的约束报错的两种处理方式
  2. 什么是Python蛋?
  3. VTK:绘图之BarChart
  4. OpenCV图像颜色模型转换:cvtColor函数的使用
  5. CGAL window 10安装、Demo使用步骤以及问题解决记录
  6. 条件队列java_Java并发系列(4)AbstractQueuedSynchronizer源码分析之条件队列
  7. poj2586 Y2K Accounting Bug
  8. python set集合_Python字典(dict)和集合(set)
  9. 理解 Generator 的执行
  10. Django 2.0.1 官方文档翻译: 文档目录 (Page 1)
  11. 建立账套时,没有选择客户分类档案
  12. NDK-JNI实战教程(二) JNI官方中文资料
  13. TcpClient类异步接收数据
  14. java 网易邮箱_Java mail 163邮箱配置
  15. Git 设置SSH key
  16. leaflet 常用方法总结
  17. 骑士游历问题——至少需要多少步
  18. C语言度量代码质量常用指标,代码度量标准
  19. 【Android归纳】基于XListView的下拉刷新、上拉加载更多的控件分析
  20. 卷积神经网络之前向传播算法

热门文章

  1. AUTO CAD 圆角如何转换为直角?
  2. h5,移动端预览pdf文件,使用pdfh5插件
  3. 微信可上线类型与封杀理由
  4. 【Beta阶段】第三次Scrum Meeting
  5. 【Paper Reading】
  6. 项目打包打的是什么包_“微端打包+游戏平台”,H5游戏也可一键下载!
  7. 物联网通信原理第4章 中远距离无线通信技术
  8. linux万能显卡,万能显卡驱动如何安装使用?万能显卡驱动安装使用方法
  9. 安装docker桌面版(Windows)
  10. CSS (二) 背景