Traceroute: 때때로 라우터가 응답하지 않고 사용자에게 시간 초과가 표시되는 경우가 있습니다.

Traceroute: 때때로 라우터가 응답하지 않고 사용자에게 시간 초과가 표시되는 경우가 있습니다.

저는 소규모 네트워크의 관리자이며 사용자들이 불평하는 문제를 조사하고 있습니다. 불만의 근본 원인은 다음과 같습니다 traceroute. 때때로 경로에 있는 라우터가 단순히 traceroute프로브에 응답하지 않고 사용자에게 시간 초과( *RTT 대신에 해당)가 표시되는 경우가 있습니다.

네트워크는 이더넷/무선으로 연결된 몇 개의 Linux 라우터로 구성됩니다. Linux 라우터 99% 유휴 상태, 링크 활용도 20mbit/s, 2000 패킷/s. 무선은 견고합니다. 경로를 따라 모든 라우터에 대한 PING은 10ms이며 물론 약간의 차이가 있습니다. 해당 호스트 중 하나에 대한 Flood PING은 패킷 손실 없이 몇 분 동안 실행됩니다(패킷 손실이 0임을 의미합니다). 네트워크를 통해 대용량 파일 다운로드: 평균 10.2MB/s.

옳은 traceroute다음과 같습니다:

# traceroute -nI 10.0.0.2
traceroute to 10.0.0.2 (10.0.0.2), 30 hops max, 60 byte packets
 1  192.168.0.1  3.919 ms  3.866 ms  4.117 ms
 2  10.41.13.1  4.149 ms  6.714 ms  6.707 ms
 3  10.41.1.11  8.475 ms  8.468 ms  8.705 ms
 4  10.0.0.2  8.697 ms  9.428 ms  9.707 ms

그만큼문제가 있는 traceroute다음과 같습니다:

# traceroute -nI 10.0.0.2
traceroute to 10.0.0.2 (10.0.0.2), 30 hops max, 60 byte packets
 1  192.168.0.1  3.190 ms  3.140 ms  3.128 ms
 2  10.41.13.1  3.119 ms  3.113 ms *
 3  10.41.1.11  3.697 ms *  3.683 ms
 4  10.0.0.2  4.531 ms  4.524 ms  5.171 ms
# traceroute -nI 10.0.0.2
traceroute to 10.0.0.2 (10.0.0.2), 30 hops max, 60 byte packets
 1  192.168.0.1  3.471 ms  3.405 ms  3.388 ms
 2  10.41.13.1  3.372 ms  3.359 ms  3.350 ms
 3  10.41.1.11  5.039 ms * *
 4  10.0.0.2  5.105 ms  5.484 ms  5.473 ms

나는 조금 조사한 결과 다음과 같이 작동한다는 tcpdump것을 알았습니다 .traceroute

  1. 처음에는 TTL이 1, 2, 3, 4, 5, 6인 일련의 ICMP 요청을 보냅니다. 각 TTL은 3번 전송됩니다. 18팩이에요 :)
  2. 모든 응답( )이 완료될 때까지 잠시 기다립니다 Time Exceeded.
  3. 모든 응답이 반환되면 결과를 표시합니다.
  4. ..또는 시간 초과를 기다린 후 별표가 표시된 응답이 누락된 결과를 표시합니다.

시간 초과의 원인은 라우터가 3개의 개별 요청을 모두 받았지만 때때로 응답하지 않고 ICMP 시간 초과를 보내지 않는다는 것입니다.

라우터에서 이 동작을 설정하는 몇 가지 설정이 있는 것 같습니다. 즉icmp_ratelimit,icmp_ratemask,icmp_msgs_per_sec그리고icmp_msgs_burst. 모든 것이 어떻게 든 설명되었습니다.kernel.org 문서에서. 그리고 여기에 내가 실패한 요점이 있습니다. 나는 traceroute항상 작업을 수행하기 위해 해당 변수의 값을 가지고 오지 않았습니다 .

모든 라우터에서 이것을 설정해 보았습니다.

  • icmp_ratelimit0(아무것도 제한하지 않음) 으로 설정
  • icmp_msgs_per_sec10000(충분히 높아야 함) 로 설정
  • icmp_msgs_burst5000(하이엔우트) 로 설정

도움이 되지 않았습니다. 동일한 동작과 무작위 시간 초과가 발생합니다. 나는 를 제한에서 icmp_ratemask제외하는 방법을 완전히 이해하지 못하기 때문에 을 건드리지 않았습니다 .Time Exceeded

마지막으로 질문은 다음과 같습니다.

  1. 이러한 유형의 문제에 대해 잘 알고 계시다면 traceroute어떻게 해결하셨나요?
  2. 위에서 언급한 커널 설정에 익숙하다면 "충분히 좋은" 값은 무엇입니까?
  3. 결함 없이 작업 할 수 있도록 메시지를 icmp_ratemask제한하지 않도록 수정하는 올바른 방법은 무엇입니까 ?Time Exceededtraceroute
  4. 그리고 추가 - 이러한(또는 관련) 설정을 변경할 때 보안 위반이 있습니까? 나는 DoS 공격을 받고 싶지 않으며 누구에게도 DDoS 공격의 소스가 되고 싶지 않습니다.

답변1

홉에 대한 제어 평면 정책의 일부로 ICMP 프로브는 대부분 무시됩니다. 측정항목 및 추세, 기록 데이터 측면에서 더 철저한 정보를 얻으려면 전용 온프레미스 흡연 인스턴스를 제안하겠습니다.

관련 정보