netstat -s
распечатывает много очень подробной статистики протокола, например, количество полученных сообщений сброса TCP или количество отправленных ICMP-сообщений «эхо-запроса» или количество пакетов, пропущенных из-за пропущенного маршрута.
Если в настоящее время Linux netstat
считается устаревшим, есть ли альтернатива?
Статистические данные ss -s
являются поверхностными по сравнению с предоставленными netstat
.
netstat
не рекомендуется. Использованиеss
.tcpdump
позволяет захватывать живой трафик, но не хранит статистику, какnetstat -s
показано на рисунке.sysctl
вывод или содержимое различных/proc/net/*
узлов.Ответы:
netstat
действительно устарел во многих дистрибутивах, хотя это на самом деле большая часть пакета «нетто-инструменты» ( в том числеifconfig
,route
иarp
) , что является устаревшим в пользу «IPRoute2» пакета. iproute2 развивался вместе с новейшими сетевыми функциями Linux , а традиционные утилиты - нет.Требуемый эквивалент iproute2 является малоизвестным
nstat
, он предоставляетnetstat -s
счетчики, хотя и в несколько иной форме:/proc
, каждый из которых имеет префикс своего класса («Udp», «Tcp», «TcpExt» и т. д.)третий столбец показывает среднее значение по настраиваемому временному окну, если вы запустили фоновый 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_diag
Linux для доступа к данным сокета ядра более напрямую, чем через/proc
.)Если вам необходимо подтвердить сопоставление для описательных имен, источник net-tools является окончательной ссылкой: http://sourcecodebrowser.com/net-tools/1.60/statistics_8c_source.html
Дуг Витале предоставляет полезное руководство для поиска эквивалентов iproute2 более старых команд (он не поддерживается и немного неполон, он не содержит ссылок на то,
nstat
что было частью пакета iproute2, начиная с версии ядра 2.6.x 2004 года ).нетто-инструменты живут однако, и вы должны быть в состоянии найти пакет для вашего дистрибутива (или скомпилировать его самостоятельно).
источник
В настоящее время 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
получить все соединения TCPss -au
получить все соединения udpss -nt
все tcp без имени хостаss -ltn
прослушивание tcp без разрешения хостаss -ltp
прослушивание tcp с PID и именемss -s
печатает статистикуss -tn -o
TCP-соединение с хостом домена и таймер поддержки активностиss -tl4
ip4 соединенияисточник
ss -s
не предоставляет данные, которыеnetstat -s
предоставляют. Это также содержит дезинформацию:/proc
это интерфейс ядра для этого , и это точно , какss
Получает много данных:strace -e trace=file,read /sbin/ss -s
.ss -s
являются поверхностными по сравнению с теми, которые предоставляет netstat" (означает по сравнению сnetstat -s
). И это действительно правда: например, из ss -s вы ничего не можете знать о ретрансляциях TCP.Вы можете проверить содержимое
/proc/net/netstat
:Не самый дружелюбный формат, но вы поняли идею.
Не уверен, что он на самом деле содержит конкретные предметы, которые вы ищете, но они могут быть доступны в другом месте в
/proc/net
.источник
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
/proc/net/snmp
содержит большую часть данных и/proc/net/netstat
содержит остальные. К сожалению, вам нужно прочитать исходный код net-tools,statistics.c
чтобы определить все сопоставления имен, хотя большинство из них довольно очевидны.