4

私は、Web サイトから実行され、多くの異なるプラットフォームと対話する必要がある Wake on LAN サービスに取り組んでいます。したがって、Windows のみのソリューションはありません。ユーザーが自分のシステムを Web サイトに登録するとき、「マジック」パケットの作成に使用する MAC アドレスを取得する必要があります。私はこれを行うことができる Java アプレットを持っており、動作する ActiveX コントロールを認識していますが、ルーター/スイッチにクエリを実行してサーバー側でこれを行う方法があるかどうか疑問に思っています。システムは多数の異なる物理サブネットのいずれかにある可能性があるため、ARP を使用しても機能しません。ルーターを構成して自分の代わりに ARP を実行する方法がない限りです。

IPアドレスを指定してMACアドレスを検索するために使用できる、独自のネットワークAPIまたはその他のネットワークAPIを知っている人はいますか? 私たちは Cisco ルーターを使用していると思いますが、複雑なネットワークであり、さまざまなレベルで複数のベンダーが関与している可能性があります。ネットワークの神々に犠牲を払う前に、考えられる解決策に関する背景情報を入手したいと思います。技術的に不可能な場合、自分を卑下しても意味がありません。:-)

編集:ネットワーク インフラストラクチャはダイレクト ブロードキャストを許可するようにセットアップされていますが、ネットマスクが常に /24 であるとは限らないため、正確なブロードキャスト アドレスを特定することは、解決する必要があるもう 1 つの難問です。

4

11 に答える 11

4

DHCP を使用するローカル ネットワークを使用している場合は、サーバー データベースを調べて、そのアドレスを持つ最後のユーザーの MAC を取得できる場合があります。将来的には、ネットワークで ARP 要求を監視し、応答を何らかのテーブルにキャッシュすることができます。また、RMON または SNMP を使用して、スイッチおよびルーターのアドレス テーブルを照会することを検討することもできます。

ルーター間で WoL を使用するには、ダイレクト ブロードキャストを有効にするか、ローカル セグメントにリレー サーバーを配置する必要があることに注意してください。

ルーターとスイッチをプレイしてからしばらく経ちましたが、これは SNMP を使用して何をクエリするかの出発点になるかもしれませ

于 2009-05-27T19:22:40.190 に答える
2

以下を使用します。

getmac /s destIp 

リモート セッションの Mac アドレスを取得します。

于 2012-01-05T06:31:49.727 に答える
1

あなたは私が考えることができるすべてを言った...

送信元 MAC アドレスは、パケットがデバイスからデバイスへホップするにつれて変化するため、クライアントが同じサブネット上にない限り、サーバーは MAC アドレスを取得できません。(ARP経由でそれを行うでしょう)

署名付きの Java アプレットまたは ActiveX コントロールが最も簡単なソリューションです。必要なすべてのネットワーク情報を (ほぼ受動的に) 取得できます (IE は署名付きアプレットの実行を要求することさえしません)。

サービスを使用しているネットワークを完全に認識している場合は、おそらく SNMP または CDP を介してゲートウェイのクライアント リストを照会できます。IPアドレスをMACアドレスにマップすることができます...しかし、これは実際にはベンダーに依存しており(しかし一般的です)、アプレットを使用するよりもはるかに優れているとは言えません(imo)。

于 2009-05-27T19:34:06.733 に答える
1

これらが役立つかどうかはわかりませんが、見てください:

http://www.webdeveloper.com/forum/showthread.php?t=134120

http://www.qualitycodes.com/tutorial.php?articleid=19

于 2009-05-27T19:28:37.230 に答える
1

現在、アプリケーションは、リモート システムからホスト名と MAC アドレスの両方を抽出できる Java 6 アプレットを使用しています。Java 6 に依存するのは好きではありませんが、Snow Leopard と Windows の両方でサポートされているので、おそらく問題なく使用できます。

これに関連して、ネットワーク担当者から、既存のコードを ASP.NET に変換するための支援を求められました。会話中に、私は彼らが実際の MAC アドレス情報を持っているかどうかを尋ねました (ウイルス/ワームなどの疑わしいネットワーク アクティビティに基づいてポートを遮断するため)。このプロジェクトを利用して、ネットワーク データベースから情報にアクセスできる可能性があります。

于 2009-08-23T12:59:37.240 に答える
0

同じネットワーク上のマシンのARPテーブルでのみMACエントリを取得できます。ルーターを介してマシンに接続する場合、ARPテーブルにはルーターのMACアドレスのみが表示されます。したがって、外部ホストが同じネットワーク上のホストでない限り(ルーターが関与していない場合) 、外部ホストのMACアドレスを知る方法はありません。

ちなみに、SOにはすでに多くの同様の質問があります。

于 2009-05-27T20:05:03.177 に答える
0

Mac アドレスはネットワーク セグメントでのみ使用され、各ホップで失われます。エンド ツー エンドで保持されるのは IP のみです。その場合でも、Natted 時に送信元 IP アドレスが書き換えられます。私の答えは、すべてが同じネットワーク セグメント上にある場合、またはルーターがプロキシ arp 用に設定されている場合 (これは現実的ではありません) でない限り、不可能であると思います。

于 2009-05-27T19:29:48.240 に答える
0

上記のように、ホストが同じサブネット内にある場合、既知の IP アドレスから MAC アドレスを取得できます。最初にその IP に ping を実行します。次に arp -a | を見てください。nix* で文字列を grep して解析し、MAC アドレスを取得します。

すべてのプログラミング言語の標準 API からシステム コマンドを発行し、出力を解析して MAC アドレスを取得できます。システム コマンドの発行を避けて、別の解決策を見つけたほうがよいでしょう。それは実際にはプラットフォームに依存しない方法だからです。

提供:Saleem Bhatti 教授

于 2010-07-01T17:49:12.723 に答える
0

これを達成する方法はないと思います。IP パケットが最初のルーターを経由すると、ホストの MAC 情報が失われます (MAC はイーサネット層でのみ使用されることがわかっているため)。あなたの PC に最も近いルーターがリモート MAC コードを伝えることができたとしても、あなたの PC と「相手側」の間の次のルーターの MAC しか見えません。

于 2009-05-27T19:22:49.643 に答える
0

犠牲にし始めます。

ルーターが関与していない場合を除き、ネットワークに関してこれを行う一般的な方法はありません。ルーターが関係していると、元のシステムの MAC アドレスが表示されることはありません。

これは、元のシステムがネットワーク インターフェイスを 1 つしか持たないため、MAC アドレスも 1 つしか持たないことを前提としています。

実際、「魔法のパケット」(それが何であれ) がルーターを経由して到達したいシステムに到達することを確信していますか? これは、ルーターやその他のネットワーク インフラストラクチャが実行する必要がある機能のように思えます。

于 2009-05-27T19:23:03.497 に答える