ARP-Proxy-Scape für überlappte Netzwerke

Auf der Schnittstelle des Routers wird das Netzwerk 10.0.0.0/8 gleichzeitig an anderen Schnittstellen desselben Routers verwendet. Teile aus dem Netzwerk 10.0.0/8: 10.0.0/24 und 10.0.2.0/24 werden verwendet. Gleichzeitig gibt es keinen einzigen Host aus den Netzwerken 10.0.1.0/24 und 10.0.2.0/24 im Netzwerk 10.0.0.0.0.0.0.0.0.0.0.0.0.0/24.

Das Problem ist, dass Hosts aus dem großen Netzwerk 10.0.0.0/8 nicht mit Hosts von Networks 10.0.1.0/24 und 10.0.2.0/24 kommunizieren können, da Hosts im Netzwerk 10.0.0.0/8 glauben, dass sie in einem Rundfunk-Segment mit Networks 10.0.0.0.0.0.0.0.0.0.0.2.0.24 und 10.0.0.0.0.24 und 24 Sendungen zu Sendungen an die Whoss-Ssis-Wagen und -A-Wagen zu Senden von Rundfrears und -E-24 und 10.0.2. 10.0.1.0/24 und 10.0.2.0/24, auf den es niemanden gibt.
Ein Beispiel für ARP:
ARP -Anfrage

ARP -Antwort:

Die richtige Entscheidung Nr. 1. Die einfachste Entscheidung Nr. 2 für ARP-Proxy in die Router-Schnittstelle mit einem Netzwerk 10.0.0.0/8, aber in verschiedenen Anbietern kann ARP-Proxy anders funktionieren. Zum Beispiel hat Juniper ARP-Proxy zwei Betriebsmodi: eingeschränkt und uneingeschränkt.
Beschränkt - Der Switch reagiert auf ARP -Anforderungen, in denen sich die physischen Netzwerke der Quelle und des Ziels unterscheiden und nicht reagieren, wenn sich die Quelle und die Ziel -IP -Adressadressen auf demselben Subnetz befinden. In diesem Modus kommunizieren Hosts auf demselben Subnetz ohne Proxy ARP. Wir empfehlen, diesen Modus auf dem Switch zu verwenden.
Nicht eingeschränkt - der Switch reagiert auf alle ARP -Anfragen für eine Route zum Ziel. Dies ist der Standardmodus (da der Standardmodus in Junos -OS -OS -OS -OS -OS -Konfigurationen (Juniper Networks Junos Operating System) außer dem Switch). Wir empfehlen mit dem eingeschränkten Modus auf dem Switch.
In Cisco ARP-Proxy ist der Standardmodus von Juniper im eingeschränkten Modus enthalten.
ARP-Proxy im eingeschränkten Modus hilft uns nicht, da sich die IP-Adresse des Absenders und der IP-Adresse des Empfängers im selben Netzwerk befindet. Die Einbeziehung von ARP-Proxy in den uneingeschränkten Modus löst das Problem, erzeugt jedoch ein anderes, da der ARP-Proxy auf alle Anforderungen reagiert, die vom Mechanismus zur Bestimmung doppelter IP-Adressen ausgelöst werden. Beim Senden der unentgeltlichen ARP-Nachricht erhält der Host eine Antwort von ARP-Proxy.
Die Optionen Nr. 3 und Nr. 4 werden auf L2 -Ebene und die Kommunikation zwischen den Hosts über das L3 der Router -Schnittstelle auf die Isolierung von Hosts eines Netzwerks voneinander reduziert und Änderungen an der Konfiguration der Netzwerkgeräte erfordern und über eigene Einschränkungen und Merkmale verfügen.
Option Nr. 5, um Ihr ARP -Proxy zu schreiben, verwenden Sie Python3 und Scape - ein Tool zum Manipulieren von Netzwerkpaketen.
Wir verbinden einen neuen Host mit Linux an das Netzwerk 10.0.0.0.0/8 an Bord und starteten ARP-Proxy, wo wir die Pakete mit ARP-Request abfangen, in dem die IP-Adresse des angeforderten Hosts das Netzwerk 10.0.1.0/24 und 10.0.0/24 eingibt und auf sie mit der ARP-Vorbereitung der MAC-Adresse von 10.0.0.0.0.0.0.0.0.0.0.0.0/8 antwortet. Infolgedessen werden Pakete für Netzwerke 10.0.1.0/24 und 10.0.2.0/24 an das Netzwerk von Network 10.0.0.0/8 gesendet und an den Adressaten geliefert.

Ein Beispiel für ein Protokollarp-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: -----------------------------------
In unserer Umgebung verwenden wir den Ubuntu Server 16.04 -Distribution und das systemd modische, um das Skript als Dienst zu starten.
mkdir /opt/arp-proxy
cp ~/arp-proxy.py /opt/arp-proxy/
Erstellen Sie eine Datei mit Systemd -Skripteinstellungen:
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
Um das ARP-Proxy zu starten, müssen Sie den Namen der Schnittstelle angeben, der die ARP-Anfrage anhört und die ARP-Antwort und das Mac-Netzwerk des Netzwerks senden, das in der ARP-Antwort verwendet wird
Wir aktivieren und starten unseren Service:
sudo systemctl enable arp-proxy.service
sudo systemctl start arp-proxy.service
Service Status:
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
Dienste in systemd verwalten
SCAPY -Installation:
sudo pip3 install scapy-python3
Scape -Dokumentation
Scape doc pdf