ネットワーク上の無料のIPをスキャンする方法はありますか?私は使用してnmap -sP 192.168.1.0/24
いますが、実際には稼働しているホストが表示されます。
ネットワーク上の無料のIPをスキャンする方法はありますか?私は使用してnmap -sP 192.168.1.0/24
いますが、実際には稼働しているホストが表示されます。
回答:
Nmapをこのように使用することは、いくつかの前提条件が満たされていれば、あなたが尋ねたことを行う正確な方法です。
「使用可能な」アドレスを取得するには、Nmapが「ダウン」として報告するアドレスのリストを取得する必要があります。これは、簡単なawkコマンドで実行できます。
sudo nmap -v -sn -n 192.168.1.0/24 -oG - | awk '/Status: Down/{print $2}'
使用されるNmapオプションの概要:
-v
オプションを使用すると、Nmapは、検出されたアドレスを「上」に加えて「下」として出力します。-sP
、新しいスペルを置き換えましたが-sn
、これは同じスキャンを実行しますが、誤解を招く「Pingスキャン」の代わりに「ポートスキャンをスキップする」ことを意味します(ホスト検出フェーズは必ずしもICMP EchoスキャンまたはPingを意味しないため) )。-n
オプションは逆引きDNSルックアップをスキップします。これは、名前に興味がなく、IPアドレスだけに関心があるため、少し時間がかかります。-oG
オプションは、Nmapにgrepable形式を出力するように指示します。これは、awkが処理しやすい形式です。引数 " -
"は、この出力をstdoutに送信するように指示します。次に、awkコマンドは「Status:Down」を検索し、IPアドレスを含む2番目のフィールドを出力します。
もちろん、スイッチの実行設定またはDHCPサーバーのリースにアクセスできる場合、セキュリティアラームをオフにするスキャンを実行しなくても、この回答をはるかに信頼できる方法で取得できます。
n-mapについてはわかりませんが、各アドレスに1つのpingを送信するpingスクリプトを記述すると、「destination unreachable」で戻ってくるホストは占有されておらず、戻ってくるものは「request time out」であると合理的に想定できます占有されていますが、pingに応答していません。2つの応答の違いは、「宛先に到達できません」がARP要求に対する応答を受信しなかったことです。「リクエストのタイムアウト」とは、ARPリクエストには応答したがICMPパケットには応答しなかったことを意味します。
Anders Larssonに触発された別の1つ
172.18.5のIPの場合。{129..254}; do {ping -c 1 -W 1 $ ip; }&> / dev / null || echo $ ip&done | ソート
つまり、「範囲内のすべてのIPにpingを試行します。「ping」が失敗した場合、そのIPを印刷します」
もしあなたがそうするなら
nmap -v -sn -n 192.168.1.0/24 -oG - | awk '/Status: Down/{print $2}'
高速に動作しますが、「ダウン」と報告された一部のホストは実際には「アップ」であることに気付きました