web-dev-qa-db-ja.com

直接接続されたデバイスのIPアドレスを見つける

特定のイーサネットインターフェイスに直接接続されているデバイスのIPアドレスを確認する方法はありますか?つまりこの有線接続に接続された1つのホスト、1つの有線イーサネット接続、1つの2番目のホストがあれば、IPの下の層またはプロトコルを使用してこれを見つけることができます。

また、Windows-API関数またはコールバックを使用したWindows専用のソリューションにも満足できます。

(これを行う実際の方法はおそらくDHCPを経由することを知っていますが、これはレガシーデバイスを発見することに関するものです。)

17
pmf

DHCPを使用するには、プライマリでDHCPサーバーを実行し、セカンダリでクライアントを実行する必要があります。その後、プライマリはサーバーに照会して、配付したアドレスを確認できます。おそらく行き過ぎ。

Windowsを直接サポートすることはできません。 Unixでは、「arp」コマンドは、ローカルイーサネットセグメントに接続されていることがわかっているIPアドレスを示します。 Windowsはこれと同じ情報を持ちます(IP/Ethernetインターフェースのコア部分であるため)が、どうやってそれを取得するのかわかりません。

もちろん、ネットワークスタックは、他のホストからのトラフィックを以前に見たことがある場合にのみ、他のホストについて認識します。何らかの応答を引き出すために、最初にインターフェイス上でブロードキャストパケットを送信し、ローカルARPテーブルに入力する必要がある場合があります。

8
Brian White

うーん...多くの方法があります。別のネットワーク検出の質問に答えて、少し はじめに と書きます。

一部のtcpipスタックは、icmpブロードキャストに応答します。そのため、ネットワークブロードキャストアドレスへのPINGを試すことができます。

たとえば、IP 192.168.1.1とサブネット255.255.255.0があります

  1. ping 192.168.1.255
  2. 5秒後にpingを停止します
  3. デバイスの応答を見る:arp -a

注:ステップ3では、MAC-to-IPキャッシュエントリのリストを取得するため、icmp_getに応答しない場合でも、最後の数分間にデータを交換するサブネット内のホストもあります。

注(2):今はLinuxを使用しています。確かではありませんが、Windowsがブロードキャスト経由でicm_getに応答しないことがあります。

PCに接続されているデバイスは1つだけですか?それはルーターまたは別の単純なPCですか?

15
Massimo

あなたの最善のアプローチは、Wiresharkをインストールし、デバイスを再起動してTCP/UDPストリームを待つことです。ブロードキャストは両方のイーサネットポートのIPアドレスを通知します。 。

4
Hani Yasin

Windows 7にはarpコマンドが含まれています。 arp -aは、システムに接続されている静的および動的タイプのインターフェースを表示します。

3
Sachin Kalakeri

Githubで公開されているポータブルで無料のWindowsプログラムであるLDWinを備えたネットワークスイッチなど、直接接続されたネットワークデバイスから情報を取得することもできます。

http://www.sysadmit.com/2016/11/windows-como-saber-la-ip-del-switch-al-que-estoy-conectado.html

LDWinは、CDP(Cisco Discovery Protocol)およびLLDP(Link Layer Discovery Protocol)のリンク検出方法をサポートしています。

モデル、管理IP、VLAN識別子、ポート識別子、ファームウェアバージョンなどを取得できます。

2
Vincent Vega