English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Linux下のnetstatコマンドの一般的な使用法

概要

Netstatコマンドは、ネットワーク接続、ルートテーブル、インターフェースステータス(Interface Statistics)、マスク接続、マルチキャストメンバー(Multicast Memberships)など、さまざまなネットワーク関連情報を表示するために使用されます。

出力情報の意味

netstatを実行した後、その出力結果は以下の通りです

Active Internet connections (w/o サーバー)
プロトコル 受信-Q 送信-Q Local Address Foreign Address State
tcp 0 2 210.34.6.89:telnet 210.34.6.96:2873 ESTABLISHED
tcp 296 0 210.34.6.89:1165 210.34.6.84:netbios-ssn ESTABLISHED
tcp 0 0 localhost.localdom:9001 localhost.localdom:1162 ESTABLISHED
tcp 0 0 localhost.localdom:1162 localhost.localdom:9001 ESTABLISHED
tcp 0 80 210.34.6.89:1161 210.34.6.10:netbios-ssn CLOSE
Active UNIX domain sockets (w/o サーバー)
Proto RefCnt Flags Type State I-Node Path
unix 1 [ ] STREAM CONNECTED 16178 @000000dd
unix 1 [ ] STREAM CONNECTED 16176 @000000dc
unix 9 [ ] DGRAM 5292 /dev/log
unix 1 [ ] STREAM CONNECTED 16182 @000000df

全体として見ると、netstatの出力結果は二つの部分に分けることができます:

一つはActive Internet connections、有源TCP接続と呼ばれます、その中で"Recv-Q"と"Send-Q"は%0Aを指し、受信キューと送信キューを示します。これらの数字は通常0でなければなりません。それがそうでない場合、ソフトウェアパッケージがキューに積まれていることを示します。このような状況は非常に稀にしか見られません。

もう一つはActive UNIX domain sockets、有源Unixドメインソケットと呼ばれます(ネットワークソケットと同様ですが、本機通信のみに使用可能で、性能が2倍に向上します)。

Proto は接続に使用されるプロトコルを表示し、RefCnt は本套接続に接続するプロセス番号を示し、Types はソケットのタイプを表示し、State はソケットの現在の状態を表示し、Path は他のプロセスがソケットに接続するためのパス名を示します。

一般的なパラメータ

-a (all) 全てのオプションを表示します、デフォルトではLISTEN関連は表示されません
-t (tcp) tcpに関連するオプションのみを表示します
-u (udp) udpに関連するオプションのみを表示します
-n エイリアスを表示しない、数字で表示できる全てを数字に変換します。
-l みなぎっているListen(監听)のサービス状態のみをリスト表示します

-p 関連するリンクを構築したプログラム名を表示します
-r ルート情報、ルートテーブルを表示します
-e 拡張情報を表示します、例えばuidなど
-s 各プロトコルごとに統計を取ります
-c 指定された固定時間ごとに、このnetstatコマンドを実行します。

ヒント:LISTENおよびLISTENINGの状態は、以下のように使用する必要があります-またはa-lを通じてのみ見ることができます

実用コマンドの例 

1. 全てのポート(監听および未監听を含む)をリスト表示

  netstatで全てのポートをリスト表示 -a

# netstat -a | more
 アクティブなインターネット接続(サーバーおよび既存接続)
 プロトコル 受信-Q 送信-Q ローカルアドレス   外部アドレス   ステート
 tcp  0  0 localhost:30037   *:*      LISTEN
 udp  0  0 *:bootpc    *:*
アクティブなUNIXドメインソケット(サーバーおよび既存接続)
 Proto RefCnt Flags  Type  State   I-Node Path
 unix 2  [ ACC ]  STREAM  LISTENING  6135  /tmp/.X11-unix/X0
 unix 2  [ ACC ]  STREAM  LISTENING  5140  /var/run/acpid.socket

  netstatで全てのtcpポートをリスト表示 -at

# netstat -at
 アクティブなインターネット接続(サーバーおよび既存接続)
 プロトコル 受信-Q 送信-Q ローカルアドレス   外部アドレス   ステート
 tcp  0  0 localhost:30037   *:*      LISTEN
 tcp  0  0 localhost:ipp   *:*      LISTEN
 tcp  0  0 *:smtp     *:*      LISTEN
 tcp6  0  0 localhost:ipp   [::]:*     LISTEN

  netstatで全てのudpポートをリスト表示 -au

# netstat -au
 アクティブなインターネット接続(サーバーおよび既存接続)
 プロトコル 受信-Q 送信-Q ローカルアドレス   外部アドレス   ステート
 udp  0  0 *:bootpc    *:*
 udp  0  0 *:49119     *:*
 udp  0  0 *:mdns     *:*

2. 監听状態の全てのSocketsをリスト表示

  netstatで監听ポートのみを表示 -l

# netstat -l
 アクティブなインターネット接続(サーバーのみ)
 プロトコル 受信-Q 送信-Q ローカルアドレス   外部アドレス   ステート
 tcp  0  0 localhost:ipp   *:*      LISTEN
 tcp6  0  0 localhost:ipp   [::]:*     LISTEN
 udp  0  0 *:49119     *:*

  netstatで全ての監听tcpポートをリスト表示 -lt

# netstat -lt
 アクティブなインターネット接続(サーバーのみ)
 プロトコル 受信-Q 送信-Q ローカルアドレス   外部アドレス   ステート
 tcp  0  0 localhost:30037   *:*      LISTEN
 tcp  0  0 *:smtp     *:*      LISTEN
 tcp6  0  0 localhost:ipp   [::]:*     LISTEN

  netstatで全ての監听udpポートをリスト表示 -lu

# netstat -lu
 アクティブなインターネット接続(サーバーのみ)
 プロトコル 受信-Q 送信-Q ローカルアドレス   外部アドレス   ステート
 udp  0  0 *:49119     *:*
 udp  0  0 *:mdns     *:*

  netstatで全ての監听UNIXポートをリスト表示 -lx

# netstat -lx
 アクティブなUNIXドメインソケット(サーバーのみ)
 Proto RefCnt Flags  Type  State   I-Node Path
 unix 2  [ ACC ]  STREAM  LISTENING  6294  プライベート/maildrop
 unix 2  [ ACC ]  STREAM  LISTENING  6203  パブリック/cleanup
 unix 2  [ ACC ]  STREAM  LISTENING  6302  プライベート/ifmail
 unix 2  [ ACC ]  STREAM  LISTENING  6306  プライベート/bsmtp

3. 各プロトコルの統計情報を表示

  netstatで全てのポートの統計情報を表示 -s

# netstat -s
 Ip:
 11150総受信パケット
 1 無効なアドレスで
 0転送されました
 0受信されたパケットが捨てられました
 11149 受信されたパケット
 11635 送信されたリクエスト
 Icmp:
 0ICMPメッセージを受信
 0入力ICMPメッセージが失敗しました。
 Tcp:
 582 アクティブな接続オープニング
 2 失敗した接続試行
 25 接続リセットを受信しました
 Udp:
 1183 受信したパケット
 4 未知のポートへのパケットを受信しました。
 .....

  netstatでTCPまたはUDPポートの統計情報を表示します -stまたは -su

# netstat -st 
# netstat -su

4. netstat出力にPIDとプロセス名を表示するnetstat -p

netstat -pは他のオプションと一緒に使用できるため、'PID'を追加できます。/プロセス名をnetstat出力に追加することで、debugging時に特定のポートで動作しているプログラムを簡単に見つけることができます。

# netstat -pt
 Active Internet connections (w/o サーバー)
 プロトコル 受信-Q 送信-Q ローカルアドレス   外部アドレス   ステート  PID/プログラム名
 tcp  1  0 ramesh-laptop.loc:47212 192.168.185.75:www  CLOSE_WAIT 2109/firefox
 tcp  0  0 ramesh-laptop.loc:52750 lax:www ESTABLISHED 2109/firefox

5. netstatの出力からホスト、ポート、ユーザー名(host, port or user)を表示させません

ホスト、ポート、ユーザー名を表示させたくない場合は、netstatを使用します -n。これらの名前の代わりに数字を使用します。

同様に、比較検索を行わないため、出力を高速化できます。

# netstat -an

これらの名前のいずれか1つを表示させたくない場合は、以下のコマンドを使用します

# netsat -a --numeric-ports
# netsat -a --numeric-hosts
# netsat -a --numeric-users

6. 持続的にnetstat情報を出力

netstatは毎秒に一度ネットワーク情報を出力します。

# netstat -c
 Active Internet connections (w/o サーバー)
 プロトコル 受信-Q 送信-Q ローカルアドレス   外部アドレス   ステート
 tcp  0  0 ramesh-laptop.loc:36130 101-101-181-225.ama:www ESTABLISHED
 tcp  1  1 ramesh-laptop.loc:52564 101.11.169.230:www  CLOSING
 tcp  0  0 ramesh-laptop.loc:43758 server-101-101-43-2:www ESTABLISHED
 tcp  1  1 ramesh-laptop.loc:42367 101.101.34.101:www  CLOSING
 ^C

 7. システムがサポートしていないアドレス族(Address Families)を表示

netstat --verbose

出力の最後に以下のような情報があります

netstat: このシステムでは `AF IPX` に対するサポートがありません。
netstat: このシステムでは `AF AX` に対するサポートはありません。25このシステムでは `AF X`
netstat: このシステムでは `AF AX`25このシステムでは `AF X`
netstat: このシステムでは `AF NETROM` に対するサポートはありません。

8. ネットスタットを使用してカーネルルーティング情報を表示 -r

# netstat -r
 カーネルIPルーティングテーブル
 デスティネーション ゲートウェイ ゲンマスク フラッグ MSS ウィンドウ irtt インターフェース
 192.168.1.0  *    255.255.255.0 U   0 0   0 eth2
 リンク-ローカル  *    255.255.0.0  U   0 0   0 eth2
 デフォルト   192.168.1.1  0.0.0.0   UG  0 0   0 eth2

注意:netstatを使用 -rn 数字形式で表示、ホスト名をクエリしません。

9. プログラムが実行しているポートを見つける

すべてのプロセスを見つけることができません、権限がない場合は表示されません。root権限ですべての情報を確認してください。

# netstat -ap | grep ssh
 tcp  1  0 dev-db:ssh   101.174.100.22:39213  CLOSE_WAIT -
 tcp  1  0 dev-db:ssh   101.174.100.22:57643  CLOSE_WAIT -

指定されたポートで動作しているプロセスを見つける

# netstat -an | grep ':80'

10. ネットワークインターフェースリストを表示

# netstat -i
 カーネルインターフェーステーブル
 Iface  MTU Met  RX-OK RX-ERR RX-DRP RX-OVR  TX-OK TX-ERR TX-DRP TX-OVR Flg
 eth0    1500 0     0   0   0 0       0   0   0   0 BMU
 eth2    1500 0   26196   0   0 0     26883   6   0   0 BMRU
 lo    16436 0     4   0   0 0       4   0   0   0 LRU

詳細情報を表示します、ifconfigを使用してnetstat -ie:

# netstat -ie
 カーネルインターフェーステーブル
 eth0   リンクエンケプ:イーサネット HWaddr 00:10:40:11:11:11
 UP ブロードキャスト マルチキャスト MTU:1500 メトリック:1
 RXパケット:0 エラー:0 ドロップ:0 オーバーラン:0 フレーム:0
 TXパケット:0 エラー:0 ドロップ:0 オーバーラン:0 カリャー:0
 collisions:0 txqueuelen:1000
 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
 Memory:f6ae0000-f6b00000

11IPとTCP分析

  特定のサービスポートに接続しているIPアドレスを確認

wss8848@ubuntu:~$ netstat -nat | grep "192.168.1.15:22「 |awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -20
18 221.136.168.36
3 154.74.45.242
2 78.173.31.236
2 62.183.207.98
2 192.168.1.14
2 182.48.111.215
2 124.193.219.34
2 119.145.41.2
2 114.255.41.30
1 75.102.11.99

  TCPの各状態リスト

wss8848@ubuntu:~$ netstat -nat |awk '{print $6}
established)
Foreign
LISTEN
TIME_WAIT
ESTABLISHED
TIME_WAIT
SYN_SENT

  まずすべてのステータスを取得し、uniqを使用してフィルタリングします。 -c統計を行い、その後ソートします。

wss8848@ubuntu:~$ netstat -nat |awk '{print $6}'|sort|uniq -c
143 ESTABLISHED
1 FIN_WAIT1
1 Foreign
1 LAST_ACK
36 LISTEN
6 SYN_SENT
113 TIME_WAIT
1 established)

  最後のコマンドは以下の通りです:

netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn

分析access.logからアクセス前10のIPアドレス

awk '{print $1}' access.log |sort|uniq -c|sort -nr|head -10

以上は、編集者が皆さんに紹介したLinuxのnetstatコマンドの一般的な使用方法です。皆さんの役に立てば幸いです。

声明:本記事の内容はインターネットから取得しており、著作権者所有とされています。インターネットユーザーにより自発的に提供され、アップロードされています。本サイトは権利を所有しておらず、人工的な編集も行われていません。著作権侵害が疑われる内容を見つけた場合は、以下のメールアドレスにご連絡ください:notice#oldtoolbag.com(メール送信時は、#を@に置き換えてください。報告を行い、関連する証拠を提供してください。一旦確認がついたら、本サイトは侵害が疑われる内容をすぐに削除します。)

おすすめ