- Dave McKay
@TheGurkha
- February17,2020,8:00am EDT
linuxのnetstat
コマンドは、ネットワーク接続、使用中のポート、およびそれらを使用しているプロセスに関する情報の宝庫を提供します。 それを使用する方法を学びなさい。
ポート、プロセス、およびプロトコル
ネットワークソケットは、接続するか、接続を待機することができます。, 接続には、Transport Control Protocol(TCP)やUser Datagram Protocol UDPなどのネットワークプロトコルが使用されます。 使用インターネットプロトコルアドレスとネットワークのポートを接続します。
ソケットという言葉は、リードまたはケーブルの物理的な接続ポイントのイメージを想起させるかもしれませんが、この文脈では、ソケットはネットワークデータ接続の一端を処理するために使用されるソフトウェア構造です。,
ソケットには、接続されていて進行中のネットワーク通信を容易にするか、着信接続が接続されるのを待っているかの二つの主な状態があります。 ソケットがリモートデバイス上で接続を確立する途中であるときの状態など、他の状態がありますが、一時的な状態を脇に置くと、ソケットは接続されているか待機していると考えることができます(これはしばしばリスニングと呼ばれます)。
リスニングソケットはサーバーと呼ばれ、リスニングソケットとの接続を要求するソケットはクライアントと呼ばれます。, これらの名前は全く関係のないハードウェアやコンピュータの役割です。 それらは単に接続の各端で各ソケットの役割を定義するだけです。
netstat
コマンドを使用すると、どのソケットが接続されているか、どのソケットがリッスンしているかを検出できます。 つまり、どのポートが使用中で、どのプロセスがそれらを使用しているかを示します。 すでしょうが、ルーティングテーブル統計情報ネットワークインタフェースとマルチキャストに接続します。
netstat
の機能は、ipやssなどのさまざまなLinuxユーティリティで時間の経過とともに複製されています。, これは、すべてのLinuxおよびUnixライクなオペレーティングシステム、さらにはWindowsおよびMacでも利用可能であるため、すべてのネットワーク分析コマンドのこの祖父を知る価値があります。
これを使用する方法は、コマンドの例で完了します。
すべてのソケットのリスト
-a
(all)オプションは、netstat
接続されているすべてのソケットと待機中のソケットを表示します。 このコマンドは長いリストを生成する可能性があるため、less
にパイプします。,
netstat -a | less
リストには、TCP(IP)、TCP6(IPv6)、およびUDPソケットが含まれます。
ターミナルウィンドウのラップアラウンドは、何が起こっているのかを確認するのが少し難しくなります。
“アクティブインターネット”セクションには、接続された外部接続とリモート接続要求をリッスンするローカルソケットがリストされています。 つまり、外部デバイスに対して確立されている(または確立される)ネットワーク接続が一覧表示されます。,
“UNIXドメイン”セクションには、接続されている内部接続とリッスン中の内部接続がリストされています。 つまり、リストに接続された設内にコンピュータと各種アプリケーション、プロセス、および要素の営業システム。
“アクティブなインターネット”カラムは次のとおりです。
- Proto:このソケットで使用されるプロトコル(たとえば、TCPまたはUDP)。
- Recv-Q:受信キュー。 これらは、受信されてバッファされ、この接続を使用しているローカルプロセスがそれらを読み取って消費するのを待っている着信バイトです。,
- Send-Q:送信キュー。 これにより、送信キューから送信する準備ができているバイトが表示されます。
- ローカルアドレス:接続のローカルエンドのアドレスの詳細。 デフォルトでは、
netstat
は、アドレスのローカルホスト名とポートのサービス名を表示します。 - 外部アドレス:接続のリモートエンドのアドレスとポート番号。
- State:ローカルソケットの状態。 UDPソケットの場合、これは通常空白です。 下の状態テーブルを参照してください。,
TCP接続の場合、state値は次のいずれかになります。
- LISTEN:サーバー側のみ。 ソケットは接続要求を待機しています。
- SYN-SENT:クライアント側のみ。 このソケットは接続要求を行い、受け入れられるかどうかを確認するのを待っています。
- SYN-RECEIVED:サーバー側のみ。 このソケットは、接続要求を受け入れた後に接続確認を待機しています。
- ESTABLISHED:サーバーとクライアント。 サーバーとクライアントの間に動作する接続が確立されており、両者の間でデータを転送できます。,
- FIN-WAIT-1:サーバーとクライアント。 このソケットは、リモートソケットからの接続終了要求、またはこのソケットから以前に送信された接続終了要求の確認を待機しています。
- FIN-WAIT-2:サーバーとクライアント。 このソケットは、リモートソケットからの接続終了要求を待機しています。
- CLOSE-WAIT:サーバーとクライアント。 このソケットは、ローカルユーザーからの接続終了要求を待機しています。
- 閉じる:サーバーとクライアント。, このソケットは、リモートソケットからの接続終了要求の確認を待機しています。
- LAST-ACK:サーバーとクライアント。 このソケットは、リモートソケットに送信された接続終了要求の確認を待機しています。
- TIME-WAIT:サーバーとクライアント。 このソケットは、リモートソケットの終了要求を受信したことを知らせるために、リモートソケットに確認応答を送信しました。 それは今確認が受け取られたことを確かめるために待っています。
- CLOSED:接続がないため、ソケットは終了しました。,
“Unixドメイン”カラムは次のとおりです。
- Proto:このソケットで使用されるプロトコル。 それは”unix”になります。”
- RefCnt:参照カウント。 このソケットに接続されている接続プロセスの数。
- フラグ:これは通常、
ACC
に設定され、SO_ACCEPTON
を表します。SO_WAITDATA
は、W
として表示され、読み取りを待っているデータがあることを意味します。,SO_NOSPACE
は、N
として表示され、ソケットにデータを書き込むためのスペースがないことを意味します(つまり、送信バッファがいっぱいです)。 - Type:ソケットタイプ。 以下のタイプ表を参照してください。
- State:ソケットの状態。 以下の状態表を参照してください。
- I-Node:このソケットに関連付けられているファイルシステムinode。
- Path:ソケットへのファイルシステムパス。
Unixドメインソケットタイプは次のいずれかになります。
- DGRAM:ソケットは固定長のメッセージを使用してデータグラムモードで使用されています。, データグラムは、信頼性、シーケンス、重複していないことは保証されていません。
- ストリーム:このソケットはストリームソケットです。 これは一般的な”通常の”タイプのソケット接続です。 これらのソケットを提供する設計の信頼性の配列の(順序)を納入。
- RAW:このソケットはrawソケットとして使用されています。 RawソケットはOSIモデルのネットワークレベルで動作し、トランスポートレベルからTCPおよびUDPヘッダーを参照しません。
- RDM:このソケットは、確実に配信されるメッセージ接続の一端にあります。,
- SEQPACKET:このソケットは、シーケンシャルパケットソケットとして動作しています。
- パケット:生のインターフェイスアクセスソケット。 Packetソケットを受け取るために使われまし開発生産性を大幅パケットのデバイスドライバ(データリンク層)レベルのOSIモデルです。
Unixドメインソケットの状態は次のいずれかになります。
- FREE:このソケットは未割り当てです。
- LISTENING:このソケットは着信接続要求をリッスンしています。,
- 接続:このソケットは接続中です。
- CONNECTED:接続が確立され、ソケットがデータを送受信できるようになりました。
- 切断:接続は終了中です。li>
うわー、それは多くの情報です! 多くのnetstat
オプションは結果を何らかの方法で絞り込みますが、コンテンツはあまり変更されません。 見てみよう,
タイプ別のソケットのリスト
netstat -a
コマンドは、必要以上に多くの情報を提供できます。 TCPソケットのみを表示する場合は、-t
(TCP)オプションを使用して、TCPソケットのみを表示するように表示を制限できます。
netstat -at | less
ディスプレイアウトが大幅に削減されます。 リストされているソケットはすべてTCPソケットです。,
-u
(UDP)および-x
(UNIX)オプションも同様の動作をし、結果はコマンドラインで指定されたソケットのタイプに制限されます。 使用中の-u(UDP)オプションは次のとおりです。
netstat -au | less
UDPソケットのみがリストされます。
状態別のソケットのリスト
listeningまたはwaiting状態のソケットを表示するには、-l
(listening)オプションを使用します。
netstat -l | less
リストされているソケットは、リスニング状態にあるソケットです。,これは、-t(TCP,-u(UDP),-x(UNIX)オプションと組み合わせて、目的のソケットにさらにホームインすることができます。 リスニングTCPソケットを探してみましょう。
netstat -lt | less
ここで、TCPリスニングソケットのみが表示されます。
プロトコル別ネットワーク統計
netstat -st | less
TCP接続の統計のコレクションがless
に表示されます。
プロセス名とPidを表示する
ソケットを使用してプロセスのプロセスID(PID)をそのプロセスの名前と一緒に表示すると便利です。, -p
(プログラム)オプションはそれを行います。 リスニング状態にあるTCPソケットを使用するプロセスのPidとプロセス名を見てみましょう。 私たちはsudo
を使用して、通常はroot権限が必要な情報を含む、利用可能なすべての情報を確実に受け取るようにします。
sudo netstat -p -at
フォーマットされたテーブルの出力は次のとおりです。
“PID/プログラム名”という余分な列があります。”この列には、各ソケットを使用しているプロセスのPIDと名前がリストされています。,
数値アドレスのリスト
あいまいさを取り除くために取ることができるもう一つのステップは、解決されたドメインとホスト名ではなく、ローカ -n
(numeric)オプションを使用すると、IPv4アドレスは点線の十進形式で表示されます。
sudo netstat -an | less
IPアドレスは数値として表示されます。 また、IPアドレスからコロン”:
“で区切られたポート番号も表示されます。127.0.0のIPアドレス。,1このソケットがループバックアドレスのローカルコンピュータ. 0.0.0.0のIPアドレスは、ローカルアドレスの”デフォルトルート”を意味し、外部アドレスの”任意のIPアドレス”を意味すると考えることができます。 “::
“と表示されるIPv6アドレスもすべてゼロアドレスです。
リストされているポートは、通常の目的が何であるかを簡単に確認できます。
- 22:これはSecure Shell(SSH)リッスンポートです。
- 25:Smtp(簡易メール転送プロトコル)リスニングポートです。
- 53:これはドメインネームシステム(DNS)リスニングポートです。,
- 68:これは動的ホスト構成プロトコル(DHCP)リスニングポートです。
- 631:これはCommon UNIX Printing System(CUPS)リッスンポートです。
関連:127.0.0.1と0.0.0.0の違いは何ですか?
ルーティングテーブルの表示
-r
(route)オプションは、カーネルルーティングテーブルを表示します。,
sudo netstat -r
これがきちんとしたテーブルの出力です。
Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface default Vigor.router 0.0.0.0 UG 0 0 0 enp0s3 link-local 0.0.0.0 255.255.0.0 U 0 0 0 enp0s3 192.168.4.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s3
そして、列の意味は次のとおりです。
- Destination:宛先ネットワークまたは宛先ホストデバイス(宛先がネットワークでない場合)。
- ゲートウェイ:ゲートウェイアドレス。 ゲートウェイアドレスが設定されていない場合、アスタリスク”
*
“がここに表示されます。 - Genmask:ルートのサブネットマスク。
- Flags:以下のflagsテーブルを参照してください。,
- MSS:このルートを介したTCP接続のデフォルトの最大セグメントサイズ—これは、あるTCPセグメントで受信できる最大データ量です。
- Window:このルート上のTCP接続のデフォルトのウィンドウサイズで、受信バッファがいっぱいになる前に転送および受信できるパケット数を示します。 実際には、パケットは受信側アプリケーションによって消費される。
- irtt:初期往復時間です。 この値は、応答が遅いリモート接続のTCPパラメータを動的に調整するためにカーネルによって参照されます。,
- Iface:このルートを介して送信されたパケットが送信されるネットワークインターフェイス。
flags値には次のいずれかを指定できます。
- U:ルートがアップしています。
- H:Targetはホストであり、このルートで可能な唯一の宛先です。
- G:ゲートウェイを使用します。
- R:ダイナミックルーティングのルートを元に戻します。/li>
- D:ルーティングデーモンによって動的にインストールされます。
- M:Internet Control Message Protocol(ICMP)パケットを受信したときにルーティングデーモンによって変更されました。,
- A:
addrconf
によってインストールされ、自動化されたDNSおよびDHCP設定ファイルジェネレータ。 - C:キャッシュエントリ。
- !:ルートを拒否します。
プロセスで使用されるポートを見つける
netstat
grep
の出力をパイプすると、名前でプロセスを検索し、使用しているポートを識別できます。 以前に使用した-a
(すべて)、-n
(数値)および-p
(プログラム)オプションを使用し、”sshd”を検索します。,”
sudo netstat -anp | grep "sshd"
grep
ターゲット文字列を見つけると、sshd
デーモンがポート22を使用していることがわかります。
もちろん、これを逆に行うこともできます。 “:22″を検索すると、どのプロセスがそのポートを使用しているかを見つけることができます(もしあれば)。
sudo netstat -anp | grep ":22"
今回はgrep
“:22″ターゲット文字列を見つけ、このポートを使用するプロセスがsshd
デーモン、プロセスID751であることがわかります。,
ネットワークインターフェイスのリスト
-i
(interfaces)オプションは、netstat
が検出できるネットワークインターフェイスのテーブルを表示します。
sudo netstat -i
これは、より読みやすい方法で出力です:
Kernel Interface table Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg enp0s3 1500 4520671 0 0 0 4779773 0 0 0 BMRU lo 65536 30175 0 0 0 30175 0 0 0 LRU
これは、列が意味するものです:
- Iface:インターフェイスの名前。
enp0s3
インターフェイスは外界へのネットワークインターフェイスであり、lo
インターフェイスはループバックインターフェイスです。, のであるloopbackインターフェースをプロセスをintercommunicate内にコンピュータをネットワークプロトコルの場合でもコンピュータがネットワーク接続している。MTU:最大伝送ユニット(MTU)である。 これは送信できる最大の”パケット”です。 で構成されるヘッダを含む配送プロトコルフラグ、その他のメタデータのデータからの輸送を行います。 - RX-OK:受信したパケットの数で、エラーはありません。
- RX-ERR:受信したパケットの数で、エラーが発生します。 私たちはこれをできるだけ低くしたいと思います。,RX-DRP:ドロップされた(すなわち、失われた)パケットの数。 また、これをできるだけ低くしたいと考えています。
- RX-OVR:受信時にオーバーフローによって失われたパケットの数。 この通常の受信バッファ溢れたと受け入れることができませんで他のデータがデータを受けた変更することができます。■ この数字が低いほど、より良い、そしてゼロは完璧です。
- TX-OK:エラーなしで送信されたパケットの数。
- RX-ERR:送信されたパケットの数、エラーがあります。 私たちはこれをゼロにしたいです。,
- RX-DRP:送信時にドロップされたパケットの数。 理想的には、これはゼロであるべきです。
- RX-OVR:送信時にオーバーフローによって失われたパケットの数。 これは通常、送信バッファがいっぱいで、それ以上のデータを受け入れることができませんでしたが、より多くのデータを送信する準備ができていて破棄
- Flg:フラグを指定します。 以下のフラグ表を参照してください。
フラグは以下を表します。
List Multicast Group Memberships
簡単に言えば、マルチキャスト送信は、受信者の数に関係なく、一度だけパケットを送信できます。, 例えば、ビデオストリーミングなどのサービスでは、これにより送信者の視点からの効率が大幅に向上します。
-g
(groups)オプションは、netstat
各インターフェイス上のソケットのマルチキャストグループメンバーシップを一覧表示します。
sudo netstat -g
列は非常に単純です:
- インターフェイス:ソケットが送信しているインターフェイスの名前。
- RefCnt:ソケットにアタッチされたプロセスの数である参照カウント。,
- Group:マルチキャストグループの名前または識別子。
ブロック上の新しい子供たち
route、ip、ifconfig、およびssコマンドは、netstat
があなたを示すことができるものをたくさん提供 それらはすべて大コマンドをとります。
私たちはnetstat
あなたが取り組んでいるUnixライクなオペレーティングシステムにかかわらず、あいまいなものでさえ、普遍的に利用可能であるため、netstat
に焦点を当てました。,
デイブ-マッケイは、パンチ紙テープが流行していたときにコンピュータを最初に使用し、それ以来ずっとプログラミングしています。 IT業界で30年以上を過ごした後、彼は現在、フルタイムの技術ジャーナリストです。 彼のキャリアの間に、彼はフリーランスのプログラマー、国際的なソフトウェア開発チームのマネージャー、ITサービスプロジェクトマネージャー、そして最近ではデータ DaveはLinuxの伝道者であり、オープンソースの支持者です。フルバイオを読む”