「Ubuntuでどのポートが開いているか確認したい」と思ったとき、コマンドが複数あって迷いますよね。結論から言うと、Ubuntu 24.04 LTS では ss コマンドが標準搭載されていて、ss -tlnp の一行で開いているTCPポートとプロセス名を確認できます。
本記事では実際に ubuntu:24.04 Dockerコンテナで ss・netstat・nmap を動かし、それぞれの実出力を比較しながら使い方を解説します。どのコマンドをいつ使えばいいか、迷わなくなります。
この記事のポイント
- Ubuntu 24.04 では
ssがデフォルトで使える(追加インストール不要) netstatはapt 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 です。
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))

各オプションの意味は次のとおりです。
-t:TCP ソケットのみ表示-l:LISTEN(待ち受け)状態のソケットのみ-n:ポート番号を数値で表示(サービス名に変換しない)-p:そのソケットを使っているプロセス名・PIDを表示
上記の出力では nginx がポート80番でリッスン中、PIDは590であることが一目でわかります。
手順2:UDPポートも確認する
UDPを確認したい場合は -u オプションを使います。
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 でソケット全体の統計を表示できます。接続数の把握に便利です。
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をインストールする
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でリッスン中のポートを確認する

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 を使います。
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
nmapでポートをスキャンする
nmap(Network Mapper)は ss・netstat とは視点が違います。ss/netstat がサーバー内部のソケット一覧を見るのに対し、nmap は「外部から実際に接続できるか」をスキャンします。ファイアウォール(UFW など)の設定を確認したいときに特に役立ちます。
手順1:nmapをインストールする
nmap 7.94+git20230807.3be01efb1+dfsg-3build2 がインストールされます
$ nmap –version
Nmap version 7.94SVN ( https://nmap.org )
手順2:特定ポートをスキャンする

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ポートをまとめてスキャンする
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 への実行は問題ありませんが、他人のサーバーや許可なくスキャンすることは絶対に行わないでください。不正アクセス禁止法に抵触する可能性があります。
用途別の使い分け

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 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 が入っていない最小インストール環境で発生します。
-bash: ss: command not found
$ sudo apt install iproute2
iproute2 6.1.0-1ubuntu6.3 がインストールされます
②「netstat: command not found」が出る
Ubuntu 20.04 以降ではデフォルトで netstat は入っていません。
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 権限が必要なことがあります。
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 チェックをスキップしてみてください。
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 -tlnp:apt install net-toolsが必要。旧来の方法で、Ubuntu 22.04 以前の資料では頻繁に登場するnmap -p XX host:外部からの到達性を確認するスキャナー。UFWなどのファイアウォール設定後の確認に使う
VPSでサーバーを運用し始めると、ポートの管理は日常業務になります。ss -tlnp をすぐ打てるように覚えておくだけで、トラブル対応の時間が大きく短縮できます。
本格的にVPSでサーバーを運用したい場合は、Vultr・DigitalOcean などのVPS選びから始めてみてください。初期設定から SSH・UFW・nginx 構築まで解説している記事も参考にしてみてください。



コメント