alternatif untuk "netstat -s"

23

netstat -s mencetak banyak statistik protokol yang sangat terperinci seperti jumlah pesan reset TCP yang diterima atau jumlah ICMP "echo request" pesan yang dikirim atau jumlah paket turun karena rute yang hilang.

Ketika di Linux netstatdianggap usang saat ini, lalu apakah ada alternatif lain?

Statistik yang disediakan oleh ss -sdangkal dibandingkan dengan yang disediakan oleh netstat.

Martin
sumber
tcpdump tampaknya memenuhi kebutuhan yang sama
Thomas Dickey
4
netstatsudah ditinggalkan. Gunakan ss.
mikeserv
@ThomasDickey tcpdumpmemungkinkan seseorang untuk menangkap lalu lintas langsung, tetapi tidak menyimpan statistik dengan cara yang netstat -sditunjukkan.
Martin
1
Menentukan platform mungkin akan bermanfaat. Anda mungkin ingin memeriksa sysctloutput atau konten dari berbagai /proc/net/*node.
jcaron

Jawaban:

16

netstatmemang sudah ditinggalkan oleh banyak distribusi, meskipun itu benar-benar banyak dari paket "net-tools" (termasuk ifconfig, routedanarp ) yang telah ditinggalkan demi paket "iproute2". iproute2 telah berkembang bersama dengan fitur jaringan Linux terbaru , dan utilitas tradisional belum.

Setara iproute2 yang Anda inginkan sedikit yang diketahui nstat , ini menyediakan netstat -spenghitung, meskipun dalam bentuk yang sedikit berbeda:

  • nama penghitung mentah dari /procdigunakan, masing-masing diawali dengan kelasnya ("Udp", "Tcp", "TcpExt" dll.)
  • deskripsi panjang netstat (dan mungkin dilokalkan) tidak tersedia
  • penghitung bernilai nol dihilangkan secara default
  • menggunakan output columnar yang konsisten dengan nama dan nilai di kolom pertama dan kedua
  • kolom ketiga menunjukkan rata-rata dari jendela waktu yang dapat dikonfigurasi jika Anda telah memulai latar belakang nstat ( -dmode daemon), atau 0,0 jika tidak

    misalnya nstatmencetak "UdpInDatagrams NNN" bukan "Udp: InDatagrams", dan bukan versi verbose netstat dari "Udp: NNN paket yang diterima".

nstatjuga mengasumsikan Anda menginginkan angka inkremental daripada angka absolut, jadi yang paling mendekati netstat -sadalah di /sbin/nstat -aszmana opsi -amenggunakan penghitung absolut, -sjangan menyimpan file riwayat, -zjangan hilangkan penghitung bernilai nol.

ssmengambil alih bagian "soket" dari netstat, tetapi tidak fungsi lengkapnya seperti yang Anda ketahui. ( sssebenarnya lebih baik daripada netstatdalam banyak kasus, dua yang spesifik adalah kemampuan untuk menggunakan ekspresi filter dan kemampuan opsional untuk menggunakan tcp_diagdan inet_diagmodul kernel Linux untuk mengakses data soket kernel lebih langsung daripada melalui /proc.)

Jika Anda perlu mengkonfirmasi pemetaan untuk nama deskriptif, sumber net-tools adalah referensi definitif: http://sourcecodebrowser.com/net-tools/1.60/statistics_8c_source.html

Doug Vitale menyediakan panduan yang berguna untuk menemukan setara iproute2 dari perintah yang lebih lama (itu tidak terawat dan sedikit tidak lengkap, itu menghilangkan referensi nstatyang telah menjadi bagian dari paket iproute2 sejak setidaknya 2004 kernel 2.6.x waktu).

Net-tools tetap hidup , dan Anda harus dapat menemukan paket untuk distribusi Anda (atau mengompilasinya sendiri).

mr.spuratic
sumber
23

NETSTAT dianggap usang saat ini dan program lain yang termasuk dalam alat-net seperti arp, ifconfig, iptunnel, nameif netstat, dan rute.

Fungsionalitas yang disediakan oleh beberapa utilitas ini telah direproduksi dan ditingkatkan di iproute2 suite baru, terutama dengan menggunakan ipperintah barunya .

Contoh untuk perintah yang sudah usang dan penggantiannya:

arp => ip n (tetangga ip)

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

iptunnel => ip tunnel

iwconfig => iw

nameif => tautan ip, ifrename

netstat => ss, rute ip (untuk netstat-r), tautan ip -s (untuk netstat -i), ip maddr (untuk netstat-g)

The netstatperintah membaca berbagai file / proc untuk mengumpulkan informasi. Namun pendekatan ini jatuh lemah ketika ada banyak koneksi untuk ditampilkan. Ini membuatnya lebih lambat. The ssperintah mendapatkan informasi secara langsung dari ruang kernel. Opsi yang digunakan dengan ssperintah sangat mirip dengan netstat sehingga mudah diganti.

Statistik yang disediakan oleh ssyang dangkal tetapi dianggap alternatif yang lebih baik untuknetstat

Contoh:

dapatkan semua koneksi: ss | less

ss -t dapatkan koneksi tcp tidak dalam mode mendengarkan (program server)

ss -u dapatkan koneksi udp tidak dalam mode mendengarkan

ss -x dapatkan koneksi pipa soket unix

ss -ta dapatkan semua koneksi tcp

ss -au dapatkan semua koneksi udp

ss -nt semua tcp tanpa nama host

ss -ltn mendengarkan tcp tanpa resolusi host

ss -ltp mendengarkan tcp dengan PID dan nama

ss -s mencetak statstics

ss -tn -o koneksi tcp dengan host domain dan tampilkan timer keepalive

ss -tl4 koneksi ip4

GAD3R
sumber
4
Ini tidak menjawab pertanyaan, OP menunjukkan dengan benar bahwa ss -s tidak menyediakan data yang netstat -smenyediakan. Ini juga mengandung informasi yang salah: /proc adalah interface kernel untuk ini dan itulah bagaimana ssRaih banyak data: strace -e trace=file,read /sbin/ss -s.
mr.spuratic
1
OP mengatakan bukan sepenuhnya "ss adalah dangkal", tetapi " ss -sdangkal dibandingkan dengan yang disediakan oleh netstat" (berarti membandingkan dengan netstat -s). Dan itu benar-benar kebenaran: misalnya, dari ss -s Anda tidak dapat mengetahui apa-apa tentang Retransmisi TCP.
kenichi
4

Anda mungkin ingin memeriksa isi /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

Bukan format yang paling ramah, tetapi Anda mendapatkan ide.

Tidak yakin itu benar-benar berisi item spesifik yang Anda cari, tetapi mungkin tersedia di tempat lain di /proc/net.

jcaron
sumber
5
inilah skrip (garis panjang tunggal) untuk memformat output: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/snmpberisi sebagian besar data dan /proc/net/netstatberisi sisanya. Sayangnya Anda harus membaca sumber net-toolsstatistics.c untuk menentukan semua pemetaan nama, meskipun sebagian besar cukup jelas.
mr.spuratic