DHCPを使用してIPからMACアドレスを取得しますか?
-
21-09-2019 - |
質問
WOL を介して Windows ドメイン内の PC をウェイクアップできるようにするスクリプト/サービスを作成しようとしています。ここで、AD コンテナに含まれる PC を起動するための開始点として AD コンテナを選択するオプションをユーザーに提供したいと思います。私の最初の考えは、ホスト名を指定してMACアドレスをクエリするためのリポジトリとしてDHCPを使用することです(コンテナを指定すると、ADから簡単に取得できます)。
プログラムで DHCP サービス/サーバーにクエリを実行し、ホスト名を渡し、関連付けられた MAC アドレスを回復する方法はありますか?
それとも、問題を解決するためのより良い/より簡単な方法はありますか?
解決
dhcpexim.exe
マイクロソフトから試してみてください。
または、あなたは純粋なCを使用して好む場合は DhcpEnumSubnetClientsV4する
他のヒント
問題ない;すべてのマシンがドメイン内にあるため、ローカル マシンから MACAddress を取得し、それをコンピュータ オブジェクトの属性として Active Directory に保存する VBScript を作成できます。
これを行うための簡単なハックを次に示します (これを .vbs ファイルとして保存します)。
Option Explicit
Const ADS_PROPERTY_UPDATE = 2
Const COMPUTERLOCATION = "ou=Member Servers,dc=yourdomain,dc=com"
Const ATTRIBUTETOUSE = "otherTelephone"
Dim wshNetwork, strComputerName
Set wshNetwork = WScript.CreateObject("WScript.Network")
strComputerName = wshNetwork.ComputerName
Dim objWMIService, colNetCards, objComputer, objNetCard
Set objWMIService = GetObject("winmgmts:\\" & strComputerName & "\root\cimv2")
Set colNetCards = objWMIService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")
Set objComputer = GetObject("LDAP://cn=" & strComputerName & "," & COMPUTERLOCATION)
For Each objNetCard in colNetCards
objComputer.PutEx ADS_PROPERTY_APPEND, ATTRIBUTETOUSE, Array(objNetCard.MACAddress)
objComputer.SetInfo
Next
クライアントのすべてが上記の「メンバーサーバー」OU に属しているわけではないため、上記のスクリプトを変更して以下を含める必要があります。 ディレクトリ検索 のために strComputerName
を入手してください COMPUTERLOCATION
.
動作するスクリプトがある場合は、ドメイン管理者に依頼して、そのスクリプトを監視する必要があるコンピュータを対象とする起動スクリプトとして配置してもらいます。そうすれば、コンピュータが起動するたびに実行されるようになります。また、スクリプトをスケジュールされたタスクとして実行して、再起動していない、または使用していないクライアントからデータを取得することもできます。 psexec または、データをすぐに取得するために考えられる他の方法。または、スクリプトを完全に書き換えて、すべてのマシンにリモート接続し、その方法でデータを取得することもできます (ローカル ファイアウォールが原因で不可能な場合があります)。あるいは、同じことを行う小さな .NET コンソール アプリケーションを作成することもできます。それはあなた次第です...
また、ありますが、 networkAddress
- コンピュータオブジェクトに対して定義された属性。デフォルトでは、コンピューター オブジェクト自体には、このプロパティに書き込むためのアクセス権がありません。起動スクリプトは SYSTEM
特定のマシン上のアカウントを作成する最も簡単な方法は、コンピュータ オブジェクトの属性を使用することです (SELF
) への書き込みアクセス権があります。の otherTelephone
-attribute は複数の値を持ち、 個人情報プロパティセット すべてのコンピュータ オブジェクトにはデフォルトで書き込みアクセス権があります。を使用したい場合は、 networkAddress
-attribute すべてのコンピュータに対してその属性への明示的な書き込みアクセスを設定する必要があります。
また、MAC アドレスを Active Directory に保存すると、ドメイン内のすべてのユーザーがそのアドレスに読み取りアクセスできることになり、その結果 (環境によっては) 若干のセキュリティ リスクが生じる可能性があることにも留意する必要があります。
それをネットワークが行う方法をすることができません。
グラブ SharpPcap とWinPcapの(Windows)またはlibpcapを(PCAPのC#のラッパー)(* NIX) 。ルータ上のARPテーブルを照会するSNMPパケットを作成するアプリケーションを記述します。
注:ARP(Address Resolution Protocol)テーブルのMACアドレスにIPアドレスのマッピングを含むテーブルである。の
。私は最近これを行う例の実装について考えてきたが、私は1つがまだ表示されている必要はありません。私は一度、私は確かにそれはSharpPcap例に追加されます作ってあげるプロジェクトのソースツリーにあります。
これは少しです。おかげで質問をするためにcottsak。私は、DHCPプロトコルは、このようなクエリを持っていないことを理解し、私はマイクロソフトからmayb実行ファイルは、コマンドラインから、それに対処することができますいくつかの方法を持っているかもしれないと思いました。私はそのようなケースが存在しないことを誰でもどこでもの発言を聞いていないが、それはそうでなければなりません。
NETSH:WHOA、ちょっと待って...私は、我々が探しているもの見つけたと思います。 CFます:
ます。http://社会的。 technet.microsoft.com/Forums/en/ITCG/thread/afb4be16-09bd-4260-b515-8323d85d4ccbする
それはあなたがDHCPサーバ上のプロンプトのコマンドを開いた場合は、このコマンドを実行することができます言う
netshをDHCPサーバースコープ192.168.1.0ショークライアント
とこのようなレポートを取得します:
10.10.98.53 - 255.255.255.0 -00-0c-29から02-a4-09 - -Dを無期限にします 10.10.98.54 - 255.255.255.0 - 00-22-19-10-29-75 -1/21/2012午前8時39分25秒AM -D
Yippeee!スレッドをありがとう!!それは、この1のためではなかった場合、私はenverのTechNetに私の検索を狭めADN 1つを発見しただろう。
あなたはDHCPでそれを行うことはできません。 DHCPは、他の方法の周りではない、MACからIP属性。 ARPは、MACにIPを変換するものであるが、それは答えARPは、それは明らかにするつもりな答えはありませんオフ、それはだ場合...
を要求しているマシンそのものです私はあなたがあなたのADにMACを保存示唆直接(私はADサポートのカスタム属性を推測?)
あなたにはCは長いプロセスであるように、MACアドレスを取得し、やってするのにARPを使用する必要があります。
のMac住所がハードあなたはXコンピュータを持っているので、もし行くとXのMACアドレスを取得し、ADにそれらを結ぶ、コード化されています。
コンピュータがそのMACアドレスを要求するためにする必要がありますので注意してください。
IPアドレスからうん、それについての焦げ茶色の心配は、あなたがDHCPから直接この情報を引き出すことができます。
あなたは右クリックして、DHCPで予約を追加する方法を知っていますか?
のユニークなID」のDHCPで確認します。これは、MACアドレス、サンセリフコロンです。