ローカルネットワークに接続されている他のマシンを見つける方法


27

自分が所属しているLANで使用可能なすべてのマシンのリストを表示するにはどうすればよいですか。

回答:


28

問題のLANについてどれだけ知っていますか?ケーブルに差し込んだり、wifiに接続したりするだけのものは知らないと思います。

  1. DHCPでIPアドレスを要求してみてください。ゲットできますか?次に、ゲートウェイIP、DHCPサーバーIP、サブネットマスク、およびDNSサーバーなど、いくつかのことを既に知っています。
  2. 取得できない場合は、DHCPサーバーがないか、ネットワークがMACフィルターされています。
  3. いずれにしても、wiresharkでパケットのキャプチャを開始します。ワイヤレスで接続している場合、またはハブに接続している場合は簡単です。スイッチに接続している場合、MACフラッディングを試して「ハブモード」に戻すことができますが、よりスマートなスイッチではポートが無効になります。とにかく試してみたい場合は、ettercapがこれをあなたのためにできます。(またはmacchangerとシェルスクリプト:))
  4. パケットを見るとIPアドレスを見つけることができますが、最も重要なことは、ネットワークパラメーターを推測できることです。MACフィルタリングが変更された疑いがある場合は、MACアドレスが離れた後(しばらくの間何も送信しない)、観察されたMACアドレスのいずれかに変更されます。
  5. ネットワーク構成(ネットマスク、ゲートウェイなど)について良いアイデアがある場合は、nmapを使用してスキャンします。Nmapは、-sP一部のホストがpingに応答しない場合よりも多くのことができます(ドキュメントを確認しください)。nmapは、ネットワーク設定とルートが正しい場合にのみ機能することが重要です。
  6. nmapのアイドルスキャンを使用して、さらに多くのホストを見つけることができます。

一部の(ほとんどの?)システム管理者は、上記の方法のいくつかを好まないため、許可されていることを確認してください(たとえば、ネットワークです)。また、ご使用のファイアウォールがこれらの方法の一部を妨げる可能性があることに注意してください(DHCPを使用してIPを取得することもあります)。

Nmap

nmapを使用して基本的なホスト検出を行う方法を次に示します。私が言ったように、あなたがこれを試みるとき、あなたのネットワーク構成は正しいはずです。あなたが/ 24サブネットにいる192.168.0.50であるとしましょう。あなたのMACアドレスは、接続などが許可されているものです。

まず、指定したIPアドレスのDNSのPTRレコードのみを解決するリストスキャンを試します。ホストに何も送信しないため、実際に接続されているかオンになっている保証はありませんが、十分なチャンスがあります。このモードには明らかに、あなたと話そうとするDNSサーバーが必要です。

nmap -vvv -sn -sL 192.168.1.0/16

これで何も見つからないか、すべてのIPが起動していることがわかります。

それから私は通常、ARPスキャンに行きます。ARP要求を送信します("Who has <target IP>? Tell <your IP>"wiresharkのように表示されます)。誰もARPをフィルタリングしたり偽造したりしないため、これはかなり信頼できます。主な欠点は、サブネットでのみ機能することです。

nmap -vvv -sn -PR 192.168.1.0/24

ルーターまたはファイアウォールの背後にあるものをスキャンする場合は、SYNおよびACKスキャンを使用します。SYNはTCP接続を開始し、応答としてRSTまたはSYNACKを受け取ります。いずれにせよ、ホストは稼働しています。ファイアウォールがある場合は、ICMP通信が禁止されているか、そのようなものになる可能性があります。ほとんどの場合、ファイアウォールがパケットをフィルタリングした場合、何も得られません。一部のタイプのファイアウォールは、TCP SYNパケットのみをフィルタリングし、他のすべてのTCPパケットを通過させます。これが、ACKスキャンが役立つ理由です。ホストが稼働している場合、応答としてRSTを受け取ります。どのファイアウォールが設置されているかわからないので、両方試してください。

nmap -vvv -sn -PS 10.1.2.0/24
nmap -vvv -sn -PA 10.1.2.0/24

その後、もちろん-PE -PP -PMでICMPベースのスキャンを使用できます。

他の興味深い方法は、存在しないプロトコル番号を持つ-POです。多くの場合、ファイアウォールではTCPとUDPのみが考慮され、未知のプロトコルを試すと何が起こるかは誰もテストしません。ホストが稼働している場合、ICMPプロトコルに到達できません。

nmap -vvv -sn -PO160 10.1.2.0/24

nmapにホスト検出(-Pn)をスキップし、すべてのホストでポートスキャンを実行するように指示することもできます。これは非常に遅くなりますが、何らかの理由でホストの検出に失敗した他のホストが見つかる場合があります。


これは優れた答えのように見えます。次に、各タスクで実行するコマンドを含めることで、私にスプーンフィードをお願いする必要があります。Nmapを使用して質問に答える方法に特に興味があります(ドキュメントを読まないでください:)
tshepang

5
@Tshepang:nmapの例をいくつか追加しましたが、ドキュメントを読むことを検討してください。Nmapは最も優れたネットワークツールの1つであり、ドキュメントは適切に作成されており、本当に価値があります。
-stribika

9

ip neighIpRoute2に付属のコマンドが気に入っています。

ip neigh
192.168.1.1 dev eth0 lladdr 00:1d:7e:f8:21:66 REACHABLE

ただし、arp-ableノードでのみ機能すると思います。


それは正確に何をしますか?私は、いくつかのエントリをリストしています。
-tshepang

ブロードキャストIPにarpを送信し、応答するものをリストするだけだと思います。正直なところ、どのように機能するのかわかりません。
-xenoterracide

1
man ip隣人または隣人の行動を示します。
slm

9

nmapをインストールして実行しnmap -sP <mynetwork>ます。


私は得るNmap done: 1 IP address (1 host up) scanned in 0.01 seconds
シェパン

1
@Tshepang-私がやったnmap -sP 192.168.0.*し、フォームの出力のリストを返しました:Nmap scan report for justin-desktop2 (192.168.0.61) Host is up (0.00056s latency).
ジャスティン

@justinバージョン5.00を使用していますが、現在、ネットワーク上にのフォームで多数のマシンを表示していますHost 192.168.2.23 is up (0.0088s latency).
-tshepang

3
<mynetwork>は何に置き換える必要がありますか?
シェパン

@tshepangホスト部分がゼロにされ、CIDRマスクを持つネットワーク番号。このように:192.169.1.0/24
キース

0

両方の答えについて:いいえnmapは必要ありません/ sudoは必要ありません

回答1

$ arp

回答2

xenoterracidesをベースにした答えはip neighhosts次のとおりです。

#!/usr/bin/env python

"""List all hosts with their IP adress of the current network."""

import os

out = os.popen('ip neigh').read().splitlines()
for i, line in enumerate(out, start=1):
    ip = line.split(' ')[0]
    h = os.popen('host {}'.format(ip)).read()
    hostname = h.split(' ')[-1]
    print("{:>3}: {} ({})".format(i, hostname.strip(), ip))

経由でダウンロード

wget https://gist.githubusercontent.com/MartinThoma/699ae445b8a08b5afd16f7d6f5e5d0f8/raw/577fc32b57a7f9e66fdc9be60e7e498bbec7951a/neighbors.py
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.