回答:
問題のLANについてどれだけ知っていますか?ケーブルに差し込んだり、wifiに接続したりするだけのものは知らないと思います。
-sP
一部のホストがpingに応答しない場合よりも多くのことができます(ドキュメントを確認してください)。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)をスキップし、すべてのホストでポートスキャンを実行するように指示することもできます。これは非常に遅くなりますが、何らかの理由でホストの検出に失敗した他のホストが見つかる場合があります。
ip neigh
IpRoute2に付属のコマンドが気に入っています。
ip neigh
192.168.1.1 dev eth0 lladdr 00:1d:7e:f8:21:66 REACHABLE
ただし、arp
-ableノードでのみ機能すると思います。
man ip
隣人または隣人の行動を示します。
nmapをインストールして実行しnmap -sP <mynetwork>
ます。
Nmap done: 1 IP address (1 host up) scanned in 0.01 seconds
。
nmap -sP 192.168.0.*
し、フォームの出力のリストを返しました:Nmap scan report for justin-desktop2 (192.168.0.61)
Host is up (0.00056s latency).
Host 192.168.2.23 is up (0.0088s latency).
。
両方の答えについて:いいえnmapは必要ありません/ sudoは必要ありません。
$ arp
xenoterracidesをベースにした答えはip neigh
、hosts
次のとおりです。
#!/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