Étrange interruption temporaire du réseau sous Linux

8

Je suis confronté à un problème très ennuyeux que j'ai remarqué dans une semaine et pour lequel je ne trouve pas de réponse: mon réseau cesse soudainement de répondre, revenant généralement exactement 25 secondes plus tard. J'utilisais le noyau 3.10.4 et j'ai maintenant migré vers 3.11-rc4 pour voir si quelque chose a changé, mais non, le comportement est le même. Et comme c'est un problème difficile à repérer du fait que la navigation Web habituelle est en "rafales" et que la panne est complètement aléatoire, je ne peux pas vraiment dire que ce problème était également présent dans un noyau précédent (j'utilise toujours personnalisé mais noyaux non corrigés de kernel.org, tous compilés par moi-même)

Je ne peux pas dire que le noyau est le coupable soit, mais je peux dire qu'il n'y a pas d' indices sur les journaux du système (j'ai vérifié à la fois /var/log/sysloget /var/log/messagesil n'y a rien d' inhabituel là - bas) et que le matériel ne semble pas en faute, pour les spectacles de problèmes en utilisant l'une de mes cartes réseau:

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)

et j'ai déjà essayé d'échanger les ports du commutateur Ethernet et toujours personne d'autre où je travaille a un problème à part moi (bien que nous utilisons des machines similaires, je suis le seul à utiliser Linux, j'ai donc dû faire des blagues infâmes à ce sujet car eh bien ... hehe).

J'ai couru Wheelshark sur ma machine et je l'ai laissé cingler en continu notre passerelle et une autre machine sur le même segment de réseau. Puis, au premier signe de dysfonctionnement du réseau, je le vérifiais et vérifiais que la passerelle ne répondait plus aux pings, mais l'autre machine répondait toujours normalement. Une autre fois, c'est l'autre machine qui cesse de répondre et la passerelle va bien, et d'autres fois, les deux cessent de répondre. Je ne sais pas quoi faire d'autre, donc j'aimerais avoir de l'aide ou des conseils sur la façon de déboguer davantage, car les journaux système sont complètement normaux.

J'ai mon fichier de configuration du noyau et un fichier de capture de Wireshark montrant la situation. Je peux poster ici ou sur un site pastebin au cas où quelqu'un trouverait utile de comprendre le cas, veuillez simplement me faire savoir le niveau de détail que je devrais utiliser (je suppose que le niveau du paquet sans les données brutes serait suffisant).

Claudio
la source
Cela ressemble beaucoup à un conflit d'adresse IP (c'est-à-dire qu'une autre machine a la même adresse IP que la vôtre). D'autres hôtes se déplacent d'avant en arrière en fonction de celui dont ils ont reçu une réponse ARP la plus récente.
Gilles 'SO- arrête d'être méchant'
Gilles, je suis à peu près sûr que mon IP est unique sur le réseau, mais en supposant que cela puisse arriver, je pense toujours que cela n'expliquerait pas qu'un hôte se fasse cingler normalement tandis que l'autre ne le fait pas (ils sont cinglés simultanément). Tu n'es pas d'accord?
Claudio
@ Gilles, tu avais raison. Je viens de découvrir aujourd'hui que le téléphone portable de quelqu'un utilisait mon IP via une affectation DHCP (mon IP est fixe mais le pool DHCP la chevauchait). Comme je l'ai dit, j'ai d'abord écarté cette possibilité car je devais pouvoir envoyer un ping à un autre hôte alors que le premier n'était pas accessible, mais aujourd'hui, j'ai rapidement changé mon IP pendant que tout s'arrêtait et mon IP était pingée depuis un autre NIC. Pourriez-vous s'il vous plaît déplacer votre commentaire dans une réponse afin que je puisse l'accepter? De toute façon, vous avez été le premier à y répondre. Merci!
Claudio

Réponses:

10

Les symptômes sont cohérents avec un conflit d'adresse IP. Un conflit d'adresse IP se produit lorsque votre machine et une autre machine du même réseau tentent d'utiliser la même adresse IP .

Sur un réseau de liaison local, l'adressage est basé sur les adresses MAC . Chaque carte Ethernet a sa propre adresse MAC (sauf erreur de configuration grossière ou malveillance). Un routeur qui décide où envoyer un paquet IP enverra une demande ARP pour l'adresse IP cible sur tous ses ports. Ce message est parfois appelé «qui a»: le routeur essaie de savoir lequel de ses pairs est responsable de cette adresse IP. Une fois que le routeur reçoit une réponse contenant une adresse MAC, il peut créer et envoyer une trame Ethernet (paquet Ethernet) contenant le paquet IP à cette adresse MAC. Cet échange prenant un certain temps, le routeur conserve un cache des informations ARP récentes. (Il existe d'autres types de messages ARP, mais ce que j'ai expliqué ici est suffisant pour comprendre le problème actuel.)

En résumé, les routeurs doivent savoir à quel périphérique physique chaque adresse IP à laquelle ils envoient des paquets IP. Que se passe-t-il alors lorsque deux appareils réclament la même adresse IP? Le routeur reçoit une réponse de l'un des appareils et décide ensuite que cette adresse IP appartient à cet appareil jusqu'à l'expiration de l'entrée de cache correspondante. Après l'expiration de l'entrée de cache, le routeur enverra une nouvelle demande ARP, et peut-être que l'autre appareil répondra plus rapidement cette fois. Cela explique pourquoi de telles situations sont instables: une minute, le routeur vous parle, la minute suivante, il parle à l'autre gars.

Si vous cinglez continuellement quelqu'un, le routeur conserve votre adresse IP dans son cache ARP à peu près tout le temps. Ainsi, pendant que vous envoyez un ping, il n'y a qu'une petite fenêtre pendant laquelle l'autre gars peut vous remplacer dans le cache (après l'expiration de votre entrée dans le cache, avant le prochain ping). C'est pourquoi l'observation du problème le fait disparaître, ce qui peut être frustrant jusqu'à ce que vous réalisiez quel pourrait être le problème.

Dans votre cas, il semble que votre routeur local conserve les entrées dans son cache pendant 25 secondes. Lorsque vous êtes dans le cache, vous êtes bon pendant 25 secondes. Puis, parfois, l'autre gars vient, à des moments aléatoires, et vous êtes hors de lui pendant 25 secondes.

Lorsque vous essayez de contacter plusieurs machines sur le même lien local, chacune a sa propre table ARP, vous pouvez donc observer des résultats incohérents, une machine décidant que vous possédez l'adresse IP et une autre machine décidant que l'autre type le fait.

Les routeurs haut de gamme enregistrent les conflits d'adresses IP, donc si vous pensez en rencontrer un, demandez l'aide de votre administrateur système. Assurez-vous d'abord que ce n'est pas votre machine qui essaie d'utiliser une adresse IP qu'elle ne devrait pas utiliser!

Gilles 'SO- arrête d'être méchant'
la source
1
BTW: Vous pouvez également utiliser arpingpour rechercher des doublons, en l'ayant ARP pour votre adresse IP. Vous ne devriez obtenir aucune réponse. Ou faites-le à partir d'une autre machine, et vous verrez les deux réponses.
derobert
1

Je vais suggérer que vous avez 2 entrées de "serveur de noms" /etc/resolv.conf, et la première entrée fait référence à un serveur DNS qui est en panne ou inaccessible ou quelque chose périodiquement. Le code du résolveur dans libc essaiera la première adresse IP du serveur de noms, obtiendra un délai d'attente puis essaiera la deuxième adresse IP du serveur de noms, qui réussira.

Pour tester cela, vous pouvez remplacer les adresses IP du "serveur de noms" /etc/resolv.confpar une seule, 8.8.8.8, qui est le serveur DNS public de Google. Si la panne ne se produit pas, votre serveur de noms est le problème.

Bruce Ediger
la source