Icmp что это в роутере
Протокол ICMP описал в RFC 792 от 1981 года Jon Postel (с дополнениями в RFC 950). ICMP является стандартом Интернета (входит в стандарт STD 5 вместе с IP). Хотя формально протокол использует IP (ICMP-пакеты инкапсулируются в IP пакеты), он является неотъемлемой частью IP и обязателен при реализации стека TCP/IP. Текущая версия ICMP для IPv4 называется ICMPv4. В IPv6 существует аналогичный протокол ICMPv6.
Поле типа может иметь следующие значения:
Эхо-протокол
Во многих операционных системах используется утилита ping, которая предназначена для тестирования достижимости узлов. Эта утилита обычно посылает серию эхо-запросов к тестируемому узлу и предоставляет пользователю статистику об утерянных эхо-ответах и среднем времени реакции сети на запросы.
Код | Причина | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0 | Сеть недостижима | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1 | Узел недостижим | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 | Протокол недостижим | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3 | Порт недостижим | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4 | Требуется фрагментация, а бит DF установлен | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5 | Ошибка в маршруте, заданном источником | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
6 | Сеть назначения неизвестна | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
7 | Узел назначения неизвестен | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
8 | Узел-источник изолирован | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
9 | Взаимодействие с сетью назначения административно запрещено | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
10 | Взаимодействие с узлом назначения административно запрещено | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
11 | Сеть недостижима для заданного класса сервиса | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
12 | Узел недостижим для заданного класса сервиса |
Узел или сеть назначения могут быть недостижимы из-за временной неработоспособности аппаратуры, из-за того, что отправитель указал неверный адрес назначения, а также из-за того, что маршрутизатор не имеет данных о маршруте к сети назначения.
Недостижимость протокола и порта означают отсутствие реализации какого-либо протокола прикладного уровня в узле назначения или же отсутствие открытого порта протоколов UDP или TCP в узле назначения.
Ошибка фрагментации возникает тогда, когда отправитель послал в сеть пакет с признаком DF, запрещающим фрагментацию, а маршрутизатор столкнулся с необходимостью передачи этого пакета в сеть со значением MTU меньшим, чем размер пакета.
Перенаправление маршрута
Маршрутные таблицы у компьютеров обычно являются статическими, так как конфигурируются администратором сети, а у маршрутизаторов – динамическими, формируемыми автоматически с помощью протоколов обмена маршрутной информации. Поэтому с течением времени при изменении топологии сети маршрутные таблицы компьютеров могут устаревать. Кроме того, эти таблицы обычно содержат минимум информации, например, только адреса нескольких маршрутизаторов.
Сам протокол находится на сетевом уровне, однако также частично выполняет функции транспортного уровня. Все ICMP пакеты инкапсулируются в IP пакеты
А вот и расположение протокола в модели OSI:
Какие функции транспортного уровня он выполняет?
Сообщает об ошибках, возникающие в сети, потому что протокол IP не предоставляет никакие механизмы по оповещению узлов в случае возникновения сетевых проблем. Поэтому данные функции и возложены на ICMP.
Но разве это не делает TCP и протоколы прикладного уровня?
TCP и протоколы прикладного уровня применяют данные механизмы в случаях, когда соединение уже установлено или на стадии установления. К тому же, если на сетевом уровне имеется проблема, то пакет никогда не дойдет до транспортного и прикладного уровней и соответственно “верхние” протоколы ничего не смогут сделать и даже ничего не будут знать.
Поясню на простом примере. Мы уже знаем как работает фрагментация пакетов. Теперь представим, что мы отправляем данные и устанавливаем флаг DF (Don’t fragment). На пути следования пакетов одному из узлов вдруг потребуется провести фрагментацию, но так как у нас установлен флаг DF, то узел не сможет обработать запрос и естественно не отправит пакет на транспортный уровень для дальнейшей обработки. Пакет будет уничтожен и если бы не ICMP, то узел-отправитель и дальше бы отправлял пакеты с запретом на фрагментацию, а пользователи бы не знали в чем проблема.
Поэтому, уничтожив пакет, узел-получатель формирует специальный ICMP ответ с указанием, что требуется фрагментация.
Из всего этого видно, что даже на сетевом уровне необходим механизм по контролю за ошибками.
А что произойдет, если сгенерированный ICMP пакет был потерян?
Ничего, повторно пакет высылаться не будет.
А как же выглядит сам заголовок ICMP пакета?
Заголовок состоит из 8 байт и выглядит следующим образом
Контрольная сумма - стандартная проверка пакета ICMP на наличие ошибок.
Данные - в зависимости от значений в полях Тип и Код передаются определенные данные.
С помощью ICMP можно также проверить доступность определенных узлов в сети или провести простое сетевое сканирование.
Достигается это с помощью простой техники. Узел-отправитель генерирует пакет Echo request (эхо запрос) и отправляет его определенному узлу-получателю. Узел-получатель, приняв пакет, ответит узлу-отправителю пакетом Echo reply (эхо ответ). Когда узел-отправитель получит ответ, то измерит задержку распространения пакетов в сети и возможные потери и отобразит результаты на экране. Реализуется это с помощью утилиты Ping, которая доступна на многих платформах (Windows, Linux)
Если пакеты не достигнут узла-получателя, то на экране узла-отправителя отобразится такой результата:
То есть это означает, что узел выключен или не подключен к сети?
Не совсем. Причин неуспешного пинга может быть несколько. Например, не работает маршрутизация, ICMP пакеты блокируются и так далее.
То есть Ping не дает стопроцентной гарантии того, что узел выключен.
На основе техники Echo request - Echo reply и строятся многие инструменты сетевой диагностики.
Другой полезный инструмент, работающи й на основе ICMP способен строить карту сети, то есть отмечает все промежуточные узлы, через которые прошел пакет. Таким способом можно проверить как работает сеть и каким путем следуют пакеты к узлу-получателю. Кроме того, при возникновении сетевых проблем данная утилита поможет найти узел, который возможно является причиной сетевой проблемы. Достигается это с помощью утилиты Traceroute (Linux) либо Tracert (Windows).
Вот как выглядит работы программы:
А как работает данная программа?
Вот как выглядит трафик в анализаторе Wireshark:
Иногда можно увидеть и такой трейс:
Это означает, что наш компьютер не получил никаких пакетов Time Exceeded, потому что маршрутизатору запрещено отправлять пакеты Time Exceeded. Сделано это в целях безопасности.
ICMP, который расшифровывается как Internet Control Message Protocol это протокол третьего уровня модели OSI , который используется для диагностики проблем со связностью в сети. Говоря простым языком, ICMP помогает определить может ли достичь пакет адреса назначения в установленные временные рамки. Обычно, ICMP “юзают" маршрутизаторы и устройства третьего уровня.
ДЛЯ ЧЕГО ИСПОЛЬЗУЕТСЯ ICMP?
Основная цель ICMP это отчетность об ошибках. При соединении двух девайсов в сети, если часть данных не доходит до адреса назначения, теряется или превышает допустимые таймауты - ICMP генерирует ошибки.
Второе, и, пожалуй, одно из самых популярных применений ICMP это утилиты ping и traceroute . Термин “пинговать" как - раз связан с протоколом ICMP и “пинговать" хост - означает отправлять ICMP пакеты с целью понять, отвечает ли на них целевое устройство.
ПРО ТРАССИРОВКУ
Так и с “трассировкой". Когда говорят “сделайте трассировку маршрута" это означает, что мы хотим увидеть полный маршрут между хостом, на котором выполняется трассировка до хоста назначения. Трассировка покажет каждый из маршрутизаторов на пути до цели и время обработки и прохождения каждого из участков маршрута. Кстати, такой маршрут называется “хопом". Часто говорят: если от узла отправления до узла назначения на пути встретиться 7 маршрутизаторов, то говорят на пути будет 7 хопов. А если на 6 маршрутизаторе пакет обрабатывается дольше обычного, то в среде инженеров говорят “на 6 хопе повышенная задержка". Это один из базовых инструментов того, как можно понять, какой из сетевых узлов на маршруте пакет “сбоит". Именно в этом нам помогает протокол ICMP.
ПРО ПИНГ
Теперь про ping . Можно сказать, это самый базовый инструмент инженера, который позволяет понять “"А жив ли хост?"
Помимо прочего, пинг поможет понять как долго пакет доходит до адреса назначения и, соответственно, поможет измерить задержку.
p, blockquote 1,0,0,0,0 -->
p, blockquote 2,0,0,0,0 -->
p, blockquote 3,0,0,0,0 -->
p, blockquote 4,0,0,0,0 -->
Формат заголовка ICMP
p, blockquote 5,0,0,0,0 -->
p, blockquote 6,0,0,0,0 -->
p, blockquote 7,0,0,0,0 -->
p, blockquote 8,0,0,0,0 -->
p, blockquote 10,0,0,0,0 -->
p, blockquote 11,0,0,0,0 -->
Применение ICMP
p, blockquote 12,0,0,0,0 -->
Утилита ping
Утилита ping используется, чтобы проверить доступность компьютера в сети. Возможно подключиться к этому компьютеру или нельзя. Ping использует это-протокол ICMP. Компьютер, который хочет проверить доступность другого, отправляет эхо-запрос (тип=8, код=0).
p, blockquote 13,0,0,0,0 -->
p, blockquote 14,0,0,0,0 -->
Компьютер, который получил такой запрос, в ответ отправляет эхо-ответ ICMP с типом 0, если эхо-ответ не пришел, значит установить с компьютером соединение по сети невозможно.
p, blockquote 15,0,0,0,0 -->
p, blockquote 16,0,0,0,0 -->
Пример использования утилиты ping для проверки возможности подключиться к сайту ВКонтакте. По умолчанию утилита ping запускает 4 эхо-запроса и для каждого эхо-запроса получен эхо-ответ. В ответе указывается некоторая диагностическая информация.
p, blockquote 17,0,0,0,0 -->
p, blockquote 18,1,0,0,0 -->
Утилита traceroute
Утилита traceroute позволяет определить маршрут от отправителя к получателю. Под маршрутом имеется в виду перечень всех маршрутизаторов через которые проходит пакет.
p, blockquote 19,0,0,0,0 -->
Пример работы утилиты traceroute ее windows вариант tracert для определения маршрута к сайту ВКонтакте.
p, blockquote 20,0,0,0,0 -->
p, blockquote 21,0,0,0,0 -->
Работа утилиты traceroute
p, blockquote 22,0,0,0,0 -->
p, blockquote 23,0,0,0,0 -->
Пакет доходит до первого маршрутизатора, маршрутизатор уменьшает время жизни TTL=0 и маршрутизатор отбрасывает пакет.
p, blockquote 24,0,0,0,0 -->
p, blockquote 25,0,0,0,0 -->
p, blockquote 26,0,0,0,0 -->
p, blockquote 27,0,0,1,0 -->
На следующем этапе о тправляется пакет с временем жизни равным двум TTL=2.
p, blockquote 28,0,0,0,0 -->
p, blockquote 29,0,0,0,0 -->
p, blockquote 30,0,0,0,0 -->
На первом маршрутизаторе время жизни уменьшается до единицы и пакет переходит на второй маршрутизатор.
p, blockquote 31,0,0,0,0 -->
p, blockquote 32,0,0,0,0 -->
p, blockquote 33,0,0,0,0 -->
p, blockquote 34,0,0,0,0 -->
И так происходит до тех пор пока пакет не дойдет до узла назначения.
p, blockquote 35,0,0,0,0 -->
Заключение
Научиться настройке MikroTik можно на онлайн курсе по оборудованию этого производителя. Автор курса является сертифицированным тренером MikroTik. Подробней Вы можете прочитать в конце статьи.
Статья отвечает на вопрос насколько опасно блокировать ICMP трафик.
ICMP — яблоко раздора
ICMP-трафик имеет много важных функций; какие то из них полезны для устранения неполадок, другие же необходимы для правильной работы сети. Ниже приведены сведения о некоторых важных составляющих ICMP протокола, о которых вы должны знать. Следует подумать над тем, как оптимальным образом пропускать их через вашу сеть.
Echo запрос и and Echo ответ
Мы все хорошо знаем, что ping, — один из первых инструментов для поиска и устранения неполадок. Да, если вы включите на своем оборудование обработку ICMP-пакетов, то это значит, что ваш хост теперь доступен для обнаружения, но разве ваш веб-сервер уже не слушает порт 80, и не отправляет ответы на клиентские запросы? Конечно, заблокируйте ещё и эти запросы, если вы действительно хотите, чтобы на границе сети была ваша DMZ. Но блокируя ICMP трафик внутри вашей сети, не усилите защиту, напротив получите систему с излишне сложным процессом поиска и устранения неполадок («Проверьте пожалуйста отзывается ли шлюз на сетевые запросы?», «Нет, но это меня ничуть не расстраивает, потому что мне это ничего не скажет! »).
Помните, также можете разрешить прохождение запросов в определенном направлении; например, настроить оборудование так, чтобы Echo запросы из вашей сети проходили в сеть Интернет и Echo ответы из Интернета в вашу сеть, но не наоборот.
Необходима фрагментация пакета (IPv4) / Пакет слишком большой (IPv6)
Данные компоненты протокола ICMP очень важны, так как являются важным компонентом в Path MTU Discovery (PMTUD), который является неотъемлемой частью протокола TCP. Позволяет двум хостам корректировать значение максимального размера сегмента TCP (MSS) до значения, которое будет соответствовать наименьшему MTU по пути связей между двумя адресатами. Если на пути следования пакетов будет узел с меньшим Maximum Transmission Unit, чем у отправителя или получателя, и у них не будет средств для обнаружения данной коллизии, то трафик будет незаметно отбрасывается. И вы не будете понимать что происходит с каналом связи; другими словами, «для вас наступят веселые деньки».
Исследование пути доставки пакетов
Превышение времени передачи пакетов
Traceroute — очень полезный инструмент для устранения неполадок в сетевых соединениях между двумя хостами, подробно описывающий каждый шаг пути.
NDP and SLAAC (IPv6)
Router Solicitation (RS) (Type133, Code0)
Router Advertisement (RA) (Type134, Code0)
Neighbour Solicitation (NS) (Type135, Code0)
Neighbour Advertisement (NA) (Type136, Code0)
Redirect (Type137, Code0)
В то время как IPv4 использовал протокол разрешения адресов (ARP) для сопоставления 2 и 3 уровней сетевой модели OSI, IPv6 использует другой подход в виде протокола обнаружения соседей (NDP). NDP предоставляет множество функций, включая обнаружение маршрутизатора, обнаружение префикса, разрешение адреса и многое другое. В дополнение к NDP, Автоконфигурация (StateLess Address AutoConfiguration (SLAAC) позволяет динамически настраивать хост в сети, аналогично концепции протокола динамической настройки узла (Dynamic Host Configuration Protocol (DHCP) (хотя DHCPv6 предназначается для более тонкого управления).
Нумерация типов ICMP
Тип | Наименование | Спецификация |
---|---|---|
0 | Echo Reply | [RFC792] |
1 | Unassigned | |
2 | Unassigned | |
3 | Destination Unreachable | [RFC792] |
4 | Source Quench (Deprecated) | [RFC792][RFC6633] |
5 | Redirect | [RFC792] |
6 | Alternate Host Address (Deprecated) | [RFC6918] |
7 | Unassigned | |
8 | Echo | [RFC792] |
9 | Router Advertisement | [RFC1256] |
10 | Router Solicitation | [RFC1256] |
11 | Time Exceeded | [RFC792] |
12 | Parameter Problem | [RFC792] |
13 | Timestamp | [RFC792] |
14 | Timestamp Reply | [RFC792] |
15 | Information Request (Deprecated) | [RFC792][RFC6918] |
16 | Information Reply (Deprecated) | [RFC792][RFC6918] |
17 | Address Mask Request (Deprecated) | [RFC950][RFC6918] |
18 | Address Mask Reply (Deprecated) | [RFC950][RFC6918] |
19 | Reserved (for Security) | Solo |
20-29 | Reserved (for Robustness Experiment) | ZSu |
30 | Traceroute (Deprecated) | [RFC1393][RFC6918] |
31 | Datagram Conversion Error (Deprecated) | [RFC1475][RFC6918] |
32 | Mobile Host Redirect (Deprecated) | David_Johnson |
33 | IPv6 Where-Are-You (Deprecated) | [RFC6918] |
34 | IPv6 I-Am-Here (Deprecated) | [RFC6918] |
35 | Mobile Registration Request (Deprecated) | [RFC6918] |
36 | Mobile Registration Reply (Deprecated) | [RFC6918] |
37 | Domain Name Request (Deprecated) | [RFC1788][RFC6918] |
38 | Domain Name Reply (Deprecated) | [RFC1788][RFC6918] |
39 | SKIP (Deprecated) | [RFC6918] |
40 | Photuris | [RFC2521] |
41 | ICMP messages utilized by experimental mobility protocols such as Seamoby | [RFC4065] |
42 | Extended Echo Request | [RFC8335] |
43 | Extended Echo Reply | [RFC8335] |
44-252 | Unassigned | |
253 | RFC3692-style Experiment 1 | [RFC4727] |
254 | RFC3692-style Experiment 2 | [RFC4727] |
255 | Reserved |
Пара слов об ограничении скорости
Читать, исследовать и понимать
Учитывая, что обсуждение темы «блокировать или не блокировать» ICMP-пакетов, всегда приводит к путанице, спорам и разногласиям, предлагаю продолжить изучать эту тему самостоятельно. На этой странице привел много ссылок, считаю для более полного понимания проблематики следует потратить время на их чтение. И сделать осознанный выбор того, что лучше всего подходит для вашей сети.
MikroTik: куда нажать, чтобы заработало?
При всех своих достоинствах, есть у продукции компании MikroTik один минус – много разобщенной и далеко не всегда достоверной информации о ее настройке. Рекомендуем проверенный источник на русском языке, где все собрано, логично и структурировано – видеокурс « Настройка оборудования MikroTik ». В курс входит 162 видеоурока, 45 лабораторных работ, вопросы для самопроверки и конспект. Все материалы остаются у вас бессрочно. Начало курса можно посмотреть бесплатно, оставив заявку на странице курса. Автор курса является сертифицированным тренером MikroTik.
Читайте также: