【Linux】netstatで特定ポートの使用状況を確認する

【Linux】netstatで特定ポートの使用状況を確認する

記事の文字数:1866

netstatコマンドを利用すると特定ポート番号の使用状況(LISTEN,ESTABLISHEDなど)を確認することができます。すべてのソケット情報を取得する場合は-aを指定し、TCPで接続待ちしているポートは-nltオプションで確認します。


スポンサーリンク

netstatは、ネットワークの接続状況、ルーティングテーブル、インターフェースの統計情報などを表示するコマンドです。システムのネットワークの状態を把握する際に役立ちます。
Linuxのnetstatコマンドを利用すると、特定ポートの使用状況などネットワークの状況を確認することができます。

netstatはnet-toolsというパッケージに含まれており、昨今のLinuxでは非推奨で、インストールされていない場合もあります。 netstatがインストールされていない場合はこちらのリンクを参照してインストールください。

すべてのソケットを表示

以下コマンドですべてのソケット情報を取得します。

実行コマンド
netstat -a

TCP情報を表示する場合は以下コマンドを実行します。

実行コマンド
netstat -ant

接続待ちしているポートを確認

LISTENを確認

以下コマンドでTCP接続待ち(LISTEN)しているポートを取得します。

実行コマンド
netstat -nlt

ポートを絞る

ポートを絞る場合は、以下のようにgrepで指定します。

実行コマンド
netstat -nlt | grep -e ":443" -e "State"
実行結果例
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN

通信が確立しているポートを確認

ESTABLISHEDを確認

以下コマンドでTCP通信が確立しているソケットを取得します。

実行コマンド
netstat -ant | grep -e "ESTABLISHED" -e "State"
実行結果例
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 xx.xxx.x.x:xxxxx xxx.xxx.xxx.xxx:xx ESTABLISHED
tcp 0 0 xx.xxx.x.x:xxxxx xxx.xxx.xxx.xxx:xx ESTABLISHED
tcp 0 284 xx.xxx.x.x:xxxx xxx.xxx.xx.xx:xxxx ESTABLISHED

各出力項目の説明

各出力項目の意味は以下の通りとなります。

項目説明
Protoプロトコルの種類(TCP/UDPなど)
Recv-Q受信バッファに残っている受信データのバイト数
Send-Q送信バッファに残っている送信データのバイト数
Local AddressローカルホストのIPアドレス・ポート番号
Foreign Address接続先ホストのIPアドレス・ポート番号
State現在の接続ステータス(LISTEN、ESTABLISH、TIME_WAIT、CLOSEなど)

オプションの意味

各オプションの意味は以下の通りとなります。

オプション意味
-nサービス名に変換せずに表示(ex :httpと表示せず:80と表示)
-tTCP情報を表示
-uUDP情報を表示
-a全てのソケットを表示
-lListenポートのみを表示
-pソケットを使用しているプロセスを表示
-rルーティングテーブルを表示
-iネットワークインターフェースの情報を表示

netstatssの違い

netstatssの主な違いは、パフォーマンス、機能、推奨度の3点にあります。

1. パフォーマンス

  • netstatprocファイルシステム (/proc/net/ 以下) を参照して情報を取得するため、表示に時間がかかることがあります。
  • ssnetlinkソケット を使用してカーネルから直接情報を取得するため、より高速に動作します。

2. 機能

項目netstatss
TCP/UDP接続の表示
ルーティングテーブル表示
プロセスIDの表示
高度なフィルタリング
  • ss は、接続情報をより詳細にフィルタリングでき、特定のポートや状態(LISTENなど)を指定して検索できます。
  • netstat にはルーティング情報 (netstat -r) を表示する機能がありますが、ss にはありません。(代わりに ip route を使用して確認できます。)

3. 推奨度

  • netstat非推奨となっており、ss コマンドが推奨されています。
  • 多くの最新ディストリビューションでは、net-tools パッケージ (netstatを含む) がデフォルトでインストールされていません。

4. 使用方法の比較

netstat の例

Terminal window
netstat -tulnp # 開いているTCP/UDPポートと対応プロセスを表示
netstat -ant | grep -e "ESTABLISHED" -e "State"

ss の例

Terminal window
ss -tulnp # `netstat -tulnp` と同じ情報を高速に取得
ss -t state established # 確立されたTCP接続のみ表示

まとめ

netstatコマンドは、Linuxシステムのネットワーク状況を確認するのに役立つツールです。現在ではssコマンドが主流になりつつありますが、netstatの知識も依然として重要です。適切なオプションを活用し、ネットワークの監視やトラブルシューティングに役立ててください。

また、高速で詳細な情報を取得したいなら ss を使うべきであり、netstat はレガシーだが、古い環境ではまだ使われることを理解しておきましょう。

ssコマンドの使い方はこちらのリンクを参照してください。


以上で本記事の解説を終わります。
よいITライフを!
スポンサーリンク
Scroll to Top