Linuxの奇妙な一時的なネットワークの中断

Linuxの奇妙な一時的なネットワークの中断

1週間後に発見したが答えを見つけることができない非常に迷惑な問題に直面しました。ネットワークが突然応答を停止し、通常25秒後に再び戻ります。私はカーネル3.10.4を使用していましたが、3.11-rc4に移行して変更があるかどうかを確認しましたが、いいえ、動作は同じです。一般的なWebサーフィンは「爆発」し、割り込みが完全にランダムであるため、問題を見つけるのが難しいため、以前のカーネルでもこの​​問題がどのように存在するのか実際にはわかりません(私は常にカスタムカーネルを使用しますが、Unpatchedカーネルはkernel.org、すべて直接コンパイルする)

また、カーネルが犯人であるとは言えませんが、システムログに手がかりがなく(両方確認しましたが異常なことはありません/var/log/syslog/var/log/messages、ハードウェアに問題があるようではありません。私のネットワークカードのいずれかを使用していることを示します。

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)

イーサネットスイッチポートを交換してみましたが、私以外に私の仕事にまだ問題がある人はいません。 (たとえ似たようなデバイスを使っていますが、Linuxを使う人は私だけなので、悪い評判をある程度受け入れなければなりません。冗談ですから。まあ…へへ)。

私は私のコンピュータでWiresharkを実行し、それが私たちのゲートウェイと同じネットワークセグメントにある他のコンピュータを継続的にpingするようにしました。その後、ネットワークの問題の最初の兆候が表示されたら、それを確認し、ゲートウェイがpingに応答しないが、他のコンピュータがまだ正常に応答していることを確認します。場合によっては、他のコンピュータが応答を停止し、ゲートウェイが正常であることがあり、時には両方が応答を停止することがあります。他に何をすべきかわからないので、システムログは完全に正常なので、これをさらにデバッグする方法についてのヒントやヒントが必要です。

私のカーネル設定ファイルと状況を示すWiresharkのキャプチャファイルがあります。ここや一部のPastebinサイトに投稿できます。誰かがこのケースを理解するのが役に立つと思う場合は、どのレベルの詳細を使用する必要があるかを教えてください(生データがないパケットレベルで十分です)。

答え1

これらの症状はIPアドレスの競合と一致します。コンピュータと同じネットワーク上の他のコンピュータが同じIPアドレスを使用しようとすると、IPアドレスの競合が発生します。IPアドレス

リンクローカルネットワークでは、アドレッシングは以下に基づいています。MACアドレス。各イーサネットカードには一意のMACアドレスがあります(重大に誤って設定されているか悪意のない場合)。ルータはデータをどこに送信するかを決定します。知的財産権パケットは次のように送信されます。ARPすべてのポートで宛先IPアドレスを要求します。このメッセージは「所有者」とも呼ばれます。ルータはどのピアがIPアドレスを担当しているかを調べようとします。ルータがMACアドレスを含む応答を受信すると、IPパケット(イーサネットパケット)を含むイーサネットフレームを設定してそのMACアドレスに送信できます。この交換には時間がかかるため、ルータは最新のARP情報のキャッシュを保持します。 (ARPメッセージには他の種類もありますが、ここで説明しただけで問題の問題を理解するのに十分です。)

つまり、ルータは、IPパケットを送信する各IPアドレスを所有する物理デバイスを知る必要があります。それでは、両方のデバイスが同じIPアドレスを要求した場合はどうなりますか?ルータは、デバイスの1つから応答を受信した後、そのキャッシュエントリが期限切れになるまで、IPアドレスがそのデバイスに属していると判断します。キャッシュエントリが期限切れになった後、ルータは新しいARP要求を送信し、今回は他のデバイスがより速く応答することがあります。これは、状況が不安定な理由を説明します。ルーターは1分間ユーザーに話し、次に他の人と話します。

誰かに継続的にpingを送信すると、ルータはほぼ常にIPアドレスをARPキャッシュに保持します。したがって、pingを実行するときに他の人がキャッシュからあなたを置き換えることができる時間が少なくなります(キャッシュエントリが期限切れになった後に次のpingが到着する前)。そのため、問題を観察すると問題がほとんど消えてしまい、問題が何かを悟るまではがっかりすることがあります。

あなたの場合、ローカルルーターはアイテムをキャッシュに25秒間保持しているようです。キャッシュ中に25秒間使用できます。それから時にはランダムに見える瞬間に別の人が現れ、25秒の時間を失うことになります。

同じローカルリンクで複数のコンピュータに接続しようとすると、各コンピュータには独自のARPテーブルがあるため、あるコンピュータでIPアドレスを所有し、別のコンピュータで別のコンピュータがIPアドレスを所有していると判断する一貫性のない結果が生じる可能性があります。

高度なルーターはIPアドレスの競合を記録するので、競合があると思われる場合は、システム管理者に連絡してください。まず、使用しないでくださいIPアドレスを使用したいコンピュータではないことを確認してください!

答え2

に2つの「ネームサーバー」エントリがあることをお勧めします/etc/resolv.conf。最初のエントリは、ダウンしている、アクセスできない、または定期的に失敗するDNSサーバーを表します。 libcのソルバーコードは最初のネームサーバーのIPアドレスを試し、タイムアウト後に2番目のネームサーバーのIPアドレスを試します。

/etc/resolv.confこれをテストするには、ネームサーバーのIPアドレスをGoogleのパブリックDNSサーバーである8.8.8.8に置き換えます。中断が発生しない場合は、ネームサーバーに問題があるのです。

関連情報