トンネル経由でMACアドレスを取得する

トンネル経由でMACアドレスを取得する

現在、古い MS-DOS ゲームにインターネット サポートを提供する独自のソフトウェアを追加する作業を行っています。私の主な環境は Linux なので、Linux 内から DOSBOX を使用し、次の手順に従ってインターネット接続を DOSBOX に入力します。DOSBOXをインターネット用に設定する

この後、Linux は基本的に DOSBOX への別のルーターとして動作しますが、DOSBOX が使用するゲートウェイ アドレスと DNS は、ホストがインターネットに接続するために使用するものと同じです。

次に、mTCP DOS インターネット スイートをダウンロードし、その ping ツールと htget ツールを使用して Google のホームページを取得できますが、UNIX の tcpdump でパケットを分析すると、イーサネット フレームの最初の 14 バイトが表示されず、ARP パケットも表示されません。また、mTCP スイートには ARP テーブルがありません。

したがって、常にブロードキャスト アドレスを使用しているのでない限り、リモート マシンの MAC アドレスさえ知らないのに、そのようなソフトウェアがどのようにして Google に接続できるのか理解できませんが、そうするとネットワーク リソースが浪費されるのではないでしょうか。

それで、自分のソフトウェアに戻ります... IP パケットを使用すると、DOSBOX (ここでは同じコンピューターを扱っています) からホスト (Linux) に接続できますが、ARP パケットの送信に問題があります (少なくとも tcpdump では表示されません)。

これは私がネットワーク上で順番に送信しているデータです:

FF FF FF FF FF FF 00 02 12 00 56 34 08 06 00 01 08 00 06 04 00 01 00 02
12 00 56 34 C0 A8 07 02 FF FF FF FF FF FF 08 08 08 08 

そして、データのサイズが 60 バイトになるまでデータにゼロを追加します。

DOSBOX は ETHERSLIP ドライバを通じてイーサネット アドレスを次のように識別します: 00:02:12:00:56:34

DOSBOX の実行中に、トンネルを事前に作成しました。その情報は次のとおりです。

sl0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1524
    inet 192.168.7.1  netmask 255.255.255.252  destination 192.168.7.2
    adaptive  txqueuelen 15240  (Adaptive Serial Line IP)
    RX packets 0  bytes 0 (0.0 B)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 0  bytes 0 (0.0 B)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

DOSBOX でネットワークに ARP 要求を発行すると、Linux で tcpdump を使用するときに ARP 要求として表示される (何も表示されないのではなく) ように設定する方法はありますか?

答え1

MAC アドレスは、ローカルのレイヤー 2 LAN でのみ表示され、関連します。また、すべてのレイヤー 2 ネットワークが MAC アドレスを使用するわけではなく、他のアドレスを使用するものや、アドレスを使用しないものもあります。MAC アドレスを使用するネットワークの中には、48 ビットの MAC アドレスと 64 ビットの MAC アドレスがあります。ルーターは、MAC アドレスを含むレイヤー 2 フレームを削除し、次のインターフェイス用に新しいフレームを構築します。パケットは、送信元から宛先までさまざまなレイヤー 2 プロトコルを通過する可能性があり、パスでどのプロトコルが使用されているか、またはどのプロトコルが MAC アドレスを使用しているかを知る方法はありません。

DOSBOX接続はMACアドレスを使用するプロトコルを使用していないため、ARPは使用されません。スリップこれは、PPP のようなポイントツーポイント プロトコルであり、MAC アドレス指定 (またはその他のレイヤー 2 アドレス指定) を使用しないため、ARP はありません。SLIP の場合、PPP と同様に、エンドポイントは 2 つしかないため、レイヤー 2 アドレス指定は必要なく、使用されません。一方の端からのすべてのトラフィックは、アドレスを使用せずにもう一方の端に送信されます。

関連情報