3.

ポートの確認方法 ss/netstat/lsof/nmap | ネットワーク入門

編集
この記事の要点
  • どのポートで何が待ち受けているかは ss / netstat / lsof / nmap で確認できる。Linux の新しい定番は ss
  • LISTEN 状態のソケットを見れば「サーバとして待ち受けているポート」が分かる。ss -tlnp が基本形
  • Windows では netstat -ano で PID 付きの一覧を取り、tasklist でプロセス名に紐づける
  • lsof -i :ポート で特定ポートを使っているプロセスを逆引きできる。ポート競合 (Address already in use) の調査に必須
  • nmap は外部からの視点でポートの開放状況を確認できるが、許可された対象にのみ使う

概要

「このポートで何が動いているのか」「サービスがちゃんと待ち受けているか」を調べる作業は、サーバ運用やトラブルシュートで日常的に発生します。ポートの確認には大きく 2 つの視点があります。1 つはホスト内部から見る「どのプロセスがどのポートで listen しているか」、もう 1 つは外部から見る「そのポートに接続できるか (開いているか)」です。前者には ss・netstat・lsof 開いているポート番号の確認、後者には nmap や telnet/nc を使います。前提となる概念は ポート番号 を参照してください。

仕組み

TCP ソケットには状態 (state) があり、サーバとして接続を待っている状態が LISTEN です。確立済みの通信は ESTABLISHED、切断処理中は TIME_WAIT などになります。「待ち受けポートを知りたい」場合は LISTEN だけを抽出すればよく、各ツールの「LISTEN 限定」オプションを使います。

  • ss: iproute2 提供の現行標準。カーネルの sock_diag API を直接叩くので高速。-t(TCP) -u(UDP) -l(LISTEN) -n(名前解決なし) -p(プロセス) を組み合わせる。
  • netstat: 旧来の net-tools 系。新しいディストリビューションでは未インストールのことがある。オプション体系は ss とほぼ同じ。
  • lsof: 「開いているファイル」を列挙するツール。ソケットもファイルなので -i でネットワーク接続を逆引きできる。

実用例

# 【Linux】LISTEN 中の TCP/UDP をプロセス付きで (現行の定番)
sudo ss -tulnp

# TCP の LISTEN だけ
ss -tlnp

# 特定ポート(80)を使っているプロセスを逆引き
sudo lsof -i :80
sudo ss -tlnp 'sport = :80'

# 旧式 netstat での同等確認
sudo netstat -tlnp

# 【Windows】PID 付きで全ポート一覧 (PowerShell/cmd)
netstat -ano

# 特定ポート(3000)を使っている行だけ
netstat -ano | findstr :3000
# 出た PID からプロセス名を特定
tasklist /FI "PID eq 1234"

# PowerShell ネイティブで listen 中の TCP を見る
Get-NetTCPConnection -State Listen | Select-Object LocalPort,OwningProcess

Address already in useEADDRINUSE でサーバが起動できないときは、上記でそのポートを掴んでいるプロセスを特定し、停止するか別ポートに変更します。

主な用途

  • サービス稼働確認: 期待したポートで listen できているかを確認する。
  • ポート競合の解決: 起動失敗時に「誰がそのポートを使っているか」を突き止める。
  • 不要ポートの棚卸し: 開けっ放しの不要サービスを見つけてセキュリティを高める。
  • 外形監視: nmap で外部視点の開放状況を確認し、ファイアウォール設定を検証する。

ツールの比較

ツール視点特徴代表コマンド
ssホスト内部高速・現行標準・フィルタ豊富ss -tlnp
netstatホスト内部旧式・互換性高いが要インストールnetstat -tlnp
lsofホスト内部プロセス↔ソケットの逆引きに強いlsof -i :80
netstat -anoホスト内部 (Windows)PID 付き、tasklist と併用netstat -ano
nmap外部 (ネットワーク越し)開放状況・サービス推定 (許可対象のみ)nmap -p- host

注意点

  • プロセス表示には権限が必要: 他ユーザのプロセス名/PID を見るには sudo が要る。付けないと PID 欄が空になる。
  • -n を付けないと遅い: 名前解決で待たされることがあるため、調査時はほぼ常に -n を付ける。
  • TCP と UDP を両方見る: UDP サービス (DNS など) を見落とさないよう -u も付ける。
  • listen のバインドアドレス: 0.0.0.0:80 は全インターフェース、127.0.0.1:80 はループバックのみ。外部から繋がらない原因はここが多い。
  • 外形確認 (nmap) の権限: 自分の管理外ホストへのスキャンは不正アクセスになりうる。許可された対象に限る。

関連リンク

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. ウェルノウンポート一覧
  2. ポートフォワーディング
  3. ポートの確認方法
  4. nmapによるポートスキャン

最近更新/作成されたページ