2012-06-05 4 views
6

나는 Scapy를 사용하여 TTL 값을 변경하는 덤프 된 패킷을 재생합니다. 나는 TTL = 1로도 매우 이상한 결과를 얻었습니다.모든 ICMP 시간 초과 메시지가 표시되지 않는 이유는 무엇입니까?

테스트 시간을 서로 다르게하면 ICMP 시간 초과 메시지로 응답 한 패킷의 대략 40 %에서 95 %까지 얻을 수 있습니다. 그러면 답이없는 패킷을 재귀 적으로 재생하고 매번 응답 패킷의 비율을 이전과 같거나 더 늘릴 수 있습니다.

왜 그럴까요?

나는 서로 0.1 초 간격으로 패킷을 보냈습니다. 괜찮을거야. 그렇지? 시간 초과 값은 10 초이며 매우 보수적이어야합니다.

여기에 무슨 문제가 있습니까?

답변

5

본질적으로 주어진 시간 내에 도달 할 수없는 호스트에 대해서만 테스트 할 수 있습니다. 하나의 가능한 이유 : 많은 라우터가 ICMP 메시지 속도를 제한합니다.

다른 것을하기 전에 호스트에 ping 성공 여부를 테스트하는 것이 훨씬 좋습니다. 이 방법을 통해 도달 가능성을 긍정적으로 확인할 수 있습니다. 단점은 기본적으로 MS Windows 블록 핑입니다.

처음으로 ping을 사용할 수 없으면 프로브 사이의 시간을 늘리거나 ICMP 메시지를 반환하는 라우터에서 ICMP 도달 할 수없는 속도를 올려야합니다.

편집 : 트래픽을 처리 할 수 ​​scapy의 능력에 대한 벽을 치는 것 같은 의견을 바탕으로

, 그것은 보인다. 나는 백그라운드에서 트래픽을 받기 위해 scapy와 함께 보내고 tcpdump을 산란하여 과거에 처리량을 향상 시켰습니다.

+0

ICMP 속도 제한도 역시 추측 이었지만, 오늘은 패킷 간 간격을 5 초로 다시 보내려고했습니다. 그리고 적어도 6 ~ 7 개의 패킷에 대해 회신을받지 못했습니다. 내 50 (작은 테스트). Scapy에서'sr' 함수를 사용하고 있습니다. 그래서 한 번에 하나의 패킷을 전달한 다음 1 초 동안 일시 중지한다고 생각했습니다. 자, 이번에는 * 모든 단일 패킷이 응답하게됩니다. 나는'sr'의 구현에 문제가 있다고 생각합니다. –

+1

나는'scapy'와 비슷한 이슈를 보았습니다. 트래픽을 보내고 받기 위해 개가 느립니다. 한 프로젝트에서 필자는'.pcap' 파일에 쓴 다음'scapy'에서 파일을 구문 분석하여 올바른 응답을 받았는지 확인하기 위해'tcpdump'를 백그라운드 프로세스로 사용하기 시작했습니다. –

+0

나는 본다. scapy의'sr' 함수에 대한 대안을 알고 있습니까? 정말 수정 된 TTL 값을 가진 패킷을 보내고 해당 ICMP 메시지와 쌍을 이루기 만하면됩니다. 그것은 Scapy에서/so/simple을 보았지만, 각 패킷에 대해'sr'을 호출하는 데는 시간이 걸립니다. –

관련 문제