Zum Hauptinhalt springen

Der ARP-Cache existiert in der einen oder anderen Form auf jedem Host, der über IP over Ethernet kommuniziert. Der Cache enthält die Zuordnung zwischen IP-Adresse und Ethernet-MAC-Adresse (Media Access Control). Wenn Sie einen Ethernet-Adapter auf einem Host namens SERVER-1 austauschen oder SERVER-1 durch neuere / schnellere Hardware ersetzen, müssen alle Hosts im lokalen Ethernet-Segment, die mit SERVER-1 kommunizieren, ihren ARP-Cache aktualisieren. SERVER-1 kann ein unentgeltliches ARP-Paket aussenden, das alle Hosts aktualisieren sollte , aber da es sich um Ethernet handelt, besteht die Möglichkeit, dass das ARP-Paket beschädigt oder einfach verworfen wird, sodass Sie sich nicht darauf verlassen können.

Die ARP-Cache-Einträge im STCP-Stack unter OpenVOS haben eine Lebensdauer von 10 Minuten, d. h. nach 10 Minuten werden sie automatisch gelöscht und beim nächsten Senden eines Pakets wieder hinzugefügt. Wenn Sie den ARP-Cache anzeigen, zeigt er die verbleibende Zeit für jeden Eintrag an. Im schlimmsten Fall dauert es also nach der Änderung von SERVER-1 10 Minuten, bis die alte (falsche) Zuordnung abgelaufen ist und eine neue (richtige) Zuordnung hinzugefügt wird. Während dieser Zeit ist eine Kommunikation mit SERVER-1 nicht möglich.

Sie können einen bestimmten Eintrag mit dem Befehl arp -delete löschen. Abbildung 1 zeigt eine Instanz des arp-Befehls, die die MAC-Adresse und die Lebenszeit anzeigt, gefolgt von dem Befehl arp -delete zum Löschen des Eintrags und einer weiteren Instanz des arp-Befehls, die anzeigt, dass kein Eintrag mehr im Cache vorhanden ist.

arp 192.168.50.5

Internet-Adresse MAC-Adresse Typ Lebensdauer
192.168.50.5 00-04-96-1F-67-0C temp 6 min
bereit 14:01:30

arp -delete 192.168.50.5

Mapping für 192.168.50.5 gelöscht

bereit 14:01:39

arp 192.168.50.5
arp: kein Mapping für 192.168.50.5

bereit 14:01:44
Abbildung 1 - Befehle "arp" und "arp -delete"

Der alte TCP_OS-Stack hatte einen Befehl arp -flush, der alle Einträge im ARP-Cache löscht. Wenn Sie mehr als einen Eintrag zu löschen haben, kann es einfacher sein (weniger Tipparbeit), sie einfach alle zu löschen. Da die Einträge automatisch hinzugefügt werden, wenn sie benötigt werden, ist der einzige Nachteil davon, dass ein paar zusätzliche Pakete auf dem Netzwerk und eine zusätzliche Verzögerung (während der ARP-Cache neu aufgefüllt wird) beim Senden des ersten Pakets entstehen. Aus der Sicht der Schreibkraft gibt es überhaupt keine Nachteile.

Der STCP-Stack verfügt nicht über eine Flush-Option

---------------------------------- arp ---------------------------------
 hostname:
 -all: nein
 -network:
 -delete: nein
 -set: nein
 mac_addr:
Abbildung 2 - STCP-Befehlsform arp

Also schrieb ich ein kurzes Makro (Abbildung 3), um dies zu tun. Das Makro leitet die Ausgabe von arp -all in eine Datei im Prozessverzeichnis um, parst dann die Datei, um die IP-Adressen zu extrahieren und ruft arp -delete mit jeder Adresse auf. Wenn es fertig ist, sind einige der Einträge wieder da, aber sie sind alle mit der aktuellen Zuordnung aktualisiert worden.

& arp_flush.cm beginnt hier
&
& Version 1.00 11-04-17
& niah.davids@stratus.com
&
& Dieses Skript leert den arp-Cache, indem es jeden Eintrag einzeln löscht.
& Bis es fertig ist, werden einige Einträge wieder vorhanden sein.
&
&
& Diese Software wird auf einer "AS IS"-Basis bereitgestellt, OHNE JEGLICHE GARANTIE ODER
& UNTERSTÜTZUNG JEGLICHER ART. Der AUTOR SCHLIESST AUSDRÜCKLICH JEDE STILLSCHWEIGENDE
& GARANTIEN DER MARKTGÄNGIGKEIT ODER EIGNUNG FÜR EINEN BESTIMMTEN ZWECK.
& Dieser Haftungsausschluss gilt trotz aller mündlichen Zusicherungen jeglicher
& Zusicherungen jeglicher Art durch den Autor oder andere Personen.
&
&set_string FILE (process_dir)>arp_list
attach_default_output &FILE&
arp -all
detach_default_output
&set ZEILE 2
&label wieder
&set LINE (calc &LINE& + 1)
&set_string IP (substr (contents &FILE& &LINE& -hold) 1 16)
&if (end_of_file &FILE&) = 1 &dann &return
&wenn (Länge X&IP&) = 1 &dann &zurück
arp -delete &IP&
&goto again
&
&arp_flush.cm endet hier
Abbildung 3 - Befehlsmakro arp_flush

Abbildung 4 zeigt eine Instanz des Befehls arp -all, um zu sehen, was sich im Arp-Cache befindet, dann eine Ausführung des Makros arp_flush, gefolgt von einer weiteren Instanz von arp -all. Beachten Sie, dass alle Lebenszeiten im zweiten arp -all 10 Minuten betragen. Ich habe viele der Zeilen aus der ersten arp -all- und arp_flush-Ausgabe entfernt, um den benötigten Platz zu reduzieren.

arp -all

Internet-Adresse MAC-Adresse Typ Lebensdauer
10.10.1.200 00-90-E8-1F-4B-EA temp 8 Min.
192.168.50.1 00-04-96-19-0B-20 temp 10 mins
192.168.50.4 00-04-96-35-3F-B5 temp 1 Min.
192.168.50.2 00-04-96-20-C7-EC temp 4 Min.
192.168.50.19 00-0C-29-6B-CA-AE Temp. 6 Min.
192.168.50.21 00-23-54-79-C5-81 Temp. 7 Min.
. . . . .
192.168.51.252 00-50-56-BB-4D-8C temp 5 Min.
192.168.51.253 00-0C-29-86-AD-CC temp 3 Min.

bereit 13:46:14
arp_flush

Mapping für 10.10.1.200 gelöscht

Mapping für 192.168.50.1 gelöscht

Abbildung für 192.168.50.4 gelöscht

Mapping für 192.168.50.2 gelöscht

Mapping für 192.168.50.19 gelöscht

Mapping für 192.168.50.21 gelöscht

. . . . . . .

Mapping für 192.168.51.252 gelöscht

Mapping für 192.168.51.253 gelöscht

bereit 13:46:23

arp -all

Internet-Adresse MAC-Adresse Typ Lebensdauer
192.168.50.2 00-04-96-20-C7-EC temp 10 mins
192.168.51.4 00-04-FC-01-02-3E temp 10 mins
192.168.51.11 00-00-A8-80-80-4A temp 10 mins
192.168.51.49 00-50-56-46-08-2C Temp. 10 Min.
192.168.51.50 00-23-54-52-18-6E temp 10 Min.
192.168.51.76 00-23-54-52-1B-F5 temp 10 min
192.168.51.100 00-0C-29-A9-85-44 temp 10 min
192.168.51.128 00-00-A8-43-52-22 Temp. 10 Min.
192.168.51.158 00-26-B9-BC-B7-37 Temp. 10 Min.
192.168.51.180 5C-26-0A-06-BD-29 Temp. 10 Min.
192.168.51.203 00-00-A8-C0-86-A1 temp 10 min

bereit 13:46:27
Abbildung 4 - Ausführung des Befehlsmakros arp_flush

 

© 2020 Stratus Technologies.