重叠网络的ARP-Proxy-Scape

在路由器的界面上,网络10.0.0.0/8同时在同一路由器的其他接口上使用网络,网络10.0.0.0/8:10.0.0.1.0/24和10.0.2.0.2.0.0.2.0/24使用。同时,网络10.0.1.0/24和10.0.2.0/24网络上没有一个主机。

问题在于,来自大型网络10.0.0.0.0/8的主机将无法与网络10.0.1.0/24和10.0.2.0/24的主机进行沟通,因为网络上的主机10.0.0.0.0/8相信他们在一个广播中都在一个广播段中,网络请求10.0.1.1.0.1.0/24和10.0.2.2.2.2.2.2.0/24和SERS,该网络将播出who的范围。 10.0.1.0/24和10.0.2.0/24,没有人可以回答。
ARP的一个例子:
ARP请求

ARP回复:

正确的决策编号1。最简单的决策,即使用网络10.0.0.0/8在路由器接口上包括ARP-Proxy的最简单决定,但是在不同的供应商中,ARP-Proxy可以用不同的方式工作。例如,Juniper ARP-Proxy具有两种操作模式:受限制和无限制。
限制 - 开关响应源和目标的物理网络不同的ARP请求,如果源和目标IP地址在同一子网上,源和目标是不同的。在此模式下,在同一子网上的主机在没有代理ARP的情况下进行通信。我们建议您在开关上使用此模式。
不受限制的 - 开关响应所有ARP请求,都有通往目的地的路线。这是默认模式(因为它是杜松网络中的默认模式Junos操作系统(Junos OS)配置以外的其他模式)。我们在开关上使用限制模式推荐。
在Cisco ARP-Proxy中,Juniper在限制模式中包含默认模式。
在限制模式下的ARP-Proxy将无济于事,因为发件人的IP地址和收件人的IP地址将在同一网络上。在不受限制的模式下包含ARP-Proxy将解决该问题,但会创建另一个,因为ARP-Proxy对任何请求的响应将由确定重复IP地址的机制触发。在发送免费的ARP消息时,主机将收到ARP-Proxy的答案。
第3号和第4号的选项将减少为在L2级别隔离一个网络的主机,并通过路由器界面的L3之间的通信,并需要更改网络设备的配置,并且还具有自己的限制和功能。
第5号选项编写您的arp -proxy使用python3和spape - 一种操纵网络软件包的工具。
We connect a new host with Linux to the network 10.0.0.0.0/8 on board and launched ARP-Proxy, where we will intercept the packages with ARP-Request in which the IP address of the requested host enters the network 10.0.1.0/24 and 10.0.2.0/24 and respond to them Arp-Reply with the MAC address of the gateway of 10.0.0.0/8.结果,旨在用于网络10.0.1.0/24和10.0.2.0/24的软件包将发送到网络10.0.0.0/8的网络并交付给收件人。

log arp-proxy.py的一个示例:
2017-03-12 00:35:00,984 INFO STDOUT: -----------------------------------
2017-03-12 00:35:00,985 INFO STDOUT: ARP receive:
2017-03-12 00:35:00,985 INFO STDOUT: -----------------------------------
2017-03-12 00:35:00,986 INFO STDOUT: ###[ Ethernet ]###
2017-03-12 00:35:00,986 INFO STDOUT: dst = ff:ff:ff:ff:ff:ff
2017-03-12 00:35:00,986 INFO STDOUT: src = e4:8d:8c:79:dc:2e
2017-03-12 00:35:00,986 INFO STDOUT: type = 0x806
2017-03-12 00:35:00,987 INFO STDOUT: ###[ ARP ]###
2017-03-12 00:35:00,987 INFO STDOUT: hwtype = 0x1
2017-03-12 00:35:00,987 INFO STDOUT: ptype = 0x800
2017-03-12 00:35:00,987 INFO STDOUT: hwlen = 6
2017-03-12 00:35:00,987 INFO STDOUT: plen = 4
2017-03-12 00:35:00,988 INFO STDOUT: op = who-has
2017-03-12 00:35:00,988 INFO STDOUT: hwsrc = e4:8d:8c:79:dc:2e
2017-03-12 00:35:00,988 INFO STDOUT: psrc = 10.0.0.100
2017-03-12 00:35:00,988 INFO STDOUT: hwdst = 00:00:00:00:00:00
2017-03-12 00:35:00,988 INFO STDOUT: pdst = 10.0.1.55
2017-03-12 00:35:00,988 INFO STDOUT: ###[ Padding ]###
2017-03-12 00:35:00,989 INFO STDOUT: load = 'x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00'
2017-03-12 00:35:00,989 INFO STDOUT: -----------------------------------
2017-03-12 00:35:00,989 INFO STDOUT: -----------------------------------
2017-03-12 00:35:00,989 INFO STDOUT: ARP send:
2017-03-12 00:35:00,989 INFO STDOUT: -----------------------------------
2017-03-12 00:35:00,989 INFO STDOUT: ###[ Ethernet ]###
2017-03-12 00:35:00,989 INFO STDOUT: dst = e4:8d:8c:79:dc:2e
2017-03-12 00:35:00,989 INFO STDOUT: src = 00:0c:29:85:7d:35
2017-03-12 00:35:00,990 INFO STDOUT: type = 0x806
2017-03-12 00:35:00,990 INFO STDOUT: ###[ ARP ]###
2017-03-12 00:35:00,990 INFO STDOUT: hwtype = 0x1
2017-03-12 00:35:00,990 INFO STDOUT: ptype = 0x800
2017-03-12 00:35:00,990 INFO STDOUT: hwlen = 6
2017-03-12 00:35:00,990 INFO STDOUT: plen = 4
2017-03-12 00:35:00,990 INFO STDOUT: op = is-at
2017-03-12 00:35:00,991 INFO STDOUT: hwsrc = 90:fa:3d:aa:bb:cc
2017-03-12 00:35:00,991 INFO STDOUT: psrc = 10.0.1.55
2017-03-12 00:35:00,991 INFO STDOUT: hwdst = e4:8d:8c:79:dc:2e
2017-03-12 00:35:00,991 INFO STDOUT: pdst = 10.0.0.100
2017-03-12 00:35:00,991 INFO STDOUT: -----------------------------------
在我们的环境中,我们使用Ubuntu Server 16.04分发和SystemD时尚播放脚本作为服务。
mkdir /opt/arp-proxy
cp ~/arp-proxy.py /opt/arp-proxy/
使用SystemD脚本设置创建文件:
touch /lib/systemd/system/arp-proxy.service
arp-proxy.Service
[Unit]
Description=arp-proxy for overlapped networks
[Service]
Type=simple
ExecStart=/opt/arp-proxy/arp-proxy.py enp4s0 00:05:00:05:00:05
StandardOutput=null
Restart=always
[Install]
WantedBy=multi-user.target
要启动ARP-Proxy,您需要指定将收听ARP请求的接口名称,并发送ARP回复和将在ARP中使用的网络的Mac网络
我们激活并启动我们的服务:
sudo systemctl enable arp-proxy.service
sudo systemctl start arp-proxy.service
服务状态:
sudo systemctl status arp-proxy.service
● arp-proxy.service - arp-proxy for overlapped networks
Loaded: loaded (/lib/systemd/system/arp-proxy.service; enabled; vendor preset: enabled)
Active: active (running) since Вс 2017-03-12 18:41:01 MSK; 7s ago
Main PID: 10294 (python3)
Tasks: 1
Memory: 18.6M
CPU: 981ms
CGroup: /system.slice/arp-proxy.service
└─10294 python3 /opt/arp-proxy/arp-proxy.py enp4s0 00:05:00:05:00:05
管理SystemD中的服务
Scapy安装:
sudo pip3 install scapy-python3
替代文档
Scape Doc PDF