【初心者向け】nmapでLAN内の空ポートやサービスを確認する方法

みなさん、こんにちは。

ネットワーク開発や、自作のサービスを構築しているとき、「LANの中でどのポートが空いているんだろう?」とか「どんなサービスが動いているんだろう?」と気になったことはありませんか?

そんなときに大活躍してくれるのが、nmap(Network Mapper)というツールです。

今回は、nmapの基本的なことから、OSごとのインストール方法、そして実際に空いているポートを探す方法まで、初心者の方にも分かりやすく解説していきます。

 


 

1. nmapって何?

 

nmapは、ネットワークに接続されているコンピューターやデバイスの情報を調べるためのツールです。主な用途は以下の通りです。

  • ポートスキャン
    • どのポートが開いているかを確認できます。
  • ホスト探索
    • LAN内にどんなIPアドレスのデバイスが存在するか調べられます。
  • サービス確認
    • 開いているポートでどんなサービスが動いているかを推測できます。

つまり、nmapを使えば、ネットワークの「今」の状態をパッと把握できるのです!

 


 

2. nmapのインストール方法(OS別)

 

まずは、ご自身の環境に合わせてnmapをインストールしましょう。どれもとても簡単ですよ。

2.1 Ubuntu / Debian 系

sudo apt update
sudo apt install nmap -y

これらのコマンドで、標準のリポジトリからすぐにインストールできます。

2.2 Fedora / CentOS / RHEL 系

sudo dnf install nmap -y # Fedoraの場合
sudo yum install nmap -y # CentOS / RHELの場合

お使いのOSに合わせてコマンドを使い分けてください。

2.3 Windows

Windowsの方は、公式ウェブサイトからインストーラーをダウンロードするのがおすすめです。

https://nmap.org/download.html

ダウンロードしたインストーラーを実行するときは、「Add to PATH」というオプションにチェックを入れておくと、コマンドプロンプトから簡単に使えるようになります。

2.4 macOS

macOSの場合は、Homebrewを使えば一発でインストールできます。

brew install nmap

インストールが完了したら、nmap --versionと入力して、バージョン情報が表示されるか確認してみましょう。

 


 

3. nmapの基本的な使い方

 

ここからは、実際にnmapを動かしてみましょう!

3.1 単一IPをスキャンする

まずは、特定のIPアドレスが持っているポートを調べてみます。

nmap 192.168.0.1

このコマンドを実行すると、デフォルトで約1,000個のポートをスキャンしてくれます。結果には、ポートの状態がopen(開いている)、closed(閉じている)、filtered(フィルタリングされている)のように表示されます。

3.2 特定のポート範囲をスキャンする

「特定のポートだけを調べたい」というときは、-pオプションを使います。

nmap -p 8000-8100 192.168.0.1

これで、8000から8100までのポートだけをスキャンできます。

3.3 LAN内のデバイスを確認する

LAN内にどんなデバイスが接続されているか知りたいときは、-snオプションが便利です。

nmap -sn 192.168.0.0/24

このコマンドは、Pingスキャンを使って、ネットワーク内で通信可能なIPアドレスの一覧を表示してくれます。

3.4 サービスの情報を確認する

開いているポートが何のサービスで使われているか知りたいときは、-sVオプションを付け加えます。

nmap -sV 192.168.0.1

これで、ポート番号だけでなく、そのポートで動作しているサービス名やバージョンまで取得できます。

 


 

4. nmapの結果の見方

 

スキャン結果に出てくる「open」「closed」「filtered」は、それぞれ次のような意味を持っています。

  • open:ポートが開いていて、通信できる状態です。
  • closed:OSは応答していますが、サービスは動いていません。空いているポートの候補になります。
  • filtered:ファイアウォールなどで応答が遮断されています。

<結果の例>

PORT     STATE  SERVICE
22/tcp   open   ssh
80/tcp   open   http
8091/tcp closed network-tv

この例だと、ポート22と80が開いていて、ポート8091は閉じていることが分かりますね。

 


 

5. 独自サービス開発に役立てる方法

 

自作サービスを開発する場合、まずどこに配置すればいいか、空いているポートを探す必要がありますよね。

こんなときは、nmapとPythonを組み合わせるのがおすすめです。

  1. nmapでポートの候補を絞る
    • まずはnmapで大まかにポートの空き具合を確認します。Bashnmap -p 8000-8100 192.168.0.0/24 この結果を参考に、closedになっているポートをメモしておきましょう。
  2. Pythonで空きポートを最終確認する
    • 次に、Pythonのプログラムを使って、実際にポートが使えるか確認します。
import socket

def find_free_port(start=8000, end=8100):
    for port in range(start, end+1):
        with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
            try:
                s.bind(('', port))
                return port  # バインドできた=空きポート!
            except OSError:
                continue
    return None

free_port = find_free_port()
print("空いているポート:", free_port)

このように、nmapで候補を探し、Pythonで確実に空いているポートを見つけるのが、安全で確実な方法です。

 


 

6. 使うときの注意点

 

nmapは非常に便利なツールですが、使うときにはいくつか注意点があります。

  • スキャンするネットワークは自分のものに限定する
    • 必ずご自身のネットワーク内や、許可を得た機器に対して使いましょう。
  • 大規模スキャンはネットワークに負荷をかけることがあります
    • 一度にたくさんのIPアドレスやポートをスキャンすると、ネットワークが重くなることがあるので注意してください。

 


 

まとめ

 

今回は、ネットワークのポートやサービスを調べるのに便利なツールnmapをご紹介しました。

nmapを使えば、LAN内の空きポートや稼働中のサービスを簡単に把握できます。OSごとに手軽にインストールできるので、誰でもすぐに使い始められます。

独自サービスの開発では、まずnmapで大まかなポートの空き状況を把握し、その後にPythonなどのスクリプトで最終確認するのがおすすめです。この組み合わせを覚えておくと、開発がよりスムーズに進むはずです。

ぜひ、この機会にnmapを活用してみてくださいね!

 

本日も最後までお読みいただきありがとうございました。

それでは、よいシステム開発を!

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール