web-dev-qa-db-ja.com

netstatのヒントとコツ

「便利なコマンドライン」の質問と同じように( WindowsLinux 、および Mac の場合)、便利だと思います「ユーティリティXを使用するための便利な方法」の質問がある。マニュアルページには、パラメーターの機能が示されていますが、必ずしもそれらを使用する理由、結果の意味、大規模な実験を行わないとわからないコマンドの有用な機能、または本当に必要な答えを得る方法が示されています。

netstat について知りたい。どのプロセスが帯域幅を使用しているか、そして実際にシステムが帯域幅をどれだけ速く使用しているかを理解できるように見えるでしょう。また、不要な接続(viriiなど)を検出するのにも役立ち、あらゆる種類のルーティング情報(Sharp Zaurus PDA use TCP/IP言い換えれば、それは金鉱山のように聞こえます。あなたが見つけた情報のナゲットを共有してくれることを期待しています。

返信にはnetstatのバージョンとOSを含めてください。いくつかのサンプル出力を見て、それが何を意味するのかを知っておくといいでしょう。私はこの質問をコミュニティウィキとしてマークしました。異なるOSを知っている他の人が知っている場合は、ほぼ同じコマンドを同じ回答で発行できるように、回答でも同じようにしてください。次に、どの回答が最も役立つかについて投票できます。

13

ローカルのリスニングTCP/UDPポートと、それらが属するプロセスを表示します。

Sudo netstat -tulpn
4
cmcginty

Netstatルーティングテーブル

[これはMac OS X 10.5.7でテストされています。 Solaris上で動作することが示されているため、結果はすべてのプラットフォームでほぼ同じだと思います。]

netstat -r 

ルーティングテーブルを提供します。

netstat -nr

は同じですが、マシン名を検索する代わりに未加工のIPを提供します。その出力は次のようになります(長くなります):

Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            192.168.40.250     UGSc       19        1    en1
127                127.0.0.1          UCS         0        0    lo0
127.0.0.1          127.0.0.1          UH          1     3140    lo0
169.254            link#5             UCS         0        0    en1
169.254.33.92      127.0.0.1          UHS         0        0    lo0
192.168.40         link#5             UCS        11        0    en1
192.168.40.1       0:17:f2:ca:a0:94   UHLW        0        0    en1   1150
...

Internet6:
Destination                             Gateway                         Flags      Netif Expire
::1                                     link#1                          UHL         lo0
fe80::%lo0/64                           fe80::1%lo0                     Uc          lo0
fe80::1%lo0                             link#1                          UHL         lo0
fe80::%en0/64                           link#4                          UC          en0
...
ff02::/32                               link#7                          UC          en2
ff02::/32                               link#8                          UC          en3

列:

宛先とゲートウェイ:宛先は、情報の送信先となる可能性があるアドレス(またはアドレス範囲)です。その宛先に送信されるすべてのデータは、関連付けられたゲートウェイに送られます。ゲートウェイは、旅の次の「ホップ」のためにデータを送信する場所を知っています。ルーティングテーブルにエントリがない宛先にデータを送信する場合は、デフォルトゲートウェイを経由します。

フラグ:man/infoページにすべてのフラグがリストされます。デフォルトゲートウェイの設定の意味は次のとおりです。

UGSc
U       - RTF_UP           Route usable
 G      - RTF_GATEWAY      Destination requires forwarding by intermediary
  S     - RTF_STATIC       Manually added
   c    - RTF_PRCLONING    Protocol-specified generate new routes on use

DHCP経由で追加されたため、手動で追加すると主張しているのは奇妙です。

Refs: "refcntフィールドは、ルートの現在のアクティブな使用数を示します。接続指向プロトコルは、通常、コネクションレス型プロトコルが同じ宛先に送信している間にルートを取得している間の接続。」 (マニュアルページ)

Use:「useフィールドは、そのルートを使用して送信されたパケット数のカウントを提供します。」

Netif:「インターフェイスエントリは、ルートに使用されているネットワークインターフェイスを示します。」

私のMacでは

  • lo0はループバックインターフェイスです。
  • en0はイーサネットです。
  • en1はワイヤレスです。
  • en2およびen3は仮想マシンによって使用されます。

Expire:異なるバージョンのnetstatのマンページから:「ルートの有効期限が切れるまでの残り時間(分単位)を表示します。」

3

Windowsの場合:

c:>netstat -a | find /c "TCP"
68

TCP/IP接続の数を示します。 TCPポートが不足していて MaxUserPorts を増やす必要がある)高度なネットワークシステムのトラブルシューティングを行う場合に役立ちます。

2

Bashでnetstatを使用するための便利な方法については、 CommandLineFu Netstatページ を確認してください。

2
andyhky

送信/受信のレート

Macの場合[OS X 10.5.7]:

netstat -i -w 10

[SolarisおよびLinuxでの使用に関する注意については、 チャックの答え を参照してください。]

出力は次のようになります。

            input        (Total)           output
   packets  errs      bytes    packets  errs      bytes colls
       794     0    1166796        763     0      50358     0
       789     0    1167773        765     0      52542     0
       792     0    1166548        765     0      51174     0
       796     0    1167262        598     0      40152     0
       929     0    1278561        846     0      65625     0
       563     0     815570        530     0      36828     0
        32     0       4360          1     0        774     0
         9     0        705          0     0        684     0
         9     0        631          0     0          0     0

これは、一定の時間内に転送されたパケットとバイトの数を示します。 (この例では10秒)。私はYouTubeに接続していて、ブラウザーのタブを閉じて速度が底をつくまで、間隔ごとに1 MBを超えてダウンロードしていました。

これは、アップロードまたはダウンロードが完了するのを待っている場合に役立ちます。レートを監視し、劇的に低下したら、それが完了したことを知っています。

上記のコマンドは、すべてのインターフェイスのすべてのスループットを表示することに注意してください。特定のインターフェース(この例ではWiFi)にスコープを設定するには、-Iフラグ。

netstat -I en1 -w 10
2

ウィンドウズ:

Netstat -n
(Show active TCP connections, don't slow down trying to do name resolution)

Proto  Local Address          Foreign Address        State
TCP    192.168.1.38:4853    69.59.196.212:80       ESTABLISHED

アクティブなTCP接続を表示しますが、UDPアクティビティは表示しません。

Netstat -an
  (Show all connections, don't slow down trying to do name resolution)

Proto  Local Address          Foreign Address        State
TCP    0.0.0.0:80             0.0.0.0:0              LISTENING
TCP    192.168.1.38:4853    69.59.196.212:80       ESTABLISHED

すべてのアクティブなTCP=接続、およびリスニングTCPおよびUDP接続を表示します。ここには、アウトバウンドUDPアクティビティは表示されません。

1
Mike

Windows 7(おそらく以前から):

netstat -ano

関連するPIDを持つアクティブなセッションをリストします

Active Connections

  Proto  Local Address          Foreign Address        State           PID
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       776
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:554            0.0.0.0:0              LISTENING       1724

またはステップを保存する

netstat -anb

(昇格されたCMDプロンプトから)プロセス名を指定します

Active Connections

  Proto  Local Address          Foreign Address        State
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING
  RpcSs
 [svchost.exe]
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING
 Can not obtain ownership information
  TCP    0.0.0.0:554            0.0.0.0:0              LISTENING
 [wmpnetwk.exe]
  TCP    0.0.0.0:2048           0.0.0.0:0              LISTENING
1
TristanK

私はホイールを再発明していると確信していますが、- これは簡単なPerlスクリプトです でnetstatを実行し、現在接続されているIPが一番上になるように出力を並べ替えます。これは、2秒間隔で更新するための「watch」プログラムでの使用に最適です。

更新:多くの問題を取り除き、ホスト名を表示するために2013-02-11を大幅に書き換え

出力例:

Distant inbound connections: 2
   85.93.216.17:772               <-- 78.141.139.10       :    1        ip-78-141-139-10.dyn.luxdsl.pt.lu     1 x ESTABLISHED
   80.90.47.155:443               <-- 78.141.139.10       :    1        ip-78-141-139-10.dyn.luxdsl.pt.lu     1 x ESTABLISHED
Distant outbound connections: 3
   80.90.63.61                    --> 80.90.63.48:25      :    2        smtp.m-plify.net                      2 x TIME_WAIT
   85.93.216.17                   --> 85.93.216.18:772    :    1        maya.m-plify.net                      1 x ESTABLISHED
Looping connections: 57 (10 duplicates)
   127.0.0.1                      --> 127.0.0.1:9355      :   20                                              1 x ESTABLISHED, 8 x TIME_WAIT, 11 x CLOSE_WAIT
   127.0.0.1                      --> 127.0.0.1:4713      :   10                                             10 x CLOSE_WAIT
   127.0.0.1                      --> 127.0.0.1:9353      :    9                                              4 x TIME_WAIT, 5 x CLOSE_WAIT
   127.0.0.1                      --> 127.0.0.1:3306      :    8                                              6 x ESTABLISHED, 1 x TIME_WAIT, 1 x CLOSE_WAIT
   127.0.0.1                      --> 127.0.0.1:5445      :    5                                              1 x ESTABLISHED, 4 x TIME_WAIT
   127.0.0.1                      --> 127.0.0.1:9354      :    2                                              2 x CLOSE_WAIT
   127.0.0.1                      --> 127.0.0.1:7998      :    1                                              1 x TIME_WAIT
   127.0.0.1                      --> 127.0.0.1:3351      :    1                                              1 x ESTABLISHED
   127.0.0.1                      --> 127.0.0.1:32000     :    1                                              1 x ESTABLISHED
1
David Tonhofer

ウィンドウズ

netstat -b

接続を使用してプロセスを表示します

1
user640

Solaris:

netstat -nr
(displays routing table)
0
Milner

Wicked Cool Shell Scriptsの本から:

Script#90.1 : 'n'分ごとにnetstats値を取得(crontabを使用)

Script#90.2 :netstat実行パフォーマンスログを分析し、重要な結果と傾向を特定します。

(この本が大好きです-購入する価値があります!)

0
gharper

まだ誰も言及していないので:

netstat -s 

linuxでプロトコルごとに大量の有用な統計を提供します。

0
dmourati

Solarisでは、多くの人が「netstat -i 1」を実行して実行中のパケット数を取得することに慣れています。 Linux netstatには、差分ではなくrawカウントが表示されるため、この機能の役に立たないバージョンがあります。同様の結果を得るには、「sar -n DEV 1 0」を実行します。実際に "LANG = C sar -n DEV 1 0 | grep interfacename"(sarはAMとPMで時間を特定のロケールで行頭に置くので、解析する場合に備えて、常に「LANG = C sar」を実行するという習慣があります。

0
carlito

Solarisでは、

netstat -k

さまざまな統計の概要を表示します。エラーのチェックなどに役立ちます。

0
Jauder Ho