alternatywa dla „netstat -s”

23

netstat -s drukuje wiele bardzo szczegółowych statystyk protokołu, takich jak liczba odebranych komunikatów resetowania TCP lub liczba wysłanych komunikatów ICMP „żądanie echa” lub liczba pakietów odrzuconych z powodu braku trasy.

Kiedy w Linuksie netstatjest obecnie uważany za przestarzały, to czy istnieje alternatywa?

Statystyki dostarczone przez ss -ssą powierzchowne w porównaniu do tych dostarczonych przez netstat.

Jaskółka oknówka
źródło
tcpdump wydaje się spełniać tę samą potrzebę
Thomas Dickey
4
netstatjest przestarzałe. Zastosowanie ss.
mikeserv
@ThomasDickey tcpdumppozwala przechwytywać ruch na żywo, ale nie przechowuje statystyk w sposób netstat -spokazany.
Martin
1
Określenie platformy prawdopodobnie byłoby przydatne. Możesz sprawdzić sysctldane wyjściowe lub zawartość różnych /proc/net/*węzłów.
jcaron

Odpowiedzi:

16

netstatrzeczywiście została zaniechana przez wielu dystrybucji, choć to naprawdę dużo pakietu (w tym „net-tools” ifconfig,route a arp) że została zaniechana na korzyść „iproute2” pakietu. iproute2 ewoluował wraz z najnowszymi funkcjami sieciowymi Linuksa , a tradycyjne narzędzia nie.

Odpowiednik iproute2, który chcesz, jest mało znany nstat, zapewnia netstat -sliczniki, choć w nieco innej formie:

  • /procużywane są surowe nazwy liczników, z których każda poprzedzona jest swoją klasą („Udp”, „Tcp”, „TcpExt” itp.)
  • Długie (i prawdopodobnie zlokalizowane) opisy netstat nie są dostępne
  • liczniki wartości zerowej domyślnie pomijane
  • przy użyciu spójnego wyniku kolumnowego z nazwą i wartością w pierwszej i drugiej kolumnie
  • trzecia kolumna pokazuje średnią z konfigurowalnego okna czasowego, jeśli uruchomiłeś nstat w tle (-d tryb demona) lub 0.0, jeśli nie

    np. nstatwypisuje „UdpInDatagrams NNN”, a nie „Udp: InDatagrams”, a nie pełną wersję „Udp: NNN otrzymanych pakietów”.

nstatzakłada również, że chcesz raczej liczb przyrostowych niż bezwzględnych, więc najbliższym odpowiednikiem netstat -sjest użycie /sbin/nstat -aszopcji -aliczników bezwzględnych, -snie przechowuj pliku historii, -znie pomijaj liczników zerowych.

ssprzejmuje części „gniazdowe” netstat, ale nie jest to pełna funkcja, jak się dowiedziałeś. ( ssjest faktycznie lepszy niż netstatw wielu przypadkach, dwie konkretne to zdolność do używania wyrażeń filtrujących oraz opcjonalna możliwość użycia modułów jądra tcp_diagi inet_diagLinuxa do uzyskania dostępu do danych gniazda jądra bardziej bezpośrednio niż przez /proc.)

W przypadku konieczności potwierdzenia odwzorowania nazw opisowych ostatecznym źródłem jest net-tools: http://sourcecodebrowser.com/net-tools/1.60/statistics_8c_source.html

Doug Vitale zapewnia przydatny przewodnik do znajdowania odpowiedników iproute2 starszych poleceń (jest nieobsługiwany i nieco niekompletny, pomija wszelkie odniesienia, nstatktóre były częścią pakietu iproute2 od czasu jądra co najmniej 2004.x).

net-tools żyje jednak, i powinieneś być w stanie znaleźć pakiet dla twojej dystrybucji (lub skompilować go samodzielnie).

pan. spuratic
źródło
23

NETSTAT jest obecnie uważany za przestarzały, a inne programy wchodzące w skład narzędzi sieciowych, takie jak arp, ifconfig, iptunnel, nameif netstati route.

Funkcjonalność zapewniana przez kilka z tych narzędzi została odtworzona i ulepszona w nowym pakiecie iproute2 , głównie za pomocą nowej ipkomendy.

Przykłady przestarzałych poleceń i ich zastępowania:

arp => ip n (sąsiad ip)

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

iptunnel => tunel ip

iwconfig => iw

nameif => ip link, ifrename

netstat => ss, ip route (dla netstat-r), ip -s link (dla netstat -i), ip maddr (dla netstat-g)

netstatKomenda czyta różnych plików / proc do zbierania informacji. Jednak to podejście słabnie, gdy istnieje wiele połączeń do wyświetlenia. To sprawia, że ​​jest wolniejszy. ssPolecenia dostaje swoje informacje bezpośrednio z przestrzeni jądra. Opcje używane zss poleceniami są bardzo podobne do netstat, dzięki czemu jest łatwym zamiennikiem.

Podane statystyki sspowierzchowne, ale uważa się je za lepszą alternatywę dlanetstat

Przykłady:

uzyskaj wszystkie połączenia: ss | less

ss -t odbieraj połączenia TCP nie w trybie nasłuchiwania (programy serwera)

ss -u uzyskać połączenia udp nie w trybie nasłuchiwania

ss -x uzyskać połączenia rurowe z gniazdem unix

ss -ta uzyskaj wszystkie połączenia TCP

ss -au uzyskaj wszystkie połączenia udp

ss -nt wszystkie tcp bez nazwy hosta

ss -ltn słuchanie tcp bez rozdzielczości hosta

ss -ltp słuchanie tcp z PID i nazwą

ss -s drukuje statystyki

ss -tn -o Połączenie TCP z usługodawcą hostingowym domeny i pokaż zegar utrzymywania aktywności

ss -tl4 połączenia ip4

GAD3R
źródło
4
To nie odpowiada na pytanie, OP wskazuje poprawnie, że ss -s nie dostarcza danych, które netstat -sdostarcza. Zawiera również dezinformacji: /proc jest interfejs jądra do tego i to jest dokładnie jak ssuzyskiwanych przez większość danych: strace -e trace=file,read /sbin/ss -s.
mr.spuratic
1
OP stwierdził, że nie do końca „ss są powierzchowne”, ale „ ss -ssą powierzchowne w porównaniu do tych dostarczonych przez netstat” (oznacza porównanie z netstat -s). I to jest naprawdę prawda: np. Z ss-s nic nie wiesz o retransmisjach TCP.
kenichi,
4

Możesz sprawdzić zawartość /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

Nie jest to najbardziej przyjazny format, ale masz pomysł.

Nie jestem pewien, czy faktycznie zawiera określone elementy, których szukasz, ale mogą być dostępne w innym miejscu /proc/net.

Jcaron
źródło
5
oto skrypt (pojedynczej długiej linii) do sformatowania danych wyjściowych: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
2016
1
/proc/net/snmpzawiera większość danych, a /proc/net/netstatresztę zawiera. Niestety musisz przeczytać źródło narzędzi sieciowych,statistics.c aby określić wszystkie odwzorowania nazw, choć większość z nich jest dość oczywista.
mr.spuratic