SCAPE ARP-PROXY pour les réseaux chevauchés

Sur l'interface du routeur, le réseau 10.0.0.0/8 est utilisé en même temps sur d'autres interfaces du même routeur, des pièces du réseau 10.0.0 / 8: 10.0.1.0/24 et 10.0.2.0/24 sont utilisées. En même temps, il n'y a pas un seul hôte de Networks 10.0.1.0/24 et 10.0.2.0/24 sur le réseau 10.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 / 24.

Le problème est que les hôtes du grand réseau 10.0.0.0/8 ne pourront pas communiquer avec les hôtes des réseaux 10.0.1.0/24 et 10.0.2.0/24, car les hôtes sur le réseau 10.0.0.0/8 croient qu'ils sont dans un segment de radiodiffusion avec les réseaux 10.0.1.0/24 et 10.0.0/24 et envoient Broadflast The Who-e-Sis pour le réseau pour le réseau pour le réseau pour les réseaux pour le réseau pour les réseaux pour les réseaux pour les réseaux pour les réseaux pour les réseaux pour les réseaux pour les réseaux pour les réseaux pour les réseaux pour les réseaux pour les réseaux pour les réseaux pour les réseaux pour les réseaux pour les réseaux pour les réseaux pour les réseaux et les Network Hosts 10.0.1.0/24 et 10.0.2.0/24 auquel il n'y aura personne à répondre.
Un exemple d'ARP:
Demande ARP

Réponse ARP:

La bonne décision n ° 1. La décision la plus simple n ° 2 d'inclure ARP-Proxy sur l'interface du routeur avec un réseau 10.0.0.0/8, mais chez différents fournisseurs, ARP-Proxy peut fonctionner différemment. Par exemple, Juniper ARP-Proxy a deux modes de fonctionnement: restreint et sans restriction.
Restreint - Le commutateur répond aux demandes ARP dans lesquelles les réseaux physiques de la source et de la cible sont différents et ne répondent pas si les adresses IP source et cible sont sur le même sous-réseau. Dans ce mode, les hôtes sur le même sous-réseau communiquent sans ARP proxy. Nous vous recommandons d'utiliser ce mode sur le commutateur.
Sans restriction - Le commutateur répond à toutes les demandes ARP pour une route vers la destination. Il s'agit du mode par défaut (car c'est le mode par défaut dans les configurations du système d'exploitation JUNiper Networks Junos (Junos) autres que le commutateur). Nous recommandons en utilisant le mode restreint sur le commutateur.
Dans Cisco ARP-Proxy, le mode par défaut est inclus dans le mode restreint de Juniper.
ARP-Proxy en mode restreint ne nous aidera pas, car l'adresse IP de l'expéditeur et l'adresse IP du destinataire sera sur le même réseau. L'inclusion de l'ARP-Proxy en mode sans restriction résoudra le problème, mais en créera une autre, car l'ARP-Proxy répond à toutes les demandes seront déclenchées par le mécanisme de détermination des adresses IP en double. Lors de l'envoi du message ARP gratuit, l'hôte recevra une réponse d'ARP-Proxy.
Les options n ° 3 et n ° 4 sont réduites à l'isolement des hôtes d'un réseau les uns des autres au niveau L2 et à la communication entre les hôtes via le L3 de l'interface du routeur et nécessitent des modifications à la configuration de l'équipement réseau, et ont également leurs propres restrictions et fonctionnalités.
Option n ° 5 Pour écrire votre ARP -Proxy Utilisez Python3 et Scape - Un outil pour manipuler les packages réseau.
Nous connectons un nouvel hôte avec Linux au réseau 10.0.0.0.0 / 8 à bord et lancé ARP-Proxy, où nous intercepterons les packages avec ARP-Request dans lequel l'adresse IP de l'hôte demandé entre dans le réseau 10.0.1.0/24 et 10.0.2.0/24 et nous répondons à eux ARP-Reply avec l'adresse MAC de la passerelle de 10.0.0.0/8. En conséquence, les packages destinés aux réseaux 10.0.1.0/24 et 10.0.2.0/24 seront envoyés au réseau de réseau 10.0.0.0/8 et livrés au destinataire.

Un exemple de journal 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: -----------------------------------
Dans notre environnement, nous utilisons la distribution Ubuntu Server 16.04 et la mode SystemD pour lancer le script en tant que service.
mkdir /opt/arp-proxy
cp ~/arp-proxy.py /opt/arp-proxy/
Créez un fichier avec les paramètres 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
Pour lancer l'ARP-Proxy, vous devez spécifier le nom de l'interface qui écoutera la demande ARP et envoie la réponse ARP et le réseau Mac du réseau qui sera utilisé dans la réponse ARP
Nous activons et lançons notre service:
sudo systemctl enable arp-proxy.service
sudo systemctl start arp-proxy.service
État du 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
Gérer les services dans SystemD
Installation de scapides:
sudo pip3 install scapy-python3
Documentation de scape
Scape Doc PDF