staging.inyokaproject.org

Wie kann ich herausfinden, ob ein ARP-Eintrag statisch ist?

Status: Gelöst | Ubuntu-Version: Lubuntu 16.04 (Xenial Xerus)
Antworten |

Ritschbert

Anmeldungsdatum:
17. September 2005

Beiträge: Zähle...

Hallo zusammen,

ich habe folgende Frage:

Ich nutze 1&1 als Internetservice-Provider und habe eine Fritzbox als Router. Der Router ist verbunden mit einem Netgear-Switch, an dem zwei Laptops hängen. Der eine Laptop ist ein Windows-Rechner, der andere Laptop ist ein Ubuntu-Rechner. Ich nutze beide Laptops abwechselnd und habe dabei festgestellt, dass die Internetverbindung zum Windows-Laptop ab und zu unterbricht, die Internetverbindung zum Ubuntu-Laptop aber immer stabil ist. Lange Zeit habe ich mich gefragt, warum das so ist.

Ich absolviere gerade eine Weiterbildung zum Netzwerkadministrator und meine, dass ich mit meinem bisherigen rudimentären Kenntniserwerb bereits den Grund für die Verbindungsunterbrechungen gefunden habe.

In der Weiterbildung arbeitete unser Dozent mit der Software "Wireshark", um den Datenverkehr des lokalen Netzwerks aufzuzeichnen. Diese Software habe ich dann auf meinem Windows-Laptop installiert. Während einer Aufzeichnung ist mir aufgefallen, dass bei einer Verbindungsunterbrechung die Netzwerkkarte meines Windows-Laptops über das ARP-Protokoll mit Hilfe eines Broadcasts fragt: "Who is 192.168.0.1? Tell 192.168.0.2" Die IP-Adresse 192.168.0.1 gehört dem Netgear-Switch, die IP-Adresse 192.168.0.2 gehört der Netzwerkkarte meines Windows-Laptops. Das Protokoll ARP ordnet bekanntlich IP-Adressen MAC-Adressen in einer Tabelle (ARP-Cache genannt) zu. Offensichtlich fällt der Eintrag darüber, welche MAC-Adresse zur IP-Adresse 192.168.0.1 gehört, im Laufe der Zeit raus - und damit wird die Internetverbindung unterbrochen. Und genau so war es dann auch, als ich dies über den ARP-Befehl in Windows überprüft habe.

Irgendwann im Laufe der Zeit antwortet der Netgear-Switch mit seiner MAC-Adresse und die Internetverbindung ist dann wiederhergestellt. Über dem ARP-Befehl in Windows habe ich herausgefunden, dass es sowohl statische als auch dynamische Einträge in den ARP-Cache gibt. Während die statischen Einträge stets so bestehen bleiben, fallen die dynamischen Einträge nach einer bestimmten Zeit raus. Ich habe nun einen kleinen Befehl in eine Batch-Datei geschrieben und diese ins Startmenü integriert. Seitdem ist der Eintrag im ARP-Cache immer statisch und ich habe keine Verbindungsprobleme mehr.

Nun meine Frage: Kann es sein, dass die Einträge im ARP-Cache des Linux-Rechners von vorn herein immer statisch sind und dass deshalb die Internetverbindung des Linux-Rechners bisher nie unterbrochen wurde? Wie kann ich herausfinden, ob der Eintrag im ARP-Cache meines Linux-Rechners ein statischer ist? Über den Befehl arp -a kann ich es leider nicht erkennen. Gibt es andere Möglichkeiten, dies herauszufinden, so dass ich meine Vermutung bestätigen kann?

Ich freue mich über Antworten.

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 13293

Ritschbert schrieb:

Wie kann ich herausfinden, ob der Eintrag im ARP-Cache meines Linux-Rechners ein statischer ist? Über den Befehl arp -a kann ich es leider nicht erkennen.

Wie ist die Ausgabe von:

arp -av | grep -i perm
ip n s | grep -i perm

?

EDIT:

Ritschbert schrieb:

Nun meine Frage: Kann es sein, dass die Einträge im ARP-Cache des Linux-Rechners von vorn herein immer statisch sind und dass deshalb die Internetverbindung des Linux-Rechners bisher nie unterbrochen wurde?

Evtl. muss auf dem Linux-Rechner kein statischer arp-cache vorhanden sein, für eine permanente Internetverbindung.

Teste mal auf deinem Linux-Rechner (über einen geeigneten Zeitraum), ob und von wo arp-requests gemacht werden. Z. B. mit:

sudo tcpdump -c 500 -vvveni <Interface> arp

(Interface anpassen und ohne spitze Klammern).

BTW: Du könntest mit z. B. arping (... aus dem package iputils-arping) via crontab (oder gleichwertig), arp-requests regelmäßig ausführen lassen.

Ritschbert

(Themenstarter)

Anmeldungsdatum:
17. September 2005

Beiträge: 80

Herzlichen Dank für die Antwort.

Ich werde die genannten Befehle in den kommenden Tagen mal ausprobieren, sobald ich Zeit und Ruhe dafür habe (beruflich ist im Moment viel los).

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 7816

Ritschbert schrieb:

[…] die Internetverbindung zum Windows-Laptop ab und zu unterbricht

Was meinst Du damit? Welche Symptome zeigen die Unterbrechung an?

[…] "Who is 192.168.0.1? Tell 192.168.0.2"

Das ist völlig normal. Jeder Rechner, der das Protokoll IPv4 benutzt, verwendet auch das Prototoll ARP zu Ermittlung der Layer-2-Adressen. Beim Protokoll IPv6 ist die ARP-Funktionalität in das Protokoll IPv6 integriert.

Das hat nur etwas mit dem LAN und nichts mit dem Internet zu tun.

[…] Kann es sein, dass die Einträge im ARP-Cache des Linux-Rechners von vorn herein immer statisch sind und dass deshalb die Internetverbindung des Linux-Rechners bisher nie unterbrochen wurde?

Nein. Die ARP-Einträge sind immer dynamisch. Man sollte daran nichts ändern. Linux benutzt aber für ARP die verbesserten Algorithmen von IPv6 nach RFC 2461 anstatt der ursprünglichen nach RFC 826. Ich weiß nicht, was Windows macht.

Wie kann ich herausfinden, ob der Eintrag im ARP-Cache meines Linux-Rechners ein statischer ist?

Der Befehl

ip neigh 

zeigt alle ARP-Beziehungen und markiert statische als PERMANENT.

Cranvil

Anmeldungsdatum:
9. März 2019

Beiträge: 990

Ritschbert schrieb:

Ich nutze 1&1 als Internetservice-Provider und habe eine Fritzbox als Router. Der Router ist verbunden mit einem Netgear-Switch, an dem zwei Laptops hängen. Der eine Laptop ist ein Windows-Rechner, der andere Laptop ist ein Ubuntu-Rechner. Ich nutze beide Laptops abwechselnd und habe dabei festgestellt, dass die Internetverbindung zum Windows-Laptop ab und zu unterbricht, die Internetverbindung zum Ubuntu-Laptop aber immer stabil ist. Lange Zeit habe ich mich gefragt, warum das so ist.

Ich hatte mal eine vergleichbare Situation. Wie sich herausgestellt hat, waren der Gigabit-Switch in der FritzBox und der Gigabit-Netzwerkadapter von Intel in einem der beiden beteiligten Systeme der Auslöser. Aus irgendeinem Grund waren die beiden nicht zu 100% kompatibel zueinander.

Ich absolviere gerade eine Weiterbildung zum Netzwerkadministrator und meine, dass ich mit meinem bisherigen rudimentären Kenntniserwerb bereits den Grund für die Verbindungsunterbrechungen gefunden habe.

Ich hoffe, ihr habt noch wesentlich mehr Weg vor euch als hinter euch. Und keine Angst vor Sub- und Supernetting: Das ist wie mit Sudoku und Minesweeper, bei denen man auch nur einen relativ einfachen Algorithmus anwenden muss, um zur Lösung zu kommen. 😉

Seitdem ist der Eintrag im ARP-Cache immer statisch und ich habe keine Verbindungsprobleme mehr.

Wenn die Kommunikation zwischen Windows und Router nur mittels eines statischen ARP-Eintrags geht, dann ist da definitiv irgendwas kaputt. ARP ist in der Regel immer dynamisch. Stell dir dein LAN wie eine Besprechung vor, bei der niemand den anderen kennt: Wenn ein Teilnehmer A den Teilnehmer B ansprechen will, ruft er in die Runde, wer denn B sei. Während die Teilnehmer sich die Gesichter zu den Namen für die einzelne Besprechung noch merken können, haben sie das bis zur nächsten Besprechung wieder vergessen und müssen wieder in die Runde rufen. So in etwa funktioniert ARP im Standardbetrieb und das macht es auch seit Jahrzehnten über die Plattformen hinweg ganz gut.

Beim statischen ARP bereitet sich Teilnehmer A vor, indem er sich die Visitenkarte mit dem Foto von B einprägt. In der Besprechung geht er dann im Bedarfsfall direkt auf B, anstelle erst rumzurufen. Problematisch wird's nur, wenn B nicht mehr B ist (entweder andere IP-Adresse oder andere MAC-Adresse), dann hilft der statische ARP-Eintrag nichts. Grundsätzlich sollten statische ARP-Einträge auch etwas richtig seltenes sein (ich lasse das mal ohne Begründung stehen).

Gibt es andere Möglichkeiten, dies herauszufinden, so dass ich meine Vermutung bestätigen kann?

Sind denn die Ausfallfrequenz und der Abstand zwischen den Ausfällen hoch genug bzw. gering genug um zu zeigen, dass dein Workaround funktioniert? Hast du im Rahmen der Fehlerbehandlung noch andere Dinge ausprobiert, die rein zufällig auch eine Auswirkung haben könnten, die du aber im Eifer des Gefechts vergessen hast (z.B. Änderung von Stromspareinstellungen des Netzwerkadapters/Computers/Routers)?

Um auf meine Situation zum Einstieg der Antwort zurück zu kommen: Der Rechner mit dem Intel-Adapter hat unter anderem beim Hoch- oder Herunterfahren (welche Richtung weiß ich nicht mehr) dafür gesorgt, dass der andere Host seine Verbindung kurzzeitig verlor. Vielleicht gibt es bei dir auch Wechselwirkungen, die dir noch nicht bewusst geworden sind.

Noch ein Nachtrag zur Benutzung von Wireshark: Eurer Trainer hat euch hoffentlich über § 202c StGB aufgeklärt. Spätestens mit der Benutzung von Wireshark und tcpdump bewegen wir uns in einem Bereich, der rechtlich eher unsauber definiert ist.

kB schrieb:

Beim Protokoll IPv6 ist die ARP-Funktionalität in das Protokoll IPv6 integriert.

Um dem Kind noch einen Namen zu geben: Bei IPv6 macht das NDP. Ich kenne die Implementierungsdetails nicht genau, tendiere aber zu der Ansicht, dass ARP so in IPv4 integriert ist wie NDP in IPv6 und umgekehrt.

Nein. Die ARP-Einträge sind immer dynamisch. Man sollte daran nichts ändern. Linux benutzt aber für ARP die verbesserten Algorithmen von IPv6 nach RFC 2461 anstatt der ursprünglichen nach RFC 826. Ich weiß nicht, was Windows macht.

Ich habe versucht, Kapitel 7.2 in RFC 2461 zu lesen, aber dafür ist es heute einfach "zu nach der Arbeit". Meinen letzten Diagnosen in Windows Netzwerken nach zu urteilen, bedient sich Windows im IPv4-Segment aber ganz regulär dem aus ARP bekannten Broadcast zum Füllen des ARP-Caches.

lubux

Anmeldungsdatum:
21. November 2012

Beiträge: 13293

Cranvil schrieb:

Um auf meine Situation zum Einstieg der Antwort zurück zu kommen: Der Rechner mit dem Intel-Adapter hat unter anderem beim Hoch- oder Herunterfahren (welche Richtung weiß ich nicht mehr) dafür gesorgt, dass der andere Host seine Verbindung kurzzeitig verlor.

BTW: Ich habe einen Rechner mit Ubuntu (nur IPv4). Da geht ohne statischem Eintrag im neighbour-cache, im WLAN der FritzBox nichts. Z. B.:

xxx.fritz.box (192.168.178.27) auf b8:27:eb:f1:06:38 [ether] PERM auf wlan1
yyy.fritz.box (192.168.178.45) auf <unvollständig> auf wlan1
:~$ sudo arping -c 3 -I wlan1 192.168.178.45
ARPING 192.168.178.45 from 192.168.178.22 wlan1
Unicast reply from 192.168.178.45 [DC:A6:32:46:A1:0F]  10.634ms
Unicast reply from 192.168.178.45 [DC:A6:32:46:A1:0F]  35.499ms
Unicast reply from 192.168.178.45 [DC:A6:32:46:A1:0F]  58.384ms
Sent 3 probes (1 broadcast(s))
Received 3 response(s)
:~$ ping -c 3 192.168.178.45
PING 192.168.178.45 (192.168.178.45) 56(84) bytes of data.
From 192.168.178.22 icmp_seq=1 Destination Host Unreachable
From 192.168.178.22 icmp_seq=2 Destination Host Unreachable
From 192.168.178.22 icmp_seq=3 Destination Host Unreachable

--- 192.168.178.45 ping statistics ---
3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2016ms
Antworten |