ネットワークのトラブルシューティングや、サーバーの通信状況の確認において欠かせないのが「ネットワーク接続の状態を表示するコマンド」です。
Linuxにはさまざまなネットワーク関連ツールがありますが、なかでも古くから使われてきたのが netstat
コマンドです。
このコマンドは、TCPやUDPの接続状況、リスニングポート、ルーティングテーブル、インターフェースの統計情報などを一括して確認できる便利なツールです。
この記事では、netstat
コマンドの基本的な使い方から、具体的な活用例までをわかりやすく解説していきます。ネットワーク管理の第一歩として、ぜひ覚えておきたいコマンドです。
netstat
は「network statistics(ネットワーク統計)」の略で、ネットワークに関するさまざまな情報を表示するコマンドです。
具体的には、次のような情報を確認できます:
古くから利用されてきたコマンドですが、現在ではss
コマンドやip
コマンドに置き換えられつつあります。ただし、netstat
は今でも多くのシステムで利用可能で、特にネットワークの概要を一目で把握したいときには有効です。
まずは基本的な使い方を紹介します。ターミナルで以下のように入力するだけで、すべての接続情報が表示されます。
netstat
ただし、何もオプションをつけないと膨大な情報が表示されるため、以下のように目的に応じてオプションを使い分けることが重要です。
以下に、よく使われるオプションとその意味を紹介します。
オプション | 内容 |
---|---|
-a | すべての接続とリスニングポートを表示 |
-t | TCP接続のみを表示 |
-u | UDP接続のみを表示 |
-n | ホスト名やサービス名の代わりに数値で表示 |
-l | リスニング状態のソケットのみ表示 |
-p | 各接続に関連付けられたプロセスIDとプログラム名を表示 |
-r | ルーティングテーブルを表示 |
-i | ネットワークインターフェースの統計情報を表示 |
例えば、TCPでリスニングしているポートを確認したい場合は、以下のように入力します。
netstat -tln
プロセス名も含めて確認したい場合は -p
を追加します。
netstat -tlnp
サーバーにアクセスできないときや、不審な接続があるときに便利なのが -ap
オプションです。
sudo netstat -ap
このコマンドを使うことで、現在リスニング中のポートや、それに紐づいているプロセスが一目で確認できます。
実行結果の例:
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 784/sshd
tcp 0 0 192.168.1.10:80 192.168.1.5:54321 ESTABLISHED 1356/nginx
上記のように、ポート22でsshd
が待ち受け、ポート80でnginx
が外部と通信していることがわかります。
ネットワークの経路情報を知りたい場合は -r
オプションを使います。
netstat -r
このコマンドは、route
コマンドとほぼ同じ結果を返します。
実行例:
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
デフォルトゲートウェイや、各サブネットへのルートがどのインターフェース経由で設定されているかがわかります。
インターフェース単位で、受信・送信パケットの数やエラー数などの統計情報を見るには、以下のコマンドを使います。
netstat -i
この出力は、ネットワークの健全性をチェックするのに役立ちます。
netstat -tlnp | grep :80
nginxやApacheなどのHTTPサーバーが動作しているか、確認できます。
netstat -tunap
外部への不審な接続がないかをチェックするのに便利です。特にリモートアドレスが不審なIPの場合、すぐに調査対象になります。
netstat -i
トラフィックが極端に多い、あるいはエラーが多いインターフェースがあれば、ハードウェア障害や設定ミスの可能性もあります。
最近のLinuxディストリビューションでは、netstat
コマンドは非推奨(deprecated)とされ、ss
コマンドや ip
コマンドへの移行が進んでいます。
たとえば、ss
コマンドは netstat
よりも高速で詳細な情報を表示できます。
以下は同等のコマンド例です。
ss -tln
とはいえ、netstat
は直感的で学習コストも低いため、今でも多くの現場で重宝されています。特に古いシステムでは netstat
しか入っていないこともあるため、知っておいて損はありません。
netstat
コマンドは、Linuxでネットワークの状態を調査するうえで非常に強力なツールです。
TCP/UDP接続の確認、ポートの監視、ルーティングテーブルの把握、インターフェースの統計取得など、さまざまな用途に活用できます。
近年ではss
やip
などの新しいコマンドが主流になりつつありますが、netstat
は今でも多くのシステム管理者にとって心強い味方です。