альтернатива «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/*узлов.
января

Ответы:

16

netstatдействительно устарел во многих дистрибутивах, хотя это на самом деле большая часть пакета «нетто-инструменты» ( в том числе ifconfig, routeи arp) , что является устаревшим в пользу «IPRoute2» пакета. iproute2 развивался вместе с новейшими сетевыми функциями Linux , а традиционные утилиты - нет.

Требуемый эквивалент iproute2 является малоизвестным nstat, он предоставляет netstat -sсчетчики, хотя и в несколько иной форме:

  • используются необработанные имена счетчиков from /proc, каждый из которых имеет префикс своего класса («Udp», «Tcp», «TcpExt» и т. д.)
  • Длинные (и, возможно, локализованные) описания netstat недоступны
  • счетчики нулевого значения по умолчанию опущены
  • использование согласованного столбцового вывода с именем и значением в первом и втором столбцах
  • третий столбец показывает среднее значение по настраиваемому временному окну, если вы запустили фоновый nstat ( -dрежим демона), или 0.0, если нет

    например, nstatпечатает «UdpInDatagrams NNN», а не «Udp: InDatagrams», и не подробную версию netstat «Udp: NNN полученные пакеты».

nstatтакже предполагается, что вам нужны инкрементные, а не абсолютные числа, поэтому наиболее близким эквивалентом netstat -sявляется то, /sbin/nstat -aszгде параметры -aиспользуют абсолютные счетчики, -sне сохраняют файл истории, -zне опускают счетчики с нулевым значением.

ssпринимает на себя части «сокета» netstat, но не полностью выполняет функции, как вы выяснили. ( ssна самом деле это лучше, чем netstatво многих случаях, два из них - это возможность использовать выражения фильтра и опциональная возможность использовать модули ядра tcp_diagи inet_diagLinux для доступа к данным сокета ядра более напрямую, чем через /proc.)

Если вам необходимо подтвердить сопоставление для описательных имен, источник net-tools является окончательной ссылкой: http://sourcecodebrowser.com/net-tools/1.60/statistics_8c_source.html

Дуг Витале предоставляет полезное руководство для поиска эквивалентов iproute2 более старых команд (он не поддерживается и немного неполон, он не содержит ссылок на то, nstatчто было частью пакета iproute2, начиная с версии ядра 2.6.x 2004 года ).

нетто-инструменты живут однако, и вы должны быть в состоянии найти пакет для вашего дистрибутива (или скомпилировать его самостоятельно).

mr.spuratic
источник
23

В настоящее время NETSTAT считается устаревшим и другими программами, включенными в сетевые инструменты, такими как arp, ifconfig, iptunnel, nameif netstatи route.

Функциональные возможности, предоставляемые некоторыми из этих утилит, были воспроизведены и улучшены в новом пакете iproute2 , главным образом с помощью его новой ipкоманды.

Примеры устаревших команд и их замен:

arp => ip n (сосед IP)

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

iptunnel => IP-туннель

iwconfig => iw

nameif => IP-ссылка, 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 прослушивание tcp с PID и именем

ss -s печатает статистику

ss -tn -o TCP-соединение с хостом домена и таймер поддержки активности

ss -tl4 ip4 соединения

GAD3R
источник
4
Это не отвечает на вопрос, ОП правильно указывает, что ss -s не предоставляет данные, которые netstat -sпредоставляют. Это также содержит дезинформацию: /proc это интерфейс ядра для этого , и это точно , как ssПолучает много данных: strace -e trace=file,read /sbin/ss -s.
mr.spuratic
1
ФП сказал, что не совсем "ss являются поверхностными", но " ss -sявляются поверхностными по сравнению с теми, которые предоставляет netstat" (означает по сравнению с netstat -s). И это действительно правда: например, из ss -s вы ничего не можете знать о ретрансляциях TCP.
Кеничи
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.

jcaron
источник
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