ИМЯ icmp - модуль ядра Linux, реализующий протокол IPv4 ICMP
ОПИСАНИЕ Этот модуль ядра реализует Internet Control Message Protocol, описанный в RFC 792. Он используется для извещения об ошибках и для диагностики. Пользователь не взаимодействует напрямую с этим модулем; вместо этого он работает с другими протоколами в ядре, а они при помощи протокола ICMP передают ошибки на уровень приложения. Кроме того, этот модуль отвечает на ICMP-запросы.
Пользовательский протокол может получать ICMP-пакеты для всех локальных сокетов, если откроет неструктурированный (raw) сокет, используя протокол IPPROTO_ICMP. Более подробную информацию смотрите в raw(7). Типы ICMP-пакетов, передаваемые в сокет, могут быть отфильтрованы с помощью параметра сокета ICMP_FILTER. Пакеты ICMP всегда обрабатываются ядром, даже когда передаются в пользовательский сокет.
Linux ограничивает для каждого получателя поток ICMP-пакетов с сообщениями об ошибках. Количество ICMP_REDIRECT и ICMP_DEST_UNREACH также ограничивается для каждого отправителя приходящих пакетов.
Интерфейсы в /proc Для настройки некоторых глобальных параметров IP ICMP поддерживает набор интерфейсов в /proc. Эти параметры доступны на чтение и запись через файлы в каталоге /proc/sys/net/ipv4/. Большинство параметров служит для управления ограничением потока пакетов ICMP определённых типов. В Linux 2.2 для ограничения ICMP используется фильтр «протекающего ведра» (token bucket). Значение — задержка в jiffy, отведённая на очистку фильтра после всплеска. Величина jiffy зависит от архитектуры машины, обычно, это 10мс на i386 и около 1мс на alpha и ia64.
icmp_destunreach_rate (в Linux с 2.2 по 2.4.9) Максимальная частота посылки ICMP-пакетов с типом Destination Unreachable по каждому конкретному маршруту или получателю. Ограничение не влияет на посылку пакетов ICMP_FRAG_NEEDED, необходимых для определения MTU для маршрута.
icmp_echo_ignore_all (начиная с Linux 2.2) Если значение больше нуля, то Linux будет игнорировать все запросы ICMP_ECHO.
icmp_echo_ignore_broadcasts (начиная с Linux 2.2) Если значение больше нуля, то Linux будет игнорировать все пакеты ICMP_ECHO, посланные по широковещательным адресам.
icmp_echoreply_rate (в Linux с 2.2 по 2.4.9) Максимальная частота посылки пакетов ICMP_ECHOREPLY в ответ на запросы ICMP_ECHOREQUEST.
icmp_errors_use_inbound_ifaddr (логический; по умолчанию: выключено; начиная с Linux 2.6.12) Если выключено, то сообщения ICMP об ошибках посылаются с первичным адресом существующего интерфейса.
Если включено, то сообщения будут посылаться с первичным адресом интерфейса, на который поступил пакет, вызвавший ошибку ICMP. Такое поведение соответствует работе маршрутизаторов, как этого ожидают сетевые администраторы. Также, это позволяет облегчить диагностику проблем в сложных сетях. предупреждением ядра. Если этот параметр включён, то ядро не будет выдавать такие предупреждения, что позволяет не засорять файл журнала.
icmp_paramprob_rate (в Linux с 2.2 по 2.4.9) Максимальная частота посылки пакетов ICMP_PARAMETERPROB. Эти пакеты посылаются, когда приходит пакет с ошибочным заголовком IP.
icmp_ratelimit (целое; по умолчанию: 1000; начиная с Linux 2.4.10) Ограничивает скорость отправки пакетов ICMP для определённого получателя, чьи типы совпадают с icmp_ratemask (смотрите далее). Значение 0 отключает ограничение, иначе указывается минимальная задержка между ответами в миллисекундах.
icmp_ratemask (целое; по умолчанию: смотрите далее; начиная с Linux 2.4.10) Маска типов ICMP, для которых накладывается ограничение.
Расстановка битов: IHGFEDCBA9876543210 Маска по умолчанию: 0000001100000011000 (0x1818)
Описание битов (смотрите файл include/linux/icmp.h из исходного кода ядра Linux):
0 Ответное эхо 3 Назначение недостижимо * 4 Погасить источник * 5 Перенаправление 8 Запрос эхо B Время вышло * C Проблема с параметром * D Запрос метки времени E Ответ меткой времени F Запрос информации G Ответ информацией H Запрос маски адреса I Ответ маской адреса
Для битов, помеченных звёздочкой, ограничение включено по умолчанию (смотрите маску по умолчанию, приведённую ранее).
icmp_timeexceed_rate (в Linux с 2.2 по 2.4.9) Максимальная частота посылки пакетов ICMP_TIME_EXCEEDED. Эти пакеты посылаются для предотвращения зацикливания, когда пакет прошёл слишком большое количество транзитных участков (hops).
ping_group_range (два целых числа; значение по умолчанию смотрите далее; начиная с Linux 2.6.39) Диапазон ID групп (минимальный и максимальный ID группы, включительно), которым разрешено создавать сокеты ICMP Echo. По умолчанию «1 0», что означает, что всем группам запрещено создавать сокеты ICMP Echo.
ВЕРСИИ Поддержка запроса ICMP_ADDRESS была удалена из 2.2.
Поддержка ICMP_SOURCE_QUENCH была удалена из Linux 2.2.
ЗАМЕЧАНИЯ Так как многие реализации не поддерживают неструктурированные сокеты IPPROTO_ICMP,
В Linux-реализации ICMP для посылки ICMP-пакетов используются неструктурированные сокеты. Такие сокеты могут показываться программой netstat(8), при этом их inode будет равен 0.
СМОТРИТЕ ТАКЖЕ ip(7), rdisc(8)
В RFC 792 приведено описание протокола ICMP.
|