“netstat -s”에 대한 대안


23

netstat -s 수신 된 TCP 재설정 메시지 수 또는 전송 된 ICMP "에코 요청"메시지 수 또는 누락 된 경로로 인해 손실 된 패킷 수와 같은 매우 상세한 프로토콜 통계를 많이 인쇄합니다.

netstat요즘 리눅스 에서 더 이상 사용되지 않는 것으로 간주 되면 대안이 있습니까?

에서 제공 한 통계는에서 제공 한 통계 ss -s와 비교하여 피상적 netstat입니다.


tcpdump도 같은 요구를 충족시키는 것 같습니다
Thomas Dickey

4
netstat더 이상 사용되지 않습니다. 사용하십시오 ss.
mikeserv

@ThomasDickey를 tcpdump사용하면 실시간 트래픽을 캡처 할 수 있지만 통계는 netstat -s표시 되지 않습니다 .
Martin

1
플랫폼을 지정하면 유용 할 것입니다. sysctl출력 또는 다양한 /proc/net/*노드 의 내용 을 검사 할 수 있습니다 .
jcaron

답변:


16

netstat정말 많은 "그물 도구"패키지입니다 (포함하지만 실제로 많은 배포판에 의해 사용되지 않습니다 ifconfig, route그리고 arp은 "iproute2를"패키지에 찬성 중지되었습니다 그). iproute2최신 Linux 네트워킹 기능과 함께 발전 했지만 기존 유틸리티는 그렇지 않았습니다.

원하는 iproute2에 해당하는 것은 거의 알려지지 않았지만 약간 다른 형식이지만 카운터를 nstat제공합니다 netstat -s.

  • 원시 카운터 이름 /proc이 사용되며 각 클래스 앞에 접두사가 붙습니다 ( "Udp", "Tcp", "TcpExt"등).
  • netstat의 긴 (및 현지화 된) 설명을 사용할 수 없습니다
  • 기본적으로 0 값 카운터는 생략
  • 첫 번째 및 두 번째 열의 이름과 값으로 일관된 열 출력 사용
  • 세 번째 열은 백그라운드 nstat ( -d데몬 모드)를 시작한 경우 구성 가능한 시간 창에 대한 평균을 표시하고 그렇지 않은 경우 0.0을 표시합니다.

    예를 들어 nstat"Udp : InDatagrams"가 아닌 "UdpInDatagrams NNN"을 인쇄하고 "Udp : NNN packet received"의 자세한 netstat 버전이 아닙니다.

nstat또한 가장 가까운 해당 있도록하기 위해 증분이 아니라 절대 숫자보다는 원하는 가정 netstat -s입니다 /sbin/nstat -asz옵션이 어디에 -a사용 절대 카운터 -s, 기록 파일을 보관하지 않습니다 -z생략 제로 값 카운터를하지 않습니다.

ss의 "소켓"부분을 인계 netstat받았지만, 완전히 알아 낸 기능은 아닙니다. ( ss실제로 netstat많은 경우 보다 낫습니다 . 필터 표현식을 사용하는 기능과 옵션 tcp_diaginet_diagLinux 커널 모듈을 사용하여을 통해보다 커널 소켓 데이터에 직접 액세스 하는 선택적 기능이 있습니다 /proc.)

설명이 포함 된 이름에 대한 매핑을 확인해야하는 경우 net-tools 소스는 확실한 참조입니다. http://sourcecodebrowser.com/net-tools/1.60/statistics_8c_source.html

Doug Vitale은 이전 명령의 iproute2에 해당하는 명령을 찾는 데 유용한 안내서 를 제공 합니다 (유지되지 않고 약간 불완전하며 2004 년 커널 2.6.x 이후로nstat iproute2 패키지 에 포함 된 참조는 생략합니다 ).

net-tools 는 계속 사용 되므로 배포 할 패키지를 찾거나 직접 컴파일해야합니다.


23

NETSTAT는 현재 더 이상 사용되지 않는 것으로 간주되며 arp, ifconfig, iptunnel, nameif netstat, 및 route와 같은 net-tools에 포함 된 다른 프로그램도 있습니다 .

이러한 여러 유틸리티가 제공하는 기능은 주로 새로운 명령 을 사용하여 새로운 iproute2 제품군 에서 재생성 및 개선되었습니다 ip.

더 이상 사용되지 않는 명령 및 대체 예 :

arp => ip n (ip 이웃)

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

iptunnel => IP 터널

iwconfig => iw

nameif => ip 링크, ifrename

netstat => ss, ip 라우트 (netstat-r의 경우), ip -s 링크 (netstat -i의 경우), ip maddr (netstat-g의 경우)

netstat명령은 다양한 / proc 파일을 읽어 정보를 수집합니다. 그러나이 방법은 표시 할 연결이 많을 때 약해집니다. 속도가 느려집니다. 이 ss명령은 커널 공간에서 직접 정보를 가져옵니다. ss명령 과 함께 사용되는 옵션 은 netstat와 매우 유사하여 쉽게 교체 할 수 있습니다.

에 의해 제공되는 통계 ss피상적 이지만 더 나은 대안 으로 간주 됩니다.netstat

예 :

모든 연결을 얻으십시오 : ss | less

ss -t 청취 모드가 아닌 TCP 연결 가져 오기 (서버 프로그램)

ss -u 청취 모드가 아닌 udp 연결 얻기

ss -x 유닉스 소켓 파이프 연결 얻기

ss -ta 모든 TCP 연결을 얻으십시오

ss -au 모든 UDP 연결을 얻으십시오

ss -nt 호스트 이름이없는 모든 TCP

ss -ltn 호스트 확인없이 tcp 듣기

ss -ltp PID와 이름으로 tcp 듣기

ss -s 통계를 인쇄합니다

ss -tn -o 도메인 호스트와의 TCP 연결 및 연결 유지 타이머 표시

ss -tl4 ip4 연결


4
이것은 질문에 대답하지 않으며, OP ss -s 는 제공하는 데이터를 netstat -s제공 하지 않는 것이 올바르게 지적 합니다. 여기에는 잘못된 정보 /proc 포함되어 있습니다. 커널 인터페이스이며이를 위해 ss많은 양의 데이터를 얻는 방법 strace -e trace=file,read /sbin/ss -s입니다.
mr.spuratic

1
OP는 전적으로 "ss는 피상적"이 아니라 " ss -snetstat에서 제공 한 것과 비교하여 피상적"이라고 말했다 netstat -s. 그리고 그것은 실제로 진실입니다. 예를 들어, ss -s에서 당신은 TCP 재전송에 대해 아무것도 알 수 없습니다.
kenichi

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.


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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.