В течение нескольких дней я начал делать интересное наблюдение за машиной, которая периодически не отвечает на пинг ICMP, в то время как она все еще отвечает на трассировку трассировки ICMP (в частности, установленную с помощью параметра -I).
Насколько я знаю, оба будут использовать эхо-запрос ICMP, поэтому я не ожидал никакой разницы.
У кого-нибудь есть объяснение этому?
Скорее всего понг из пинг блокируется / отбрасывается, а трассировка использует сообщение об ошибке от узла / перехода для определения маршрута. Traceroute не является стандартным инструментом, так как использует уловку для получения информации. Хитрость заключается в том, чтобы манипулировать TTL, чтобы прыжок ответил ICMP ошибка (превышен ICMP TTL), поэтому это возможно.
Я мог бы дать вам список всего поля заголовка в заголовок IP. И для каждого поля заголовка я мог бы объяснить, что ping и traceroute могут использовать разные значения для этого поля. И что другой конец соединения может фильтровать трафик на основе значения этого поля заголовка.
Однако это был бы не очень полезный ответ. Вместо этого я предлагаю вам проверить поля заголовка исходящего трафика с помощью инструмента, предназначенного для этой цели. Ты можешь использовать tcpdump
для выполнения первоначального анализа и сохранения трафика для дальнейшего исследования. Для более тщательной проверки я считаю Wireshark более подходящим инструментом, он может проверять трафик, ранее захваченный с помощью tcpdump, он также может захватывать трафик непосредственно из сетевого интерфейса, чтобы вы могли проверять его в режиме реального времени.
Наиболее очевидные различия, на которые следует обратить внимание, - это длина и предел прыжка. При использовании traceroute принимающая сторона будет получать пакеты с различным ограничением переходов, и пока он отвечает на один из них, вы увидите ответ. При пинге он получит только определенный лимит переходов.
Вам также необходимо обратить внимание на то, действительно ли получены какие-либо ответы. На неправильно настроенной цели вы можете увидеть, что пакеты отбрасываются без уведомления, но правильно настроенная цель может отправить вам сообщение об ошибке, указывающее, почему она не обрабатывает запрос. Возможно, что нечетный ответ будет отброшен как неожиданный одной программой при отображении другой.
Некоторые поля заголовка могут быть изменены с помощью флагов командной строки как для ping, так и для traceroute. Если вы подозреваете, что конкретное поле заголовка вызывает другое поведение, поищите флаги командной строки, чтобы изменить это конкретное поле заголовка, чтобы подтвердить свое подозрение.