「netstat -s」の代替


23

netstat -s 受信したTCPリセットメッセージの数、送信したICMP「エコー要求」メッセージの数、またはルートの欠落によりドロップされたパケットの数など、非常に詳細なプロトコル統計を多数出力します。

Linux netstatが現在非推奨と見なされている場合、代替手段はありますか?

が提供する統計は、ss -sが提供する統計と比較して表面的なものnetstatです。


tcpdumpは同じニーズを満たすようです
トーマスディッキー

4
netstat非推奨です。を使用しssます。
mikeserv

@ThomasDickeyをtcpdump使用すると、ライブトラフィックをキャプチャできますが、統計情報はnetstat -s表示されません。
マーティン

1
プラットフォームを指定すると便利でしょう。sysctl出力またはさまざまな/proc/net/*ノードの内容を調べることができます。
jcaron

回答:


16

netstat実際、多くのディストリビューションで非推奨になりましたが、実際には「net-tools」パッケージ(ifconfigrouteおよびを含むarp)の多くが「iproute2」パッケージを支持して非推奨になりました。iproute2、最新のLinuxネットワーク機能とともに進化しましたが、従来のユーティリティは進化しいません。

必要なiproute2の同等物はほとんど知られていないためnstat、これはnetstat -sわずかに異なる形式ですが、カウンターを提供します。

  • /procクラスのプレフィックスが付いた生のカウンター名が使用されます(「Udp」、「Tcp」、「TcpExt」など)
  • netstatの長い(おそらくローカライズされた)説明は利用できません
  • デフォルトで省略されるゼロ値カウンター
  • 1列目と2列目の名前と値を使用して一貫した列出力を使用する
  • 3番目の列は、バックグラウンドnstat(-dデーモンモード)を開始した場合は構成可能な時間ウィンドウでの平均を示し、そうでない場合は0.0を示します

    たとえば、nstat「Udp:InDatagrams」ではなく「UdpInDatagrams NNN」を出力し、「Udp:NNN packets received」の冗長なnetstatバージョンは出力しません。

nstatまた、絶対番号ではなく増分番号が必要であると想定しているため、オプションが絶対カウンタを使用する場合、履歴ファイルを保持しない、ゼロ値カウンタを省略しないのnetstat -sが最も近いです。/sbin/nstat -asz-a-s-z

ssはの「ソケット」部分を引き継ぎnetstatますが、あなたが発見したようにその完全な機能ではありません。(ss実際にnetstatは多くの場合よりも優れています。特定の2つは、フィルター式を使用する機能tcp_diaginet_diagLinuxカーネルモジュールを使用してカーネルソケットデータに直接アクセスするためのオプション機能です/proc。)

わかりやすい名前のマッピングを確認する必要がある場合、net-toolsソースが決定的なリファレンスです:http : //sourcecodebrowser.com/net-tools/1.60/statistics_8c_source.html

Doug Vitaleは、古いコマンドのiproute2に相当するものを見つけるための有用なガイドを提供します(メンテナンスされておらず、少し不完全です。少なくとも2004カーネル2.6.x 以降nstat、iproute2パッケージに含まれていた参照は省略されています)。

ただし、net-toolsは存続しているので、ディストリビューション用のパッケージを見つける(または自分でコンパイルする)ことができるはずです。


23

NETSTATは、現在では非推奨と見なされており、arp、ifconfig、iptunnel、nameif、などのnet-toolsに含まれる他のプログラムnetstat、およびrouteも含まれています。

これらのユーティリティのいくつかが提供する機能は、主に新しいコマンドを使用することにより、新しいiproute2スイートで再現および改善されましたip

非推奨のコマンドとその置換の例:

arp => ip n(ip neighbor)

ifconfig => ip a(ip addr)、ip link、ip -s(ip -stats)

iptunnel => ip tunnel

iwconfig => iw

nameif => ip link、ifrename

netstat => ss、ip route(netstat-rの場合)、ip -s link(netstat -iの場合)、ip maddr(netstat-gの場合)

このnetstatコマンドは、さまざまな/ procファイルを読み取って情報を収集します。ただし、表示する接続が多数ある場合、このアプローチは弱くなります。これにより速度が低下します。このssコマンドは、カーネルスペースから直接情報を取得します。ssコマンドで使用されるオプションは、netstatと非常によく似ているため、簡単に置き換えることができます。

が提供する統計がssあり、表在それは考えられている より良い代替netstat

例:

すべての接続を取得します。 ss | less

ss -t リッスンモードではないTCP接続を取得する(サーバープログラム)

ss -u リッスンモードではないudp接続を取得する

ss -x UNIXソケットパイプ接続を取得します

ss -ta すべてのTCP接続を取得します

ss -au すべてのUDP接続を取得します

ss -nt ホスト名なしのすべてのtcp

ss -ltn ホスト解決なしでTCPをリッスンする

ss -ltp PIDと名前でTCPをリッスンする

ss -s 統計を出力します

ss -tn -o ドメインホストとのTCP接続およびshow keepaliveタイマー

ss -tl4 ip4接続


4
これは質問に答えません。OP ss -s は提供するデータをnetstat -s提供しないことを正しく指摘します。また、これは誤った情報が含まれています/proc です。このため、カーネル・インタフェース、それは正確にどのようにだssだけのデータの取得:strace -e trace=file,read /sbin/ss -s
mr.spuratic

1
OPは、完全に「ssは表面的」ではなく、「ss -snetstatが提供するものと比較して表面的である」(と比較することを意味するnetstat -s)と述べました。そして、それは本当に真実です。例えば、ss -sからは、TCP再送信について何も知ることができません。
kenichi

4

次の内容を確認できます/proc/net/netstat

TcpExt: SyncookiesSent SyncookiesRecv SyncookiesFailed EmbryonicRsts PruneCalled RcvPruned OfoPruned OutOfWindowIcmps LockDroppedIcmps ArpFilter TW TWRecycled TWKilled PAWSPassive PAWSActive PAWSEstab DelayedACKs DelayedACKLocked DelayedACKLost ListenOverflows ListenDrops TCPPrequeued TCPDirectCopyFromBacklog TCPDirectCopyFromPrequeue TCPPrequeueDropped TCPHPHits TCPHPHitsToUser TCPPureAcks TCPHPAcks TCPRenoRecovery TCPSackRecovery TCPSACKReneging TCPFACKReorder TCPSACKReorder TCPRenoReorder TCPTSReorder TCPFullUndo TCPPartialUndo TCPDSACKUndo TCPLossUndo TCPLostRetransmit TCPRenoFailures TCPSackFailures TCPLossFailures TCPFastRetrans TCPForwardRetrans TCPSlowStartRetrans TCPTimeouts TCPLossProbes TCPLossProbeRecovery TCPRenoRecoveryFail TCPSackRecoveryFail TCPSchedulerFailed TCPRcvCollapsed TCPDSACKOldSent TCPDSACKOfoSent TCPDSACKRecv TCPDSACKOfoRecv TCPAbortOnData TCPAbortOnClose TCPAbortOnMemory TCPAbortOnTimeout TCPAbortOnLinger TCPAbortFailed TCPMemoryPressures TCPSACKDiscard TCPDSACKIgnoredOld TCPDSACKIgnoredNoUndo TCPSpuriousRTOs TCPMD5NotFound TCPMD5Unexpected TCPSackShifted TCPSackMerged TCPSackShiftFallback TCPBacklogDrop TCPMinTTLDrop TCPDeferAcceptDrop IPReversePathFilter TCPTimeWaitOverflow TCPReqQFullDoCookies TCPReqQFullDrop TCPRetransFail TCPRcvCoalesce TCPOFOQueue TCPOFODrop TCPOFOMerge TCPChallengeACK TCPSYNChallenge TCPFastOpenActive TCPFastOpenPassive TCPFastOpenPassiveFail TCPFastOpenListenOverflow TCPFastOpenCookieReqd TCPSpuriousRtxHostQueues BusyPollRxPackets
TcpExt: 0 0 3310 41566 0 0 0 8 0 0 6402271 0 0 0 0 55 4280514 134510 38423 0 611 15354484 20413302 794718685 0 14094957 6423168 25905597 17269587 4 23681 29 50 20 0 25 43 25 19211 1800 131 0 93 93 25430 4864 18099 1199566 2300620 1280201 0 279 0 0 38507 607 2359841 19 98943 1769 0 5993 0 0 0 3 65 1310588 380 0 0 0 0 613504 190 0 12056356 0 0 0 0 3 735740 43633 0 606 3933 193 0 24 0 0 0 14 0
IpExt: InNoRoutes InTruncatedPkts InMcastPkts OutMcastPkts InBcastPkts OutBcastPkts InOctets OutOctets InMcastOctets OutMcastOctets InBcastOctets OutBcastOctets InCsumErrors InNoECTPkts InECT1Pkts InECT0Pkts InCEPkts
IpExt: 0 0 50492 0 18482301 0 68850196397 26546692767 3029352 0 2305454225 0 0 457718114 36 19480 2472

最も使いやすい形式ではありませんが、アイデアは得られます。

探している特定のアイテムが実際に含まれているかどうかはわかりませんが、の別の場所にある可能性があります/proc/net


5
出力をフォーマットする(単一の長い行の)スクリプトを次に示しますawk '{for(i=1;i<=NF;i++)title[i] = $i; getline; print title[1]; for(i=2;i<=NF;i++)printf " %s: %s\n", title[i], $i }' /proc/net/netstat
。– meuh

1
/proc/net/snmp含まれているほとんどのデータのをして/proc/net/netstat、残りが含まれています。残念ながら、すべての名前マッピングを決定するためにnet-tools statistics.cソースを読む必要がありますが、ほとんどは明らかです。
Mr.spuratic
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.