ARP-Proxy-Scera para redes sobrepostas

Na interface do roteador, a rede 10.0.0.0/8 é usada ao mesmo tempo em outras interfaces do mesmo roteador, são utilizadas peças da rede 10.0.0/8: 10.1.0/24 e 10.0.2.0/24. Ao mesmo tempo, não existe um único host das redes 10.0.1.0/24 e 10.0.2.0/24 na rede 10.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0/24.

O problema é que os hosts da grande rede 10.0.0.0/8 não poderão se comunicar com os hosts das redes 10.0.1.0/24 e 10.0.2.0/24, já que os hosts na rede 10.0.0.0/8 acreditam que estão em um segmento de transmissão com as redes 10.0.1.0/24 e 10.2.0.0. 10.0.1.0/24 e 10.0.2.0/24 ao qual não haverá ninguém para responder.
Um exemplo de ARP:
Solicitação ARP

Resposta ARP:

A decisão certa nº 1. A decisão mais simples nº 2 para incluir o Proxy ARP na interface do roteador com uma rede 10.0.0.0/8, mas em diferentes fornecedores, o ARP-proxy pode funcionar de maneira diferente. Por exemplo, o Juniper ARP-Proxy possui dois modos operacionais: restrito e irrestrito.
RESTRITO - O Switch responde às solicitações de ARP nas quais as redes físicas da fonte e do destino são diferentes e não responderão se a fonte e os endereços IP de destino estiverem na mesma sub -rede. Nesse modo, os hosts na mesma sub -rede se comunicam sem proxy ARP. Recomendamos que você use este modo no comutador.
Irrestrito - o interruptor responde a todas as solicitações de ARP para ter uma rota para o destino. Este é o modo padrão (porque é o modo padrão nas configurações do Juniper Networks Junos Operating System (Junos OS) que não sejam o comutador). Recommentamos usando o modo restrito no comutador.
No Cisco ARP-Proxy, o modo padrão está incluído no modo restrito pelo zimbro.
O Proxy ARP no modo restrito não nos ajudará, pois o endereço IP do remetente e o endereço IP do destinatário estarão na mesma rede. A inclusão do proxi ARP no modo irrestrito resolverá o problema, mas criará outro, uma vez que o proxi ARP responder a quaisquer solicitações será acionado pelo mecanismo para determinar endereços IP duplicados. Ao enviar a mensagem ARP gratuita, o host receberá uma resposta do ARP-Proxy.
As opções nº 3 e 4 são reduzidas ao isolamento de hosts de uma rede um do outro no nível L2 e a comunicação entre os hosts através do L3 da interface do roteador e requerem alterações na configuração do equipamento de rede e também têm suas próprias restrições e recursos.
Opção No. 5 Para escrever seu ARP -Proxy Use Python3 e SCAPE - Uma ferramenta para manipular pacotes de rede.
Conectamos um novo host com o Linux à rede 10.0.0.0.0/8 a bordo e lançamos o Proxy ARP, onde interceptaremos os pacotes com o arp-solicitação no qual o endereço IP do host solicitado entra na rede 10.0.1.0/24 e 10.0.2.0/24 e. Como resultado, os pacotes destinados às redes 10.0.1.0/24 e 10.0.2.0/24 serão enviados para a rede da rede 10.0.0.0/8 e entregues ao destinatário.

Um exemplo de um 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: -----------------------------------
Em nosso ambiente, usamos a distribuição do Ubuntu Server 16.04 e o Systemd Motherable para iniciar o script como um serviço.
mkdir /opt/arp-proxy
cp ~/arp-proxy.py /opt/arp-proxy/
Crie um arquivo com configurações de script 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
Para lançar o Proxy ARP, você precisa especificar o nome da interface que ouvirá a solicitação ARP e enviará a resposta ARP e a rede Mac da rede que será usada na resposta ARP
Ativamos e lançamos nosso serviço:
sudo systemctl enable arp-proxy.service
sudo systemctl start arp-proxy.service
Status do serviço:
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
Gerenciar serviços no Systemd
Instalação SCAPY:
sudo pip3 install scapy-python3
Documentação da SCAPE
Scape Doc Pdf