저는 소규모 네트워크의 관리자이며 사용자들이 불평하는 문제를 조사하고 있습니다. 불만의 근본 원인은 다음과 같습니다 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
- 처음에는 TTL이 1, 2, 3, 4, 5, 6인 일련의 ICMP 요청을 보냅니다. 각 TTL은 3번 전송됩니다. 18팩이에요 :)
- 모든 응답( )이 완료될 때까지 잠시 기다립니다
Time Exceeded
. - 모든 응답이 반환되면 결과를 표시합니다.
- ..또는 시간 초과를 기다린 후 별표가 표시된 응답이 누락된 결과를 표시합니다.
시간 초과의 원인은 라우터가 3개의 개별 요청을 모두 받았지만 때때로 응답하지 않고 ICMP 시간 초과를 보내지 않는다는 것입니다.
라우터에서 이 동작을 설정하는 몇 가지 설정이 있는 것 같습니다. 즉icmp_ratelimit,icmp_ratemask,icmp_msgs_per_sec그리고icmp_msgs_burst. 모든 것이 어떻게 든 설명되었습니다.kernel.org 문서에서. 그리고 여기에 내가 실패한 요점이 있습니다. 나는 traceroute
항상 작업을 수행하기 위해 해당 변수의 값을 가지고 오지 않았습니다 .
모든 라우터에서 이것을 설정해 보았습니다.
icmp_ratelimit
0
(아무것도 제한하지 않음) 으로 설정icmp_msgs_per_sec
10000
(충분히 높아야 함) 로 설정icmp_msgs_burst
5000
(하이엔우트) 로 설정
도움이 되지 않았습니다. 동일한 동작과 무작위 시간 초과가 발생합니다. 나는 를 제한에서 icmp_ratemask
제외하는 방법을 완전히 이해하지 못하기 때문에 을 건드리지 않았습니다 .Time Exceeded
마지막으로 질문은 다음과 같습니다.
- 이러한 유형의 문제에 대해 잘 알고 계시다면
traceroute
어떻게 해결하셨나요? - 위에서 언급한 커널 설정에 익숙하다면 "충분히 좋은" 값은 무엇입니까?
- 결함 없이 작업 할 수 있도록 메시지를
icmp_ratemask
제한하지 않도록 수정하는 올바른 방법은 무엇입니까 ?Time Exceeded
traceroute
- 그리고 추가 - 이러한(또는 관련) 설정을 변경할 때 보안 위반이 있습니까? 나는 DoS 공격을 받고 싶지 않으며 누구에게도 DDoS 공격의 소스가 되고 싶지 않습니다.
답변1
홉에 대한 제어 평면 정책의 일부로 ICMP 프로브는 대부분 무시됩니다. 측정항목 및 추세, 기록 데이터 측면에서 더 철저한 정보를 얻으려면 전용 온프레미스 흡연 인스턴스를 제안하겠습니다.