[Linux] netstatコマンドの使い方 – ネットワーク接続状況の確認
netstatコマンドは、Linuxでネットワーク接続状況を確認するためのツールです。
主に、現在の接続、ルーティングテーブル、インターフェースの統計情報、マスカレード接続などを表示します。
基本的な使い方として、netstat
を実行すると、すべての接続が表示されます。
-t
オプションでTCP接続、-u
でUDP接続、-l
でリッスン中のポート、-p
でプロセスIDを確認できます。
-n
オプションを使うと、ホスト名の解決をせずにIPアドレスを表示します。
- netstatコマンドの基本的な使い方
- 詳細なオプションの活用法
- ネットワーク接続の応用例
- 代替ツールとの比較
- トラブルシューティングの手法
netstatコマンドとは
netstat
コマンドは、LinuxやUnix系のオペレーティングシステムで使用されるネットワーク関連の情報を表示するためのコマンドです。
このコマンドを使用することで、現在のネットワーク接続状況、リッスン中のポート、ルーティングテーブル、インターフェースの統計情報などを確認することができます。
ネットワークのトラブルシューティングやセキュリティの監視に役立つため、システム管理者やネットワークエンジニアにとって非常に重要なツールです。
netstat
は、TCP/IPプロトコルスタックに関する情報を提供し、接続の状態やデータの送受信状況を把握するのに役立ちます。
これにより、ネットワークのパフォーマンスを最適化したり、不正な接続を検出したりすることが可能になります。
netstatコマンドの基本的な使い方
現在のネットワーク接続を確認する
netstat
コマンドを使用することで、現在のネットワーク接続状況を確認できます。
基本的なコマンドは以下の通りです。
netstat
このコマンドを実行すると、TCPおよびUDPの接続状況が表示され、各接続の状態やローカルアドレス、リモートアドレスなどの情報が得られます。
TCP接続を表示するオプション -t
TCP接続のみを表示したい場合は、-t
オプションを使用します。
以下のコマンドでTCP接続を確認できます。
netstat -t
このコマンドを実行すると、TCP接続のリストが表示され、各接続の状態(ESTABLISHED、LISTENINGなど)も確認できます。
UDP接続を表示するオプション -u
UDP接続を表示するには、-u
オプションを使用します。
コマンドは以下の通りです。
netstat -u
このコマンドを実行すると、現在のUDP接続の情報が表示されます。
UDPはコネクションレスプロトコルであるため、接続状態は表示されません。
リッスン中のポートを確認するオプション -l
リッスン中のポートを確認するには、-l
オプションを使用します。
以下のコマンドでリッスン中のポートを表示できます。
netstat -l
このコマンドを実行すると、現在リッスンしているポートのリストが表示され、どのサービスが待機しているかを確認できます。
プロセスIDを表示するオプション -p
接続に関連するプロセスID(PID)を表示するには、-p
オプションを使用します。
コマンドは以下の通りです。
netstat -p
このコマンドを実行すると、各接続に関連するプロセスのIDと名前が表示され、どのアプリケーションがネットワーク接続を使用しているかを特定できます。
IPアドレスを表示するオプション -n
IPアドレスを数値形式で表示するには、-n
オプションを使用します。
以下のコマンドで実行できます。
netstat -n
このコマンドを実行すると、ホスト名ではなくIPアドレスが表示され、接続先の情報をより迅速に確認できます。
netstatコマンドの詳細なオプション
接続状態を表示するオプション -a
-a
オプションを使用すると、すべての接続状態を表示できます。
リッスン中のポートと確立された接続の両方が表示されるため、ネットワークの全体像を把握するのに役立ちます。
コマンドは以下の通りです。
netstat -a
このコマンドを実行すると、TCPおよびUDPのすべての接続状態がリストアップされます。
ルーティングテーブルを表示するオプション -r
ルーティングテーブルを確認するには、-r
オプションを使用します。
このオプションを指定することで、ネットワークパケットがどのようにルーティングされるかを確認できます。
コマンドは以下の通りです。
netstat -r
このコマンドを実行すると、ルーティングテーブルの情報が表示され、各ネットワークのゲートウェイやインターフェースが確認できます。
インターフェースの統計情報を表示するオプション -i
ネットワークインターフェースの統計情報を表示するには、-i
オプションを使用します。
以下のコマンドで実行できます。
netstat -i
このコマンドを実行すると、各インターフェースの送受信パケット数やエラー数などの統計情報が表示され、ネットワークのパフォーマンスを評価するのに役立ちます。
マスカレード接続を表示するオプション -M
マスカレード接続を表示するには、-M
オプションを使用します。
このオプションは、IPマスカレードを使用している場合に、どの接続がマスカレードされているかを確認するのに役立ちます。
コマンドは以下の通りです。
netstat -M
このコマンドを実行すると、マスカレード接続の情報が表示され、ネットワークのセキュリティやトラフィックの管理に役立ちます。
統計情報を表示するオプション -s
ネットワークプロトコルの統計情報を表示するには、-s
オプションを使用します。
このオプションを指定することで、各プロトコルの送受信パケット数やエラー数などの詳細な統計が得られます。
コマンドは以下の通りです。
netstat -s
このコマンドを実行すると、TCP、UDP、ICMPなどの各プロトコルに関する統計情報が表示され、ネットワークの状態を把握するのに役立ちます。
netstatコマンドの応用例
特定のポート番号でフィルタリングする
特定のポート番号に関連する接続を確認するには、grep
コマンドと組み合わせて使用します。
例えば、ポート80(HTTP)に関連する接続を表示するには、以下のコマンドを実行します。
netstat -an | grep :80
このコマンドを実行すると、ポート80での接続状況が表示され、どのIPアドレスが接続しているかを確認できます。
特定のプロトコルでフィルタリングする
特定のプロトコル(TCPまたはUDP)でフィルタリングする場合も、grep
を使用します。
例えば、UDP接続のみを表示するには、以下のコマンドを実行します。
netstat -anu
このコマンドを実行すると、現在のUDP接続のリストが表示され、特定のプロトコルに関連する情報を簡単に確認できます。
リモートホストとの接続を確認する
特定のリモートホストとの接続を確認するには、grep
を使用してIPアドレスやホスト名でフィルタリングします。
例えば、リモートホストのIPアドレスが192.168.1.10
の場合、以下のコマンドを実行します。
netstat -an | grep 192.168.1.10
このコマンドを実行すると、指定したリモートホストとの接続状況が表示され、接続の状態を確認できます。
ネットワークトラブルシューティングに活用する
netstat
コマンドは、ネットワークトラブルシューティングに非常に役立ちます。
例えば、接続が確立されているか、リッスン中のポートが正しいかを確認することで、問題の特定が可能です。
以下のコマンドで、すべての接続状態を確認できます。
netstat -a
このコマンドを実行すると、すべての接続とその状態が表示され、問題の原因を特定する手助けになります。
スクリプトでnetstatを自動化する
netstat
コマンドをスクリプトに組み込むことで、定期的にネットワーク状況を監視することができます。
以下は、netstat
の出力をログファイルに保存する簡単なスクリプトの例です。
#!/bin/bash
# netstat_log.sh
date >> netstat.log
netstat -an >> netstat.log
echo "------------------------" >> netstat.log
このスクリプトを実行すると、現在のネットワーク接続状況がnetstat.log
ファイルに追記され、定期的な監視が可能になります。
スケジュール管理ツール(cronなど)を使用して、定期的に実行することもできます。
netstatコマンドの代替ツール
ssコマンドとの比較
ss
コマンドは、netstat
の代替として広く使用されているツールで、より高速かつ詳細な情報を提供します。
ss
は、ソケットの状態を表示するためのコマンドで、TCP、UDP、UNIXドメインソケットなどの情報を確認できます。
以下は、ss
コマンドの基本的な使用例です。
ss -tuln
このコマンドを実行すると、リッスン中のTCPおよびUDPソケットが表示されます。
ss
は、netstat
よりも少ないリソースで動作し、より多くのオプションを提供するため、パフォーマンスの観点からも優れています。
ipコマンドとの比較
ip
コマンドは、ネットワークインターフェースやルーティングテーブルの管理に特化したツールです。
netstat
が接続状況を表示するのに対し、ip
コマンドはネットワーク設定の変更や確認を行うために使用されます。
例えば、現在のルーティングテーブルを表示するには、以下のコマンドを実行します。
ip route show
ip
コマンドは、ネットワークの設定や管理を行うための強力なツールであり、netstat
の機能を補完する役割を果たします。
ifconfigコマンドとの比較
ifconfig
コマンドは、ネットワークインターフェースの設定や状態を確認するための古いツールです。
netstat
が接続状況を表示するのに対し、ifconfig
はインターフェースのIPアドレスやMACアドレス、送受信パケット数などの情報を提供します。
以下は、ifconfig
コマンドの使用例です。
ifconfig
このコマンドを実行すると、すべてのネットワークインターフェースの情報が表示されます。
ただし、ifconfig
は新しいLinuxディストリビューションでは非推奨とされており、ip
コマンドに置き換えられることが推奨されています。
netstat
とifconfig
は異なる目的で使用されるため、状況に応じて使い分けることが重要です。
よくある質問
まとめ
この記事では、netstat
コマンドの基本的な使い方や詳細なオプション、応用例、代替ツールについて詳しく解説しました。
これにより、ネットワーク接続状況の確認やトラブルシューティングに役立つ情報を得ることができるでしょう。
今後は、実際にコマンドを使ってネットワークの状態を確認し、必要に応じて他のツールと併用して、より効果的なネットワーク管理を行ってみてください。