web-dev-qa-db-ja.com

ルーターのパケットをキャプチャすることは可能ですか?

ネットワーク内からインターネットに送信されるパケットの一部が欠落しているという問題に直面しています。使用しているパターンは次のとおりです。

  Client A ←→ Switch A ← Router A:NAT ← .. Network .. 
     → Router B:NAT → Switch B ←→ Server B

問題を追跡するために、以下の2つの手順を実行したいと思います。

  1. ルータBのクライアントAからのパケットをキャプチャします。
  2. ルータBの変換テーブルを確認してください。

両方のアクションが可能ですか?

詳しくは:

  1. クライアントAはWindowsXPで実行されています
  2. サーバーBはLinux(正確にはFedora)で実行されています。
  3. ルータBは、着信パケットを意味する静的ポートおよびアドレス変換テーブルを使用します
    特定のポートにサーバーBに転送されます。
  4. ルータAとルータBはどちらもTPLinkWR340 +製品です。
  5. ルータAとルータBの両方にフルコーンNATがあります。
  6. スイッチAはDLinkDES-1024Rで、スイッチBはDLinkDES-1016Dです。

2つのアクションを実行したい理由は、ClientAのネットワークインターフェイスからパケットが送信されたことがわかったためですが、不明な理由により、ClientAマシンのTCPカーネルがACKパケットを受信しません他のエンドポイントから、タイムアウトまでデータ送信に入ります。また、サーバー側からもTool WireSharkを使用して、サーバーBマシンのネットワークインターフェースがクライアントAから送信されたパケットを受信しないことがわかりました。パケットはルーターBによってドロップされたと思います。 、ルーターBでパケットをキャプチャできるかどうか疑問に思います。

実際、この問題は、クライアントAとクライアントCの2つのクライアントがある場合にのみ発生しました。クライアントAとクライアントCは互いに直接通信せず、代わりにサーバーBと通信します。

クライアントAマシンのネットワークケーブルを抜いて、別のマシンでクライアントAに約30秒でログインすると、問題が発生しました。新しいマシンのクライアントAが開始しますTCPサーバーBとの通信、最初の多くのコマンドは問題ありませんが、その後、サーバーはクライアントAからコマンドを受信できなくなります。

2
Steve Peng

サーバーBはパケットを受信しませんでした

サーバーBからWiresharkを実行する場合は問題ありません。そうでない場合は、WiresharkのPCに接続する「ミラー/スパン/モニター」ポートを構成するマネージドスイッチが必要になることを考慮してください。

Wiresharkを動かして、ルーターBとスイッチBの間のパケットを確認します(WiresharkのPCを挿入するためにハブを間に追加できますか?)

パケットがセグメントRouterB-SwitchBに到達しない場合、ルーターBでのポート転送(NATサービス)をバイパスするため)が正しく機能していないか、ルーターがルーティングされていない可能性がありますあなたのトラフィック。

2
Pat

より多くの情報を入手することが重要だと思います。スイッチは機能しませんNAT(ただし、ルーターは機能します)、ルーターによって機能は大きく異なります。「翻訳をチェックする」という言葉は聞いたことがありません。 「表」とはスイッチやルーターのことですが、ルーターに関してはどういう意味かわかります。

NATや変換テーブルなどのチェックは、単純なネットワークツールを使用するよりもはるかに価値が低いことがわかります。最初に使用するツールはクライアントAの「WinMTR」です。実行したままにします。しばらくの間(数分?)、パケット損失が発生するかどうか、どこで発生するかを確認します。これにより、どこをさらに調べるかが非常にわかります。[待ち時間と待ち時間の急増を確認すると、何を確認すればよいかがわかっている場合にもヒントが得られます。で]。

誰かがより多くの助けを提供するために、あなたはパケットが行方不明になると信じる理由と問題の特徴についてより詳細を提供したいかもしれません。

0
davidgo

ここにいくつかのアイデアの概要があります、そしておそらく他の人はそれを詳細に行う方法を知っています。

Linuxマシンルーターを使用します。

おそらくトマトやDDWRTができます。したがって、ルーターがそのファームウェアをサポートしている場合/それをサポートしているファームウェアを購入した場合は、それを試すことができます。

コメントしました"The reason why I want to perform the two actions is that we found packets were sent out of the network interface of ClientA, but due to unknown reason the TCP kernel of ClientA machine never receives any ACK packet from the other endpoint, thus it enters data transmission until timeout. And from the server side, also using Tool WireShark we found the network interface of Server B machine never receives the packet sent from client A, of course it was not able to send any ACK packet back to ClientA."

ルーターが破損しているか、ケーブルに問題がある可能性があります。

私はあなたのルーターで何が起こっているかを見る方法の楽しいアイデアが大好きです、それはより素晴らしいルーター、またはより良いファームウェアで可能かもしれません。しかし、それができる/したいのであれば、おそらくより良いルーター、または交換用のルーターが必要です。パーツの交換など、基本的なトラブルシューティング手法、サルタイプのロジックを見逃さないでください。

問題があるのは1つの方法だけですか? A-> Bのように。またはB-> Aも?ケーブルを交換するなど、少しトラブルシューティングを行うことができます。接続しているポートを交換します。

0
barlop