3

私は10Base-Tイーサネットを介して外界と通信しなければならない組み込みシステムを開発しています。ARP、IP、TCP、ICMP(ping)、HTTP、FTPの一部など、Webページを提供するために必要なすべての機能を構築しました。次に、残りのコードをビルドする必要があります。これにより、クライアントとして機能できるようになります。上記のすべてのプロトコルは、サーバーの観点から数か月間正常に機能しています。

次に、他のサーバーにデータを要求するために、これらのプロトコルの半分のクライアントを構築する必要があります。ステップ1は、リモートサーバーのハードウェアアドレスのARPです。私が理解しているように、サーバーは別のネットワーク上にあるため、ゲートウェイはそのMACアドレスで応答する必要があります。これにより、そのIP宛てのすべてのパケットをゲートウェイに渡すことができます。ここに問題があります:

デバイス(192.168.1.251、サブネットマスク255.255.255.0)は、ゲートウェイ(192.168.1.1)またはネットワーク外のマシンからARP応答を取得しません。ただし、私のデバイス(X.251)は、同じルーターの下にあるラップトップ(192.168.1.100)からARP応答を受け取ります。

私は毎回ARP要求に正しく応答するので、基本的なARPイーサネットフレーム構造は正しいと確信しています。違いはOPERATIONフィールドにあり、REQUESTまたはREPLYに応じて1または2になります。


ゲートウェイ(192.168.1.1)へのデバイス(192.168.1.251)の要求は次のとおりですが、応答はありません。

FF FF FF FF FF FF <-宛先MAC-ブロードキャスト(0x00も試行)

00 04 A3 7F C157<-ソースMAC-私のデバイス

08 06 <-ARP

0001<-イーサネット

08 00 <-IP

06<-6バイトのMACアドレス

04<-4バイトのIPアドレス

00 01 <-リクエスト(2 =返信)

00 04 A3 7F C157<-送信者MAC-鉱山

C0 A8 01FB<-送信者IP-鉱山=192.168.1.251

00 00 00 00 00 00 <-ターゲットMAC-不明、要求の理由

C0 A8 0101<-ターゲットIP-ゲートウェイ=192.168.1.1

00 00 00 00 ..... 00 0000<-パディング用の00の18セットのトレーラー


これで、私のデバイス(192.168.1.251)は私のラップトップ(192.168.1.100)とほぼ同じ要求になり、有効な応答が得られます。

FF FF FF FF FF FF <-宛先MAC-ブロードキャスト(0x00も試行)

00 04 A3 7F C157<-ソースMAC-私のデバイス

08 06 <-ARP

0001<-イーサネット

08 00 <-IP

06<-6バイトのMACアドレス

04<-4バイトのIPアドレス

00 01 <-リクエスト(2 =返信)

00 04 A3 7F C157<-送信者MAC-鉱山

C0 A8 01FB<-送信者IP-鉱山=192.168.1.251

00 00 00 00 00 00 <-ターゲットMAC-不明、要求の理由

C0 A8 0164<-ターゲットIP-ラップトップ=192.168.1.100

00 00 00 00 ..... 00 0000<-パディング用の00の18セットのトレーラー


重要な場合と重要でない場合があるサイドノート:

  • デバイスとゲートウェイの両方がラップトップのARPテーブルに表示されます。
  • 私のラップトップはWin7を実行しています。
  • 私のゲートウェイはLinksysWRT54GLWireless-Gブロードバンドルーターです。
  • 上記の結果を提供するために、Wiresharkを介してパケットを分析しました。
  • DHCPブロックはX.100からX.149をカバーしているので、ラップトップはルーターによってX.100に割り当てられます
  • X.251のデバイスIPがデバイスにハードコードされています。ルーター構成アプリで、このIPとデバイスのMACの関係を設定する手段がありません。他のすべての機能は私のデバイスをサーバーとして使用しているように見えるので、これは問題ではないと思います。
  • リモートサーバー(google = 173.194.43.33)のARP要求を、サーバーのIPとゲートウェイのIPの両方に直接送信しようとしました(プロキシである必要があることを認識してくれることを期待しています)。
  • 机の上で頭を叩いてみましたが、残念ながら少し助かりました。
4

2 に答える 2

0

私が正しく推測する場合、あなたはあなたのARP要求をあなたのノートブックに投稿します。それはそのARP要求に答えることを許可されていません。通常、すべてのデバイスはそれ自体で応答します。ルーターのターゲットIP192.168.1.1を入力してみてください。それはうまくいくはずです。

ちなみに、サブネット外にあるデバイスのMACアドレスを取得することはできません。すべてのパッケージは、ターゲットIPアドレスを使用してゲートウェイMACアドレスに送信する必要があります。

于 2012-09-14T20:45:29.263 に答える
0

次の方法でこれをトラブルシューティングしようとします。

scapy などのツールを使用して、ラップトップからゲートウェイの MAC を要求する ARP 要求を作成し、ブロードキャスト MAC に送信します。要求が応答されているかどうかを確認します。

次に、scapy を使用してラップトップで ARP 要求を作成しますが、ソース MAC をデバイスの MAC アドレスに設定し、ゲートウェイの MAC のブロードキャスト MAC に要求を送信します。これは基本的に、ラップトップでのデバイスの送信をシミュレートしています。ラップトップの mac を一時的にデバイスの mac に変更できる場合は、ラップトップで応答が得られるはずです。

上記の手順が正しく機能する場合は、ラップトップでデバイスの正確な動作をシミュレートしたことになり、実際のデバイスも正しく機能します。

于 2012-09-14T21:14:50.277 に答える