Seltsamer vorübergehender Netzwerkausfall unter Linux

8

Ich habe ein sehr ärgerliches Problem, das mir in einer Woche aufgefallen ist und auf das ich keine Antwort finden kann: Mein Netzwerk reagiert plötzlich nicht mehr und kommt normalerweise genau 25 Sekunden später zurück. Ich habe Kernel 3.10.4 verwendet und bin jetzt auf 3.11-rc4 migriert, um zu sehen, ob sich etwas geändert hat, aber nein, das Verhalten ist das gleiche. Und da es ein schwer zu erkennendes Problem ist, da das übliche Surfen im Internet in "Bursts" erfolgt und der Ausfall völlig zufällig ist, kann ich nicht wirklich sagen, dass dieses Problem auch in einem früheren Kernel vorhanden war (ich verwende aber immer benutzerdefinierte, aber ungepatchte Kernel von kernel.org, alle von mir zusammengestellt)

Ich kann nicht sagen , der Kern der Täter entweder ist, aber ich kann sagen , es gibt keine Hinweise auf die Systemprotokolle (I geprüft beide /var/log/syslogund /var/log/messagesund es ist nichts Ungewöhnliches) und dass die Hardware auf Fehler scheint nicht, für die Problem - Shows Verwenden Sie eine meiner Netzwerkkarten:

lspci output:

02:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5751 Gigabit Ethernet PCI Express (rev 01)
04:00.0 Ethernet controller: 3Com Corporation 3c905B 100BaseTX [Cyclone] (rev 30)

und ich habe bereits versucht, die Ethernet-Switch-Ports auszutauschen, und immer noch hat niemand außer mir ein Problem außer mir (obwohl wir ähnliche Maschinen verwenden, bin ich der einzige, der Linux verwendet, also musste ich einige berüchtigte Witze darüber machen na ja ... hehe).

Ich habe Wireshark auf meinem Computer gestartet und es ständig an unser Gateway und einen anderen Computer im selben Netzwerksegment gepingt. Beim ersten Anzeichen einer Netzwerkstörung überprüfte ich dies und stellte sicher, dass das Gateway nicht mehr auf Pings reagierte, aber der andere Computer reagierte immer noch normal. Ein anderes Mal reagiert der andere Computer nicht mehr und das Gateway ist in Ordnung, und ein anderes Mal reagieren beide nicht mehr. Ich weiß nicht, was ich sonst tun soll, daher möchte ich Hilfe oder Tipps zum weiteren Debuggen, da die Systemprotokolle völlig normal sind.

Ich habe meine Kernel-Konfigurationsdatei und eine Erfassungsdatei von wireshark, die die Situation zeigt. Ich kann hier oder auf einer Pastebin-Site posten, falls jemand es nützlich findet, den Fall zu verstehen. Bitte teilen Sie mir die Detailstufe mit, die ich verwenden sollte (ich denke, die Paketebene ohne die Rohdaten würde ausreichen).

Claudio
quelle
Dies klingt sehr nach einem IP-Adresskonflikt (dh ein anderer Computer hat dieselbe IP-Adresse wie Sie). Andere Hosts schwingen hin und her, je nachdem, von welchem ​​Host sie zuletzt eine ARP-Antwort erhalten haben.
Gilles 'SO - hör auf böse zu sein'
Gilles, ich bin mir ziemlich sicher, dass meine IP im Netzwerk eindeutig ist, aber wenn dies passieren könnte, würde ich immer noch nicht erklären, dass ein Host normal gepingt wird, während der andere nicht (sie werden gleichzeitig gepingt). Stimmst du nicht zu?
Claudio
@ Gilles, du hattest recht. Ich habe heute gerade festgestellt, dass jemandes Handy meine IP über eine DHCP-Zuweisung verwendet hat (meine IP ist fest, aber der DHCP-Pool hat sie überlappt). Wie gesagt, ich habe diese Möglichkeit zunächst verworfen, weil ich in der Lage sein sollte, einen anderen Host zu pingen, während der erste nicht erreichbar war, aber heute habe ich meine IP schnell geändert, während alles angehalten hat und meine IP von einer anderen Netzwerkkarte gepingt wurde. Würden Sie bitte Ihren Kommentar in eine Antwort verschieben, damit ich ihn akzeptieren kann? Sie waren sowieso die Ersten, die es wirklich beantwortet haben. Vielen Dank!
Claudio

Antworten:

10

Die Symptome stimmen mit einem IP-Adresskonflikt überein. Ein IP-Adresskonflikt tritt auf, wenn Ihr Computer und ein anderer Computer im selben Netzwerk versuchen, dieselbe IP-Adresse zu verwenden .

In einem lokalen Verbindungsnetzwerk basiert die Adressierung auf MAC-Adressen . Jede Ethernet-Karte hat ihre eigene MAC-Adresse (abgesehen von groben Fehlkonfigurationen oder Böswilligkeit). Ein Router, der entscheidet, wohin ein IP- Paket gesendet werden soll, sendet an allen Ports eine ARP- Anforderung für die Ziel-IP-Adresse. Diese Nachricht wird manchmal als "Wer hat" bezeichnet: Der Router versucht herauszufinden, welcher seiner Kollegen für diese IP-Adresse verantwortlich ist. Sobald der Router eine Antwort mit einer MAC-Adresse erhält, kann er einen Ethernet-Frame (Ethernet-Paket) mit dem IP-Paket erstellen und an diese MAC-Adresse senden. Da dieser Austausch eine Weile dauert, speichert der Router einen Cache mit den neuesten ARP-Informationen. (Es gibt andere Arten von ARP-Nachrichten, aber was ich hier erklärt habe, reicht aus, um das vorliegende Problem zu verstehen.)

Kurz gesagt, Router müssen wissen, auf welchem ​​physischen Gerät sich jede IP-Adresse befindet, an die sie IP-Pakete senden. Was passiert also, wenn zwei Geräte dieselbe IP-Adresse beanspruchen? Der Router erhält eine Antwort von einem der Geräte und entscheidet von da an, dass diese IP-Adresse zu diesem Gerät gehört, bis der entsprechende Cache-Eintrag abläuft. Nach Ablauf des Cache-Eintrags sendet der Router eine neue ARP-Anforderung, und das andere Gerät antwortet diesmal möglicherweise schneller. Dies erklärt, warum solche Situationen instabil sind: In einer Minute spricht der Router mit Ihnen, in der nächsten Minute mit dem anderen.

Wenn Sie ständig jemanden anpingen, behält der Router Ihre IP-Adresse fast immer im ARP-Cache. Während Sie pingen, gibt es nur ein kleines Fenster, in dem der andere Sie im Cache ersetzen kann (nachdem Ihr Cache-Eintrag abgelaufen ist, bevor der nächste Ping erfolgt). Aus diesem Grund verschwindet das Problem meistens, was frustrierend sein kann, bis Sie erkennen, wo das Problem liegen könnte.

In Ihrem Fall sieht es so aus, als ob Ihr lokaler Router Einträge 25 Sekunden lang in seinem Cache aufbewahrt. Wenn Sie sich im Cache befinden, sind Sie 25 Sekunden lang gut. Dann kommt manchmal der andere Typ in zufällig aussehenden Momenten und du bist für 25 Sekunden raus.

Wenn Sie versuchen, mehrere Computer über dieselbe lokale Verbindung zu kontaktieren, verfügt jeder über eine eigene ARP-Tabelle, sodass Sie möglicherweise inkonsistente Ergebnisse beobachten können, wobei ein Computer entscheidet, dass Sie die IP-Adresse besitzen, und ein anderer Computer entscheidet, dass der andere Typ dies tut.

High-End-Router protokollieren IP-Adresskonflikte. Wenn Sie also glauben, dass Sie auf einen stoßen, wenden Sie sich an Ihren Systemadministrator. Stellen Sie zunächst sicher, dass nicht Ihr Computer versucht, eine IP-Adresse zu verwenden, die er nicht verwenden sollte!

Gilles 'SO - hör auf böse zu sein'
quelle
1
Übrigens: Sie können auch arpingnach Duplikaten suchen, indem Sie ARP für Ihre IP-Adresse verwenden. Sie sollten keine Antworten erhalten. Wenn Sie dies von einem anderen Computer aus tun, werden beide Antworten angezeigt.
Derobert
1

Ich werde vorschlagen, dass Sie 2 "Nameserver" /etc/resolv.conf-Einträge haben, und der erste Eintrag bezieht sich auf einen DNS-Server, der inaktiv oder nicht erreichbar ist oder regelmäßig etwas verliert. Der Resolver-Code in libc versucht die IP-Adresse des ersten Nameservers, erhält eine Zeitüberschreitung und versucht dann die IP-Adresse des zweiten Nameservers, was erfolgreich ist.

Um dies zu testen, können Sie die IP-Adressen des "Nameservers" /etc/resolv.confdurch nur eine ersetzen, 8.8.8.8, bei der es sich um den öffentlichen DNS-Server von Google handelt. Wenn der Ausfall nicht auftritt, ist Ihr Nameserver das Problem.

Bruce Ediger
quelle