
コマンドラインからネットワーク上のコンピューターをスキャンし、コンピューターについて何も知らなくても IP、MAC、DNS 名を取得する方法はありますか?
答え1
nmap -v -sn 192.168.1.0/24 | grep -v down
ps. もちろん、必要に応じてサブネット設定を変更できます。
ps. nmap のバージョンに応じて、MAC アドレスが表示されるかどうかが変わります。 5.21+ (debian テスト版以上) では表示されます。 5.0 (現在 debian 安定版) では表示されません。
答え2
arp -a
は、 をインストールしなくてもすべての情報をダンプしますnmap
。ただし、nmap
アクティブスキャンを実行するため、より最新の情報になります。
答え3
本当にまったく見当がつかない場合は、まずネットワークを受動的にリッスンする必要があります。ローカル ネットワークは非常に通信量が多く、ほとんどの場合、パケットがすべてのネットワーク デバイスに送信されます。パケットのレイヤーを分解することで、トポロジについて多くのことを知ることができます。ただし、ネットワークによっては、これがまったく不可能な場合もありますので注意してください。
例えば:
イーサネット フレームはイーサネット アドレスを提供します。
ARP (アドレス解決プロトコル) は、イーサネット アドレスをネットワーク アドレスに結合し、ネットワーク デバイス間の関係に関する暗黙的なヒントを提供します。
IP (インターネット プロトコル) は、IP アドレスを持つ 2 つのホスト間の関係を提供します。
TCP (伝送制御プロトコル) を使用すると、どのサービス (ポート) がアクティブで、どのコンピューターが相互に通信しているかがわかります。
UDP (ユーザー データグラム プロトコル) は TCP と同じ情報を提供します。アクティブ スキャンを実行する以上の情報を得ることができます。
特定の情報を見つけたい場合は、tcpdumpを使用するか、pcapライブラリを使用します。小さな例perl で。すべてのハードウェア アドレス、ネットワーク アドレス、TCP および UDP ポートをダンプします。