【Linuxコマンド】netstat コマンドの使い方とよく使うオプション

概要

 
netstat コマンドは、サーバ上のネットワーク接続状況を確認するためのコマンドです。
現在確立している TCP/UDP 接続、待ち受け中のポート、ルーティングテーブル、ネットワークインターフェースの統計情報などを表示できます。
 

近年の Linux では ss コマンドが推奨されることも多いですが、
既存のドキュメントや運用手順では netstat が登場することもまだ多く、読み方・使い方を知っておくとトラブルシュートがしやすくなります。
 

フォーマット

 

netstat [オプション]

 

オプションの組み合わせによって、表示内容を細かく絞り込むことができます。
例えば、-t で TCP、-u で UDP、-l で LISTEN 中のソケット、-p でプロセス情報を表示します。

多くのディストリビューションでは net-tools パッケージに含まれており、
インストールされていない場合は別途導入が必要です。

 

よく使うコマンド例

 

・現在のネットワーク接続(TCP/UDP)を一覧表示する

netstat -an

-a で全ソケット、-n で名前解決を行わず数値(IP アドレス・ポート番号)のまま表示します。
TCP/UDP ともに、現在の接続状態や LISTEN 中のポートをざっと確認したいときの基本形です。

 

・LISTEN している TCP/UDP ポートを確認する

netstat -tuln

-t で TCP、-u で UDP、-l で LISTEN 中のソケットのみ、-n で数値表示にしています。
「このサーバはどのポートで待ち受けているのか?」を確認したいときに、まず叩くコマンドのひとつです。

 

・LISTEN しているポートとプロセスを紐付けて確認する

netstat -tulnp

-p を付けると、そのポートを利用しているプロセス ID / プログラム名も表示されます。
root 権限で実行しないと、一部のプロセス情報が表示されないことがあるので注意してください。

 

・特定ポート(例: 80番)を LISTEN しているプロセスを絞り込む

netstat -tulnp | grep ':80 '

netstat の出力を grep で絞り込むことで、特定ポートに絞って確認できます。
HTTP(80番)や HTTPS(443番)、任意のアプリケーションポートがどのプロセスに紐付いているか調べたいときに便利です。

 

・ルーティングテーブルを確認する

netstat -rn

-r はルーティングテーブルを表示するオプションです。
-n を付けることで、ホスト名ではなく IP アドレス・ネットワークアドレスのまま表示します。
default や各ネットワークへの経路、使用しているインターフェースなどを確認できます。

 

・ネットワークインターフェースの統計情報を表示する

netstat -i

-i は、インターフェースごとのパケット数・エラー数などの統計情報を表示します。
送信エラーやドロップが発生していないか、簡易的に確認したいときに利用します。

 

・プロトコル別の統計情報を表示する

netstat -s

-s は、TCP や UDP、ICMP などプロトコルごとの統計情報を表示します。
接続エラーや再送などの状況をざっくり把握したいときに使います。

 

・接続状態を一定間隔で監視する

netstat -antp | grep ESTABLISHED
watch -n 2 "netstat -antp | grep ESTABLISHED"

-a で全ソケット、-n で数値表示、-t で TCP、-p でプロセス情報を表示し、
ESTABLISHED 状態のセッションだけを絞り込む例です。
watch コマンドと組み合わせると、2 秒ごとに自動更新される簡易モニタとしても使えます。

 

・IPv4 のみ/IPv6 のみに絞って表示する

netstat -tuln4
netstat -tuln6

-4 を付けると IPv4 のみ、-6 を付けると IPv6 のみが対象になります。
IPv6 を使っている環境で、どのアドレスで待ち受けているのか確認したいときに役立ちます。

 




実務でのよくある使いどころ

 

・「このポート、本当に開いてる?」を確認する
ファイアウォール設定変更やサービス再起動後、「指定ポートで待ち受けできているか」を確認するために、
netstat -tulnp | grep ポート番号 のような使い方をよくします。
 

・どのプロセスがポートを使っているか調べる
「ポートがすでに使用中でサービスが起動しない」といったトラブル時に、
netstat -tulnp でプロセス ID とプログラム名を特定し、原因プロセスを絞り込むことができます。
 

・ルーティングの確認とネットワーク経路の把握
ネットワーク周りのトラブルシュートでは、netstat -rn でルート情報を確認し、
default ゲートウェイや各ネットワークへの経路が意図したとおりになっているかをチェックします。
 

・インターフェースのエラー状況をざっくり見る
netstat -i で、インターフェース単位のパケット数やエラー数を確認できます。
より詳細な情報が必要な場合は ip -s link なども合わせて確認します。
 

・古い手順書・ツールの読み替え
既存の運用ドキュメントやツールが netstat ベースで書かれているケースでは、
実際の動きを理解しつつ、必要に応じて ss コマンドへの置き換えを検討する際にも役立ちます。
 

netstat は現在では非推奨とされることもありますが、「何がどこに接続しているか」「どのポートで待ち受けているか」を一覧する感覚を身につけるには良い教材です。
本番環境で利用する際は、権限や情報量(プロセス名・IP アドレスなど)の取り扱いにも注意してください。

 

オプション(よく使うオプションのみ)

 

short optionlong optiondescription
-a--all全てのソケットを表示する(LISTEN 中だけでなく確立済みや待機中のものを含む)
-tTCP ソケットのみを対象に表示する
-uUDP ソケットのみを対象に表示する
-l--listeningLISTEN 状態のソケットのみを表示する(待ち受け中のポートの確認に利用)
-p--program各ソケットを使用しているプロセス ID とプログラム名を表示する(root 権限が必要な場合あり)
-n名前解決を行わず IP アドレスやポート番号を数値のまま表示する(表示が速くなり結果も読みやすい)
-rルーティングテーブルを表示する
-iネットワークインターフェースごとの統計情報を表示する
-sTCP や UDP などプロトコルごとの統計情報を表示する
-c指定した間隔で出力を繰り返す(デフォルトでは 1 秒ごとに更新し続ける)
-4IPv4 のソケットのみを対象に表示する
-6IPv6 のソケットのみを対象に表示する
-W幅の広いフォーマットでアドレスや情報を切り詰めずに表示する
-e拡張情報を含めて表示する(ユーザ名やキューサイズなどが追加されることがある)
-h--helpnetstat コマンドの使い方(ヘルプ)を表示して終了する
-V--versionnetstat コマンドのバージョン情報を表示して終了する
 

ここでは、Linux の net-tools パッケージに含まれる netstat で、一般的に利用されるオプションを TablePress の表としてまとめている想定です。
実際に使用できるオプションや挙動は、ディストリビューションや netstat の実装によって異なる場合があるため、
本番環境で使用する前に man netstat で最新の仕様を確認してください。

ブログランキングに参加しています。クリックして応援していただけると嬉しいです。

人気ブログランキング
ブログランキング・にほんブログ村へ
にほんブログ村