최근 일부 네트워크 구성에 문제가 있어 해결하기가 까다로웠습니다.
이렇게 될 것 같네요많은어느 방향으로 차량이 지나갈 수 없는지 알면 진단이 더 쉽습니다. 요청 중 어느 것도 응답을 받지 못해서 ping
ping 요청 패킷이 통과되어 응답이 실패한 것인지, 아니면 요청 자체가 실패한 것인지 궁금합니다.
명확하게 말하면, 표준 유틸리티는 한 시스템에서 패킷을 보내고 동일한 시스템으로 응답 패킷을 다시 받는 것과 유사 ping
하고 이에 의존합니다. traceroute
응답이 돌아오지 않으면 초기 요청이 실패했는지, 해당 요청에 대한 응답이 차단되었는지, 아니면 응답이 전혀 전송되지 않았는지 여부를 알 수 없습니다. 구체적인 내용은 이렇습니다.”방향실패다'라고 분석하고 싶다.
들어오는 ICMP ping 요청을 모니터링할 수 있는 Linux용 공통 유틸리티가 있습니까?
답변1
tcpdump
이는 거의 모든 곳에서 수행할 수 있으며 사용할 수 있습니다.
tcpdump -n -i enp0s25 icmp
들어오고 나가는 모든 ICMP 패킷이 덤프됩니다 enp0s25
.
ICMP 에코 요청만 보기:
tcpdump -n -i enp0s25 "icmp[0] == 8"
( -n
패킷 보고가 지연되고 원치 않는 트래픽이 발생할 수 있는 DNS 조회를 피하세요.)
이를 통해 다른 시스템에서 패킷을 수신하고 있는지(다른 시스템에서 패킷을 수신할 수 있음 ping
) 확인할 수 있으므로 문제가 반환 경로에 있는지 아니면 단순히 도착하지 않는지 확인할 수 있습니다.
답변2
@Stephen Kitt의 제안 외에도 tcpdump
한 방향으로만 패킷을 필터링할 수도 있습니다.
# see if the icmp request exits the interface
tcpdump -nQ out 'icmp'
tshark
루트로 실행할 필요 없이 사용할 수 있는 또 다른 유용한 도구는 다음과 같습니다.
tshark -nf "icmp && (icmp[icmptype] == icmp-echo)"
별도의 패킷 캡처로 출력을 구문 분석할 수 있습니다.
netstat -s
각 네트워크 소켓에 대한 통계를 인쇄합니다. 예는 다음과 같습니다.
netstat -s | grep -Eo "^[[:space:]]+[[:digit:]]+ ICMP messages sent$"; 1>/dev/null ping -c1 -w1 host; !-1
28 ICMP messages sent
30 ICMP messages sent
답변3
2제곱미터당신에게 적합할 수도 있습니다. 배포판의 패키지 관리자를 통해 사용할 수 있습니다.
하지만 만약에아니요교통 정체가 발생하고 있으며 귀하가 아직 모르는 내용을 알려줄 수 있을지 모르겠습니다.
사이트를 인용하려면:
2ping은 양방향 핑 유틸리티입니다. 3방향 ping(TCP SYN, SYN/ACK, ACK와 유사)과 2ping 수신기와 2ping 클라이언트 간의 사후 상태 비교를 사용하여 패킷 손실이 발생한 방향을 확인합니다.
user@alice:~$ 2ping test.2ping.net
2PING test.2ping.net (209.177.154.210): 64 to 512 bytes of data.
Lost outbound packet to 209.177.154.210: ping_seq=1
64 bytes from 209.177.154.210: ping_seq=2 time=10.557 ms
Lost inbound packet from 209.177.154.210: ping_seq=3
64 bytes from 209.177.154.210: ping_seq=4 time=10.527 ms
^C
--- test.2ping.net 2ping statistics ---
4 pings transmitted, 2 received, 50% ping loss, time 4008ms
1 outbound ping losses (25%), 1 inbound (25%), 0 undetermined (0%)
rtt min/avg/max = 10.527/10.542/10.557 ms
6 raw packets transmitted, 3 received
답변4
읽다 man traceroute
. ICMP Ping에서 작은 값을 사용하여 TTL
소스에서 대상까지의 경로에 있는 모든 노드에서 ICMP 응답을 얻습니다(귀하의 경우에는 소스에서 야생까지와 비슷하지만 무엇이든).
이 tracepath
유틸리티( sudo apt install tracepath;man tracepath
)는 동일한 작은 TTL 트릭을 사용하지만 TCP/IP
특정 포트 수준에서 사용됩니다.