Ubuntuでポート番号を確認するコマンド【netstat/ss/nmap使い分け】

コマンド

「Ubuntuでどのポートが開いているか確認したい」と思ったとき、コマンドが複数あって迷いますよね。結論から言うと、Ubuntu 24.04 LTS では ss コマンドが標準搭載されていて、ss -tlnp の一行で開いているTCPポートとプロセス名を確認できます。

本記事では実際に ubuntu:24.04 Dockerコンテナで ssnetstatnmap を動かし、それぞれの実出力を比較しながら使い方を解説します。どのコマンドをいつ使えばいいか、迷わなくなります。

この記事のポイント

  • Ubuntu 24.04 では ss がデフォルトで使える(追加インストール不要)
  • netstatapt install net-tools でインストールが必要(net-tools 2.10-0.1ubuntu4.4)
  • ss -tlnp でリッスン中のTCPポートとプロセス名を一覧できる
  • nmap は「外から見てポートが開いているか」を確認するツールで用途が異なる
  • 本記事のコマンドは ubuntu:24.04 Docker公式イメージで2026-06-13に実測

前提環境

本記事は以下の環境で検証しています。VPS・WSL・ローカルのUbuntuでも同じコマンドが使えます。

項目
OS Ubuntu 24.04 LTS(Noble Numbat)
実行環境 Docker公式イメージ ubuntu:24.04
iproute2(ss) 6.1.0-1ubuntu6.3
net-tools(netstat) 2.10-0.1ubuntu4.4(別途インストール)
nmap 7.94SVN(別途インストール)
検証日 2026-06-13

ssコマンドでポートを確認する(推奨)

ss(Socket Statistics)は iproute2 パッケージに含まれているコマンドで、Ubuntu 24.04 では最初から使えます。netstat の後継として位置づけられており、現在の Ubuntu では ss を使うのが推奨です。

手順1:ssコマンドの基本構文

まずオプションを確認しましょう。よく使う組み合わせは -tlnp です。




ubuntu@server: ~
$ ss -tlnp
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:((“nginx”,pid=590,fd=5))
LISTEN 0 511 [::]:80 [::]:* users:((“nginx”,pid=590,fd=6))
ss -tlnp コマンド実行結果(Ubuntu 24.04 / nginx起動後、実測)
ss -tlnp コマンド実行結果(Ubuntu 24.04 / nginx起動後、実測)

各オプションの意味は次のとおりです。

  • -t:TCP ソケットのみ表示
  • -l:LISTEN(待ち受け)状態のソケットのみ
  • -n:ポート番号を数値で表示(サービス名に変換しない)
  • -p:そのソケットを使っているプロセス名・PIDを表示

上記の出力では nginx がポート80番でリッスン中、PIDは590であることが一目でわかります。

手順2:UDPポートも確認する

UDPを確認したい場合は -u オプションを使います。




ubuntu@server: ~
$ ss -ulnp
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
(DNSや他のUDPサービスが起動中の場合にここに表示される)
$ ss -tlunp # TCPとUDPをまとめて確認
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:((“nginx”,pid=590,fd=5))

手順3:ソケット統計の全体像を確認する

ss -s でソケット全体の統計を表示できます。接続数の把握に便利です。




ubuntu@server: ~
$ ss -s
Total: 13
TCP: 20 (estab 0, closed 18, orphaned 0, timewait 2)

Transport Total IP IPv6
TCP 2 1 1

ポートが何も表示されない場合

サービスが何も起動していなければ ss -tlnp の出力はヘッダー行だけになります。これは正常です。nginx や SSH など、確認したいサービスを起動してから実行してみてください。

netstatコマンドでポートを確認する

netstat はかつて標準的なツールでしたが、Ubuntu 24.04 ではデフォルトでインストールされておらず、別途 apt install net-tools が必要です。

手順1:net-toolsをインストールする




ubuntu@server: ~
$ sudo apt update
Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
Reading package lists… Done
$ sudo apt install net-tools
Reading package lists… Done
The following NEW packages will be installed:
net-tools
Need to get 207 kB of archives.
net-tools 2.10-0.1ubuntu4.4 がインストールされます

手順2:netstatでリッスン中のポートを確認する

netstat -tlnp コマンド実行結果(Ubuntu 24.04 / nginx起動後、実測)
netstat -tlnp コマンド実行結果(Ubuntu 24.04 / nginx起動後、実測)



ubuntu@server: ~
$ netstat -tlnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 590/nginx: master p
tcp6 0 0 :::80 :::* LISTEN 590/nginx: master p

ss と同じ情報が取れていることがわかります。オプションの意味も ss と同じです(-t: TCP、-l: LISTEN、-n: 数値表示、-p: プロセス)。

手順3:全接続を確認する(確立済みも含む)

LISTEN だけでなく、現在確立中の接続も見たい場合は -an を使います。




ubuntu@server: ~
$ netstat -an | grep ESTABLISHED
tcp 0 0 172.17.0.3:43496 172.66.152.176:80 ESTABLISHED
$ netstat -an | grep LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp6 0 0 :::80 :::* LISTEN
著者アイコン
著者アイコン

正直、Ubuntu 24.04 環境では ss で十分なのですが、古いシェルスクリプトや運用ドキュメントに netstat が書かれていることも多いです。そのためインストール方法だけ把握しておくと助かります。

nmapでポートをスキャンする

nmap(Network Mapper)は ssnetstat とは視点が違います。ss/netstat がサーバー内部のソケット一覧を見るのに対し、nmap は「外部から実際に接続できるか」をスキャンします。ファイアウォール(UFW など)の設定を確認したいときに特に役立ちます。

手順1:nmapをインストールする




ubuntu@server: ~
$ sudo apt install nmap
nmap 7.94+git20230807.3be01efb1+dfsg-3build2 がインストールされます
$ nmap –version
Nmap version 7.94SVN ( https://nmap.org )

手順2:特定ポートをスキャンする

nmap によるポートスキャン結果(Ubuntu 24.04 / nginx起動後、実測)
nmap によるポートスキャン結果(Ubuntu 24.04 / nginx起動後、実測)



ubuntu@server: ~
$ nmap -p 80,443 localhost
Starting Nmap 7.94SVN ( https://nmap.org ) at 2026-06-13 09:31 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000044s latency).

PORT STATE SERVICE
80/tcp open http
443/tcp closed https

Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds

nginx がポート80でリッスンしているため open、443は起動していないため closed と表示されました。

手順3:デフォルト1000ポートをまとめてスキャンする




ubuntu@server: ~
$ nmap localhost # 上位1000ポートをスキャン
Starting Nmap 7.94SVN ( https://nmap.org ) at 2026-06-13 09:30 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000060s latency).

80/tcp open http
Not shown: 999 closed tcp ports (conn-refused)
Nmap done: 1 IP address (1 host up) scanned in 0.03 seconds

注意:nmap の対象サーバーに気をつけてください

nmap は「外からスキャンする」ツールです。自分が管理するサーバーや localhost への実行は問題ありませんが、他人のサーバーや許可なくスキャンすることは絶対に行わないでください。不正アクセス禁止法に抵触する可能性があります。

用途別の使い分け

ss / netstat / nmap の使い分けまとめ(概念図)
ss / netstat / nmap の使い分けまとめ(概念図)

3つのコマンドをまとめると次のとおりです。

コマンド インストール 視点 プロセス表示 主な用途
ss -tlnp 不要(標準搭載) サーバー内部 あり(-p 現在のLISTENポート確認(推奨)
netstat -tlnp apt install net-tools サーバー内部 あり(-p 旧来スクリプト・互換が必要な場面
nmap -p XX host apt install nmap 外部クライアント なし 外部からの到達性・UFW設定の確認

VPSでサーバーを運用する場合、日常的なポート確認は ss -tlnp 一択で問題ありません。ファイアウォール(UFW)の設定変更後に外部からの到達性を確認したい場合は nmap が役立ちます。

Ubuntu 22.04 vs 24.04のバージョン比較

Ubuntu のバージョンによってツールのバージョンが異なります。実際に docker run で両方のイメージを起動して確認した結果です。

Ubuntu 22.04 vs 24.04 ポート確認ツールのバージョン比較(実測)
Ubuntu 22.04 vs 24.04 ポート確認ツールのバージョン比較(実測)
ツール パッケージ Ubuntu 22.04 LTS Ubuntu 24.04 LTS
ss iproute2 5.15.0-1ubuntu2.1 6.1.0-1ubuntu6.3
netstat net-tools 1.60+git20181103 2.10-0.1ubuntu4.4
nmap nmap 7.80(7.91+dfsg1) 7.94SVN

どちらのバージョンでも基本的な使い方は同じです。ただし ss の出力フォーマットが若干異なる場合があるため、スクリプトで結果をパースしている場合は注意してください。

よくあるエラーと解決策

①「ss: command not found」が出る

非常にまれですが、iproute2 が入っていない最小インストール環境で発生します。




ubuntu@server: ~
$ ss -tlnp
-bash: ss: command not found
$ sudo apt install iproute2
iproute2 6.1.0-1ubuntu6.3 がインストールされます

②「netstat: command not found」が出る

Ubuntu 20.04 以降ではデフォルトで netstat は入っていません。




ubuntu@server: ~
$ netstat -tlnp
Command ‘netstat’ not found, but can be installed with:
sudo apt install net-tools
$ sudo apt install net-tools
Setting up net-tools (2.10-0.1ubuntu4.4) …

③ssで「cannot open network namespace」エラー

root権限が必要な場合に発生します。sudo ss -tlnp で実行してください。プロセス名(-p オプション)の表示には root 権限が必要なことがあります。




ubuntu@server: ~
$ ss -tlnp
LISTEN 0 511 0.0.0.0:80 0.0.0.0:* ← プロセス名が表示されない
$ sudo ss -tlnp
LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:((“nginx”,pid=590,fd=5))
↑ sudo をつけるとプロセス名が表示される

④nmapで「Note: Host seems down」が出る

ホストが ICMP ping に応答しない場合に発生します。-Pn オプションを付けて ping チェックをスキップしてみてください。




ubuntu@server: ~
$ nmap -Pn -p 22,80 your-server-ip
Host discovery disabled (-Pn). All addresses will be marked ‘up’.
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http

まとめ

Ubuntuでポートを確認するコマンドを3つ紹介しました。

  • ss -tlnp:Ubuntu 24.04 に標準搭載。追加インストール不要でプロセス名も表示できる。日常的なポート確認はこれ一択
  • netstat -tlnpapt install net-tools が必要。旧来の方法で、Ubuntu 22.04 以前の資料では頻繁に登場する
  • nmap -p XX host:外部からの到達性を確認するスキャナー。UFWなどのファイアウォール設定後の確認に使う

VPSでサーバーを運用し始めると、ポートの管理は日常業務になります。ss -tlnp をすぐ打てるように覚えておくだけで、トラブル対応の時間が大きく短縮できます。

本格的にVPSでサーバーを運用したい場合は、Vultr・DigitalOcean などのVPS選びから始めてみてください。初期設定から SSH・UFW・nginx 構築まで解説している記事も参考にしてみてください。

コメント

タイトルとURLをコピーしました