Linuxのnetstat(ネットワーク統計)ユーティリティは、ネットワーク接続に関連する情報を提供します。さまざまなnetstatコマンドを使用して、アクティブなネットワーク接続、インターフェイスデータ、ルーティングテーブルなどを表示できます。これらは、ネットワーク管理者およびinfosecの専門家にとって不可欠な情報です。そのため、このガイドでは、有用なnetstatの例を幅広く用意しています。このガイドを完了すると、Linuxマシンのすべてのネットワーク関連情報を調べることができるようになります。また、より実践的な体験を得るために、読者が自分のマシンでこれらの例を試すことをお勧めします。
ネットワーク管理者向けのNetstatコマンドの例
netstatが提供する情報により、ネットワーク接続の問題を簡単に見つけることができます。これが、netstatが多くのシステム管理者のネットワーク接続のトラブルシューティングに役立つユーティリティである理由です。読み続けて、netstatコマンドを最適に使用する方法を見つけてください。
1。すべてのアクティブなソケットを表示する
ソケットは、ネットワーク要求を送受信するときにエンドポイントとして機能する構造です。引数なしで使用すると、netstatはマシンで開いているすべてのソケットのリストを表示します。
$ netstat
デフォルトでは、このコマンドはすべてのネットワークファミリのアクティブなソケットを表示します。お気づきかもしれませんが、「UnixDomainSockets」というラベルの下に多くの追加情報が出力されます。 。これらは、マシンで現在実行されているプロセスのデータ通信エンドポイントです。
2。すべてのリスニングソケットと非リスニングソケットを表示する
-aを使用できます すべてのリスニングソケットと非リスニングソケットのリストを出力するnetstatのオプション。次のコマンドを実行し、出力をチェックして、このコマンドがどのように機能するかを確認します。
$ netstat -a $ netstat --all---
–すべて オプションは-aと同じように機能します 。出力には、アクティブと非アクティブの両方のすべてのソケットが表示されます。行はソケットを表し、列はそれらの値を示します。ユーザーは、ソケットプロトコル、送受信されたデータ、アドレス、および対応する状態を表示できます。
3。 TCP接続を表示する
TCPまたは伝送制御プロトコルは、最も使用されているインターネットプロトコルです。次のnetstatコマンドを使用して、アクティブなTCP接続のみを表示できます。
$ netstat -t $ netstat --tcp
長い形式の–tcpを使用することもできます -tの代わりに 。以下のコマンドを使用して、すべてのリスニングおよび確立されたTCPネットワーク接続のリストを表示します。
$ netstat -at $ netstat -all --tcp
4。 UDP接続を表示する
UDPまたはユーザーデータグラムプロトコルは、当社のシステムで使用されるもう1つの主要なネットワークプロトコルです。 netstatユーティリティを使用して、UDP接続用に確立されたリッスンしているソケットのリストを表示できます。
$ netstat -u $ netstat --udp
この例では、確立されたすべてのUDP接続を出力します。確立された接続とリスニング接続をすべて表示する場合は、代わりに以下のコマンドを使用してください。
$ netstat -au $ netstat --all --udp
5。すべてのリスニングTCP接続を表示する
-l </ strong>を使用して、リッスンしているすべてのTCP接続のリストを表示できます。 および-t netstatプログラムのフラグ。以下のコマンドをチェックして、それがどのように行われるかを確認してください。
$ netstat -lt
着信ネットワーク要求をアクティブにリッスンしているすべてのTCP接続が表示されます。出力には、TCPプロトコルとTCP6プロトコルの両方に関する情報が含まれている必要があります。 Linuxシェルスクリプトでこのコマンドを使用する場合は、長い形式の構文を使用することもできます。
$ netstat --listen --tcp
6。すべてのリスニングUDP接続を表示する
ユーザーは、リスニングUDP接続を表示するために、上記のコマンドと同じアプローチをとることができます。お気に入りのLinuxターミナルエミュレータを開き、以下のコマンドを実行して実行します。
$ netstat -lu
前のコマンドと同様に、UDPおよびUDP6プロトコルの接続が表示されます。次の例は、長い形式を示しています。
$ netstat --listen --udp
7。リスニングしているすべてのUDP-Lite接続を表示する
UDP-Liteは、UDPプロトコルに基づくコネクションレス型プロトコルです。これにより、システムは潜在的に損傷したネットワークパケットを受信できます。次の簡単なコマンドを使用して、このプロトコルのリスニング接続を表示できます。
$ netstat -lU
-U netstatのオプションを使用すると、管理者はudpliteプロトコルを指定できます。 –udpliteを使用することもできます このオプションの長い形式として。
$ netstat --udplite
8。リスニングUnix接続を表示する
Linuxシステムがプロセス間通信(IPC)にUnixドメインソケットを使用する方法については、すでに説明しました。次のnetstatコマンドを使用して、マシンでリッスンしているすべてのUnix接続のリストを印刷できます。
$ netstat -lx
-x オプションは、Unixドメインソケットを指定します。 –unixの省略形を使用できます -xの代わりに 。これは、シェルスクリプトを文書化するのに役立ちます。
$ netstat --unix
9。プロトコル統計の表示
netstatユーティリティは、プロトコル統計の優れたサポートを提供します。ユーザーは、接続数、パケット数、不良セグメントなど、統計データからさまざまな情報を表示できます。次のコマンドの結果を確認して、これがどのように機能するかを確認してください。
$ netstat -s $ netstat --statistics
デフォルトでは、このコマンドはTCP、UDP、ICMP、およびIPプロトコルに関する情報を表示します。ネットワーク管理者は、この出力を使用して、ネットワーク接続の潜在的な問題を特定できます。
10。 TCPプロトコル統計を表示する
ユーザーは、単一のプロトコルのみの接続統計を表示することもできます。次の例は、TCPプロトコルのみの統計データを表示します。
$ netstat -st
-sを簡単に組み合わせることができます プロトコルセレクターを備えたオプションで、それに関する統計データを見つけます。次の例では、同じ出力を出力しますが、省略された構文を使用しています。
$ netstat --statistics --tcp
11。 UDPプロトコル統計を表示する
TCP統計を表示したのと同じ方法で、UDPプロトコルの統計データを表示できます。 -tを置き換えます または– -tcp -uのいずれかを使用したオプション または–udp 。次の2つの例をチェックして、これがどのように機能するかを確認してください。
$ netstat -su $ netstat --statistics --udp
これらのコマンドからudplite統計も見つかることに注意してください。ただし、 -Uを使用してudpliteを指定した場合 または–udplite オプションの場合、結果の出力にUDPデータはありません。
12。プログラム名を表示する
netstatユーティリティを使用して、ネットワーク接続を開始したプログラムを表示できます。これは、ネットワークの問題をトラブルシューティングするときに非常に役立ちます。以下のコマンドをチェックして、どのように機能するかを確認してください。
$ netstat -pt
出力には、確立されたTCP接続とそれらの接続を担当するプログラムが含まれている必要があります。 –programの省略形を使用することもできます -pの代わりに 、以下の例に示すように。
$ netstat --program --tcp
13。連続モードでネットワーク情報を表示する
-c または–継続的 netstatのオプションを使用すると、指定した情報を継続的に表示できます。以下のコマンドをチェックして、これがどのように機能するかを確認してください。
$ netstat -tc $ netstat --tcp --continuous
デフォルトの更新間隔は1秒です。ただし、以下の例に示すように、ユーザーは追加の引数を指定することでオーバーライドできます。
$ netstat -tc 5 $ netstat --tcp --continuous 3
多くのLinuxターミナルコマンドとは異なり、間隔セレクターの前には、省略された構文の等号はありません。
14。ルーティングテーブルを表示する
ネットワークユーティリティを使用して、Linuxカーネルによって定義されたルーティングテーブルを表示できます。出力は、LinuxIPコマンドによって提供されるものと同様です。
$ netstat -r
このコマンドの出力には、宛先アドレス、ゲートウェイ、サブネットマスク、ネットワークインターフェイス名などの情報が表示されます。省略形の構文–routeを使用できます このコマンドのシェルスクリプトでの使用を文書化する場合。
$ netstat --route
15。インターフェイス統計の表示
Netstatを使用して、Linuxシステムのインターフェース統計を出力できます。次のコマンドは、使用可能なネットワークインターフェイスを出力し、送受信されたパケット、エラーレート、およびMTUに関する情報を提供します。
$ netstat -i $ netstat --interfaces
いずれかのオプションを使用して、ネットワークインターフェース情報を表示できます。
16。インターフェイス統計をリアルタイムで表示する
インターフェースの統計情報をリアルタイムで表示するには、 -cを組み合わせます または–継続的 インターフェイスオプション付きのオプション。次の例では、3秒ごとにネットワークインターフェイスの統計を更新します。
$ netstat -ic 3 $ netstat --interfaces --continuous 3
送信済み(TX)フィールドと受信済み(RX)フィールドの変更に注意してください。時間間隔をニーズに合った数値に置き換えます。間隔は分単位ではなく秒単位であることに注意してください。
17。インターフェイスのカーネルテーブルを表示する
次のnetstatコマンドは、Linuxカーネルによって定義されたインターフェーステーブルを表示します。このコマンドは、Linuxのifconfigコマンドによって提供される出力に似ています。
$ netstat -ie
-e または–拡張 オプションは、netstatにこのインターフェーステーブルを出力させます。次の例は、省略された構文を使用した同じコマンドを示しています。
$ netstat --interfaces --extend
18。 IP情報を表示する
netstatユーティリティを使用すると、IPv4/IPv6グループのメンバーシップを非常に簡単に表示できます。次の簡単な例を確認して、これがどのように機能するかを確認してください。
$ netstat -g $ netstat --groups
つまり、 -g または–グループ netstatのオプションは、マルチキャストグループメンバーシップを表示できます。
19。リスニングプログラムを表示する
netstatプログラムを使用して、着信ネットワーク要求をアクティブにリッスンしているプログラムを表示できます。この出力から特定のネットワークアクティビティを担当するプログラムを特定できるため、これは非常に便利です。
$ netstat -ap | grep "http" $ netstat --all --program | grep "http"
すべてのリスニングプログラムを印刷し、grepを使用して必要なリストを除外するだけです。 Linux grepコマンドに関する以前のガイドをチェックして、GREPがパイプデータをフィルタリングする方法を確認してください。
20。 RAWネットワーク統計を表示する
次のnetstatの例は、生のネットワーク統計を表示するためにそれを使用する方法を示しています。コマンドをコピーしてターミナルエミュレータで実行し、パーソナルマシンの出力を表示します。
$ netstat -sw $ netstat --statistics --raw
出力には、IP、ICMP、udpliteなどの生のネットワーク接続の統計データが含まれている必要があります。
21。 IPv4ルートの情報を表示する
netstatのrouteサブサブコマンドを使用して、カーネルによって定義されたIPv4ルートを表示できます。これを行う方法については、次の例を確認してください。
$ netstat -r -4 $ netstat --route --inet
したがって、 –inet このオプションの省略形です。短い形式を使用している場合は、オプションを組み合わせることもできます。
$ netstat -r4
22。 IPv6ルートの情報を表示する
上記のコマンドと同様に、IPv6ルーティング情報を出力できます。 -6を使用する または–inet6 オプションと–route または-r 国旗。次の例は、読者のためにこれを示しています。
$ netstat -r -6 $ netstat --route --inet6
出力フィールドはIPv4とIPv6で異なることに注意してください。したがって、必ず列ラベルを読んでください。次の例は、IPv6アドレスファミリの短縮形を組み合わせたものです。
$ netstat -r6
23。マスカレード接続を表示する
マスカレード接続を使用すると、IPを指定せずに、1つ以上のシステムがLinuxサーバーによって割り当てられたアドレスを使用してインターネットに接続できます。 Linuxで次のnetstatコマンドを使用すると、マスカレードネットワーク接続とその統計のリストを表示できます。
$ netstat -M $ netstat --masquerade
上記のコマンドのいずれかを実行すると、netstatはLinuxファイルシステムの / proc / net / ip_masquerade を読み取ることにより、必要な情報を取得します。 ファイル。
24。ネットワークタイマーを表示する
-o を使用して、ネットワーク接続にタイマーがあるかどうかを判断できます。 netstatのオプション。これは、発信ネットワークリクエストのトラブルシューティングを行うときに役立ちます。次のコマンドをチェックして、これがどのように機能するかを確認してください。
$ netstat -t -o | more $ netstat --tcp --timers | more
出力には、タイマーが存在するかどうか、および存在する場合はそのタイプが含まれている必要があります。 2つのスラッシュは、3タイマーフィールドを区切ります。最初のフィールドはカウントダウンタイマーで、2番目のフィールドは再試行回数を追跡するためのものです。最後に、最後のフィールドは、TCPスタックによって送信されたキープアライブプローブの数を追跡します。
25。 FQDNの代わりにIPアドレスを表示する
デフォルトでは、netstatはネットワーク統計を出力するときにDNSを解決しようとします。ただし、 FQDN(完全修飾ドメイン名)の代わりに、簡単に無効にして、関連付けられたIPアドレスを出力できます。 。これは、ネットワークの監視とトラブルシューティングに役立ちます。
$ netstat --numeric-hosts --tcp --all
–numeric-hosts オプションは、DNS解決をスキップし、代わりに数値のIPアドレスを出力するようにnetstatに通知します。ドメインネームシステムの詳細については、UbuntuDNSサーバーに関するガイドをご覧ください。
26。数値のポート番号を表示する
–numeric-ports を使用すると、netstat出力からシンボリックポート情報を省略できます。 オプション。このオプションにより、netstatは代わりに数値のポート番号を出力します。以下の例をチェックして、どのように機能するかを確認してください。
$ netstat --numeric-ports --tcp --all
出力を前の例と比較して、違いを見つけます。この出力には正確なポート番号の表現が含まれていることがわかります。これは、出力のホスト部分に続く番号で、前にコロンが付きます。
27。ネットワーク接続のユーザーIDを表示する
次の例は、ネットワーク接続を所有するユーザーのユーザーIDを表示する方法を示しています。これは、netstatコマンドの2つのオプションを使用して実行できます。
$ netstat --numeric-users --tcp -e
-e オプションは、ユーザーの名前と –numeric-usersを出力します それを識別番号に変換します。これは、Linuxシステムによって各ユーザーに設定されたUID(ユーザーID)です。
28。ホスト、ポート、およびユーザーの同等の数値を表示する
1つのオプションを使用して、上記の3つのnetstatコマンドを組み合わせることができます。これにより、netstatは、同等の数値を使用して、すべてのホスト、ポート、およびユーザー情報を出力します。次の例をチェックして、意味を確認してください。
$ netstat -nt $ netstat --numeric --tcp
–数値のいずれかを使用できます または-n これを行うため。出力を見ると、IPアドレス、ポート番号、およびUID情報が数値形式で表示されているはずです。
29。追加情報を表示する
-e または–拡張 netstatユーティリティのオプションを使用すると、ユーザーはコマンドの追加情報を表示できます。これらは、隠れたバグの発見につながる可能性があります。以下の例をチェックして、どのように機能するかを確認してください。
$ netstat -tpe
このコマンドは、 -t、を組み合わせたものです -p 、および -e 確立されたTCP接続、それらを所有するプログラム、およびいくつかの追加情報を印刷するためのオプション。この追加情報には、ユーザー情報とiノード情報が含まれます。 -eを使用します 詳細情報を取得するには、オプションを2回選択してください。
$ netstat --tcp --program --extend --extend
30。カーネルルーティングキャッシュを表示する
ルーティングキャッシュには、最近使用されたルーティングエントリが含まれています。これはキャッシュされたデータであるため、情報に非常にすばやくアクセスできます。次のコマンドを使用して、netstatを使用してルートキャッシュを出力できます。
$ netstat -rC
デフォルトでは、netstatはFTBからルート情報を取得します。ただし、システムは通常、ルーティングテーブルを検索する前にキャッシュされたデータを使用するため、そこに格納されているコンテンツを知っておくと便利です。このパラメータの長い形式はありません。
31。複数のプロトコルの情報を表示する
Netstatを使用すると、ユーザーは -Aを使用して一連のプロトコルのネットワーク情報を印刷できます。 または–プロトコル オプション。次の例は、これらのオプションの使用法を示しています。
$ netstat -A inet,inet6 $ netstat --protocol=inet,inet6
–プロトコルの使用法の違いに注意してください および-A 。これらのオプションでサポートされているアドレスファミリには、inet、inet6、unix、ddp、bluetoothなどがあります。
32。 SCTP情報を表示する
SCTPまたはStreamControlTransmission Protocolは、データ転送の新しい信頼性の高い方法です。 TCPプロトコルとUDPプロトコルの両方の利点を提供します。次の簡単なコマンドを使用して、SCTP接続をリッスンしているすべてのユーザーを確認できます。
$ netstat -lS $ netstat --listen --sctp
-sは使用しないでください このタスクのために。代わりにネットワーク統計が表示されます。以下にリストされているnetstatコマンドの例のいずれかを使用して、SCTPの詳細な使用法を確認できます。
$ netstat -sS $ netstat --statistics --sctp
33。 Bluetooth情報を表示する
ワイヤレスデータ交換標準Bluetoothは、いくつかの通信プロトコルを利用します。 論理リンク制御および適応プロトコル(L2CAP) および無線周波数通信(RFCOMM) ホストレベルで使用される主要なプロトコルの2つです。次のコマンドを使用して、L2CAPに関する情報を表示できます。
$ netstat -2 $ netstat --l2cap
次のコマンドを使用して、RFCOMMプロトコルに関する情報を表示します。
$ netstat -f $ netstat --rfcomm
netstatの多くの実装では、すぐに使用できるBluetoothサポートが提供されていないことに注意してください。プロンプトが表示された場合「netstat:機能「AFBLUETOOTH」はサポートされていません。 「その後、ソースからnet-toolsユーティリティを再コンパイルする必要があります。
34。ホスト、ポート、およびユーザーの記号値を表示する
-N または–シンボリック netstatコマンドのオプションを使用すると、ホスト、ポート、およびユーザーに関するすべての情報を記号形式で出力できます。次の例を確認して、その仕組みを確認してください。
$ netstat -atN $ netstat --all --tcp --symbolic
これらのコマンドの出力には、すべてのTCPネットワークのリストが含まれ、ホスト、ポート、およびユーザーは、同等の記号を使用して指定されます。数値ではなく詳細な出力が必要な管理者にとって便利です。
35。 IPアドレスの切り捨てを無効にする
-wを使用できます または–全体 IPアドレスの切り捨てを無効にするnetstatユーティリティのオプション。これ自体はあまり有用ではありませんが、下位互換性の手段を提供します。
$ netstat -atw $ netstat --all --tcp --wide
Linuxシェルスクリプトを作成している場合は、このオプションを使用して、古いマシンのIPアドレスが切り捨てられないようにします。
36。特定のポートでリッスンしているサービスを表示する
ホワイトハットハッカーまたはinfosecの専門家の場合は、特定のポートでリッスンしているものを確認することをお勧めします。これは、Linuxでnetstatとgrepコマンドを組み合わせることで非常に簡単に実行できます。次のnetstatの例を確認して、その方法を確認してください。
$ netstat -ltnp | grep ':22'
このコマンドは、TCPポート22をリッスンしているすべてのプログラムを出力します。これはssh接続のポート番号です。この番号を、grep部分で関心のあるポート番号に置き換えます。
37。サポートされていないアドレスファミリを表示する
すでに説明したように、netstatはさまざまなアドレスファミリで機能します。ただし、それらのすべてがすべてのnetstat実装でサポートされているわけではありません。たとえば、多くのnetstatバージョンは、そのままではBluetoothアドレスファミリをサポートしていません。 netstatユーティリティでサポートされていないアドレスファミリを簡単に確認できます。
$ netstat --verbose | grep "no support for"
このコマンドは、マシンでサポートされていないすべてのアドレスファミリを出力します。それらのいずれかを使用する場合は、net-toolsのソースをフェッチし、完全な構成サポートを使用してコンパイルする必要があります。
38。バージョン情報を表示する
-V を使用して、netstatプログラムのバージョン情報を印刷できます。 または–バージョン オプション。これにより、バージョンデータと一緒にいくつかの追加情報が出力されます。
$ netstat -V $ netstat --version
上記のコマンドのいずれかを実行すると、サポートされているアドレスファミリとサポートされていないアドレスファミリのリストが表示されます。このコマンドで表示されるバージョンデータは、マシンにインストールされているnet-toolsのバージョンを表していることに注意してください。
39。ヘルプページを表示する
netstatのヘルプページには、利用可能なすべてのオプションとその使用法の要約情報が含まれています。オプションを検索する便利な方法を提供します。次のnetstatコマンドのいずれかを使用して、このページを印刷できます。
$ netstat -h $ netstat --help
ネットワーク管理者の場合、このセクションは非常に便利です。
40。マニュアルページを表示する
Linuxターミナルコマンドのマニュアルページには、コマンドの使用法と使用可能なオプションに関する詳細情報が含まれています。特定のプログラムについて詳しく知りたい場合は、このページを参照してください。 netstatのマニュアルページは、以下のコマンドを使用して呼び出すことができます。
$ man netstat
netstatとその出力形式に関する詳細な情報が必要な場合は、このページを確認してください。
終わりの考え
netstatコマンドは、システム管理者が最も広く使用しているターミナルコマンドの1つです。しかし、最近では時代遅れになり、より高度なプログラムが引き継ぐようになりました。一般に、netstatの代わりはssプログラムです。 IPユーティリティは、 netstat -rの代わりに機能します netstat -i、 およびnetstat-g。 それにもかかわらず、netstatは、ほとんどのLinuxディストリビューションで広く使用されており、可用性があるため、依然として非常に関連性があります。読者には、新しい代替手段を使用することを強くお勧めします。この重要なnetstatコマンドの範囲は、netstatを使用する必要があるユーザーの参照ポイントとして役立ちます。