thay thế cho mạng netstat -s


23

netstat -s in ra rất nhiều số liệu thống kê giao thức rất chi tiết như số lượng tin nhắn thiết lập lại TCP nhận được hoặc số tin nhắn "yêu cầu tiếng vang" ICMP được gửi hoặc số gói bị mất do thiếu tuyến.

Khi mà trong Linux netstatngày nay được coi là không dùng nữa, thì có một sự thay thế nào không?

Số liệu thống kê được cung cấp bởi ss -sbề ngoài so với những số liệu được cung cấp bởi netstat.


tcpdump dường như đáp ứng nhu cầu tương tự
Thomas Dickey

4
netstatbị phản đối Sử dụng ss.
mikeerv

@ThomasDickey tcpdumpcho phép một người nắm bắt lưu lượng truy cập trực tiếp, nhưng không lưu trữ số liệu thống kê theo cách netstat -shiển thị.
Martin

1
Chỉ định nền tảng có thể sẽ hữu ích. Bạn có thể muốn kiểm tra sysctlđầu ra hoặc nội dung của các /proc/net/*nút khác nhau .
jcaron

Câu trả lời:


16

netstatđã thực sự bị phản đối bởi nhiều bản phân phối, mặc dù nó thực sự phần lớn các gói "net-công cụ" (bao gồm ifconfig, routearp) đã được phản đối ủng hộ gói "iproute2". iproute2 đã phát triển cùng với các tính năng mạng Linux mới nhất và các tiện ích truyền thống thì không.

Tương đương iproute2 mà bạn muốn là ít được biết đến nstat, điều này cung cấp các netstat -sbộ đếm, mặc dù ở dạng hơi khác:

  • tên truy cập thô từ /procđược sử dụng, mỗi tiền tố với lớp của nó ("Udp", "Tcp", "TcpExt", v.v.)
  • Mô tả dài (và có thể nội địa hóa) của netstat không có sẵn
  • Bộ đếm giá trị 0 được bỏ qua theo mặc định
  • sử dụng đầu ra cột nhất quán với tên và giá trị trong cột thứ nhất và thứ hai
  • cột thứ ba hiển thị mức trung bình trên cửa sổ thời gian có thể định cấu hình nếu bạn đã bắt đầu một nền tảng ( -dchế độ trình nền) hoặc 0,0 nếu không

    ví dụ: nstatin "UdpInDatagrams NNN" chứ không phải "Udp: InDatagrams" và không phải là phiên bản netstat dài dòng của "gói tin Udp: NNN".

nstatcũng giả sử bạn muốn số gia tăng thay vì số tuyệt đối, do đó, tương đương gần nhất netstat -s/sbin/nstat -asznơi các tùy chọn được -asử dụng bộ đếm tuyệt đối, -skhông giữ tệp lịch sử, -zkhông bỏ qua bộ đếm giá trị 0.

sschiếm phần "ổ cắm" của netstat, nhưng không phải là chức năng hoàn chỉnh của nó như bạn đã tìm ra. ( ssthực sự tốt hơn netstattrong nhiều trường hợp, hai trường hợp cụ thể là khả năng sử dụng các biểu thức lọc và khả năng tùy chọn để sử dụng các mô-đun hạt nhân tcp_diaginet_diagLinux để truy cập dữ liệu ổ cắm nhân trực tiếp hơn thông qua /proc.)

Nếu bạn cần xác nhận ánh xạ cho các tên mô tả, nguồn công cụ mạng là tài liệu tham khảo chính xác: http://sourcecodebrowser.com/net-tools/1.60/statistic_8c_source.html

Doug Vitale cung cấp một hướng dẫn hữu ích để tìm các tương đương iproute2 của các lệnh cũ hơn (nó không được làm rõ và hơi không đầy đủ, nó bỏ qua bất kỳ tham chiếu nstatnào là một phần của gói iproute2 kể từ ít nhất là 2004 kernel 2.6.x).

tuy nhiên, các công cụ mạng vẫn tồn tại và bạn sẽ có thể tìm thấy một gói cho bản phân phối của mình (hoặc tự biên dịch nó).


23

NETSTAT được coi là không dùng nữa hiện nay và các chương trình khác có trong các công cụ mạng như arp, ifconfig, iptunnel, nameif netstatvà tuyến đường.

Các chức năng được cung cấp bởi một số các tiện ích này đã được sao chép và cải thiện trong bộ iproute2 mới , chủ yếu bằng cách sử dụng iplệnh mới của nó .

Ví dụ cho các lệnh không dùng nữa và thay thế chúng:

arp => ip n (hàng xóm ip)

ifconfig => ip a (ip addr), liên kết ip, ip -s (ip -stats)

iptunnel => đường hầm ip

iwconfig => iw

tênif => liên kết ip, ifrename

netstat => ss, tuyến ip (đối với netstat-r), liên kết ip -s (đối với netstat -i), ip maddr (đối với netstat-g)

Các netstatlệnh đọc file / proc khác nhau để thu thập thông tin. Tuy nhiên, cách tiếp cận này trở nên yếu khi có rất nhiều kết nối để hiển thị. Điều này làm cho nó chậm hơn. Các sslệnh nhận thông tin trực tiếp từ vũ trụ hạt nhân. Các tùy chọn được sử dụng với các sslệnh rất giống với netstat làm cho nó dễ dàng thay thế.

Thống kê cung cấp bởi ssrất hời hợt nhưng nó được coi là sự thay thế tốt hơn đểnetstat

Ví dụ:

có được tất cả các kết nối: ss | less

ss -t nhận kết nối tcp không ở chế độ nghe (chương trình máy chủ)

ss -u nhận kết nối udp không ở chế độ nghe

ss -x có được kết nối đường ống ổ cắm unix

ss -ta nhận được tất cả các kết nối tcp

ss -au nhận được tất cả các kết nối udp

ss -nt tất cả tcp không có tên máy chủ

ss -ltn nghe tcp mà không cần giải quyết máy chủ

ss -ltp nghe tcp với PID và tên

ss -s in tượng

ss -tn -o kết nối tcp với máy chủ tên miền và hiển thị đồng hồ bấm giờ

ss -tl4 kết nối ip4


4
Điều này không trả lời câu hỏi, OP chỉ ra chính xác ss -s không cung cấp dữ liệu netstat -scung cấp. Điều này cũng chứa thông tin sai: /proc giao diện kernel cho điều này và đó chính xác là cách ssthu được nhiều dữ liệu : strace -e trace=file,read /sbin/ss -s.
mr.spuratic

1
OP cho biết không hoàn toàn "ss là hời hợt", nhưng " ss -shời hợt so với những gì được cung cấp bởi netstat" (có nghĩa là so sánh với netstat -s). Và đó thực sự là sự thật: ví dụ: từ ss -s bạn không thể biết gì về Truyền lại TCP.
kenichi

4

Bạn có thể muốn kiểm tra nội dung của /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

Không phải là định dạng thân thiện nhất, nhưng bạn có được ý tưởng.

Không chắc chắn rằng nó thực sự chứa các mặt hàng cụ thể mà bạn đang tìm kiếm, nhưng chúng có thể có sẵn ở nơi khác /proc/net.


5
đây là tập lệnh (một dòng dài) để định dạng đầu ra: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 15/2/2016

1
/proc/net/snmpchứa hầu hết các dữ liệu và /proc/net/netstatchứa phần còn lại Đáng buồn thay, bạn sẽ cần phải đọc nguồn công cụ mạngstatistics.c để xác định tất cả các ánh xạ tên, mặc dù hầu hết là khá rõ ràng.
mr.spuratic
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.