Arp-proxy-scape para redes superpuestas

En la interfaz del enrutador, la red 10.0.0.0.0/8 se usa al mismo tiempo en otras interfaces del mismo enrutador, se utilizan piezas de la red 10.0.0/8: 10.0.1.0/24 y 10.0.2.0/24. Al mismo tiempo, no hay un solo host de las redes 10.0.1.0/24 y 10.0.2.0/24 en la red 10.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0/24.

The problem is that hosts from the large network 10.0.0.0/8 will not be able to communicate with hosts from networks 10.0.1.0/24 and 10.0.2.0/24, since hosts on the network 10.0.0.0/8 believe that they are in one broadcasting segment with networks 10.0.1.0/24 and 10.0.2.0/24 and will send broadcast arp the WHO-E-SIS requests for networks for hosts 10.0.1.0/24 y 10.0.2.0/24 a los que no habrá nadie para responder.
Un ejemplo de ARP:
Solicitud ARP

Respuesta ARP:

La decisión correcta No. 1. La decisión más simple No. 2 para incluir ARP-Proxy en la interfaz del enrutador con una red 10.0.0.0.0/8, pero en diferentes proveedores, ARP-Proxy puede funcionar de manera diferente. Por ejemplo, Juniper ARP-Proxy tiene dos modos de operación: restringidos y sin restricciones.
Restricto: el conmutador responde a las solicitudes ARP en las que las redes físicas de la fuente y el destino son diferentes y no responde si las direcciones IP de origen y objetivo están en la misma subred. En este modo, los hosts en la misma subred se comunican sin proxy ARP. Le recomendamos que use este modo en el interruptor.
Sin restricciones: el conmutador responde a todas las solicitudes ARP para que tenga una ruta al destino. Este es el modo predeterminado (porque es el modo predeterminado en las configuraciones del sistema operativo Junos Networks Junos (Junos OS) que no sean el conmutador). Recomendamos el modo restringido en el interruptor.
En Cisco ARP-Proxy, el modo predeterminado se incluye en el modo restringido por Juniper.
ARP-Proxy en modo restringido no nos ayudará, ya que la dirección IP del remitente y la dirección IP del destinatario estarán en la misma red. La inclusión de ARP-Proxy en modo sin restricciones resolverá el problema, pero creará otro, ya que el ARP-Proxy responde a cualquier solicitud serán activados por el mecanismo para determinar las direcciones IP duplicadas. Al enviar el mensaje ARP gratuito, el anfitrión recibirá una respuesta de ARP-Proxy.
Las opciones No. 3 y No. 4 se reducen al aislamiento de hosts de una red entre sí en el nivel L2 y la comunicación entre los hosts a través de la interfaz L3 de la interfaz del enrutador y requieren cambios en la configuración de equipos de red, y también tienen sus propias restricciones y características.
Opción No. 5 para escribir su arp -proxy use python3 y scape, una herramienta para manipular paquetes de red.
Conectamos un nuevo host con Linux a la Red 10.0.0.0.0/8 a bordo y lanzamos ARP-Proxy, donde interceptaremos los paquetes con ARP-Request en el que la dirección IP del host solicitado ingresa a la red 10.0.1.0/24 y 10.0.2.0/24 y responderemos a ellos arp. Como resultado, los paquetes destinados a las redes 10.0.1.0/24 y 10.0.2.0/24 se enviarán a la red de la red 10.0.0.0/8 y se entregarán al destinatario.

Un ejemplo de un registro 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: -----------------------------------
En nuestro entorno, utilizamos la distribución Ubuntu Server 16.04 y el SystemD de moda para iniciar el script como un servicio.
mkdir /opt/arp-proxy
cp ~/arp-proxy.py /opt/arp-proxy/
Cree un archivo con la configuración del script SystemD:
touch /lib/systemd/system/arp-proxy.service
arp-proxy.servicio
[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
Para iniciar el ARP-Proxy, debe especificar el nombre de la interfaz que escuchará la solicitud ARP y enviará la respuesta ARP y la red Mac de la red que se utilizará en ARP Responder
Activamos y lanzamos nuestro servicio:
sudo systemctl enable arp-proxy.service
sudo systemctl start arp-proxy.service
Estado del servicio:
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
Administrar servicios en Systemd
Instalación de Scapy:
sudo pip3 install scapy-python3
Documentación escapar
Scape Doc PDF