ICMPv6: протокол, который заставляет IPv6 работать
Понять ICMPv6 — важнейший протокол для IPv6-сетей. Узнайте о Neighbor Discovery, Router Advertisements и почему блокировка ICMPv6 ломает вашу сеть.
ICMPv6 не является опциональным#
В IPv4 ICMP обрабатывает диагностику. Вы можете заблокировать его, и большинство вещей всё ещё будут работать. IPv6 работает иначе.
TL;DR - Краткое резюме
Ключевые моменты:
- ICMPv6 обязателен (не опционален как IPv4 ICMP); он обрабатывает NDP, обнаружение маршрутизаторов и PMTUD
- Neighbor Discovery Protocol (типы 133-137) заменяет ARP и обеспечивает SLAAC
- Тип 2 (Packet Too Big) критичен для Path MTU Discovery — его блокировка ломает соединения
- Необходимые типы для разрешения: 1 (Unreachable), 2 (Too Big), 128-129 (Ping), 133-137 (NDP)
Перейти к: Neighbor Discovery Protocol | Path MTU Discovery | Правила файрвола
ICMPv6 — это нервная система IPv6. Он обрабатывает отчёты об ошибках, диагностику, обнаружение соседей, обнаружение маршрутизаторов и разрешение адресов. Заблокируйте неправильные типы сообщений ICMPv6, и вы сломаете базовое подключение, помешаете хостам найти свой шлюз по умолчанию и вызовете загадочные зависания соединений, отладка которых займёт часы.
Спецификация IPv6 не рассматривает ICMPv6 как дополнение. Это обязательный, неотъемлемый компонент. Понимание ICMPv6 — это понимание того, как IPv6 на самом деле работает.
ICMPv6 против ICMP (IPv4)#
ICMPv6 эволюционировал из ICMP для IPv4, но взял на себя значительно больше ответственности.
| Функция | ICMPv4 | ICMPv6 | Влияние |
|---|---|---|---|
| Номер протокола | 1 | 58 | Другое значение следующего заголовка IP |
| Сообщения об ошибках | Destination Unreachable, Time Exceeded и т.д. | Те же ошибки, улучшенные | Похожая функциональность |
| Диагностика | Echo Request/Reply (ping) | Echo Request/Reply (ping) | Идентичная цель |
| Разрешение адресов | ARP (отдельный протокол) | Neighbor Discovery (ICMPv6) | ICMPv6 полностью заменяет ARP |
| Обнаружение маршрутизаторов | ICMP Router Discovery (опциональный) | Router Advertisement (обязательный) | Критично для автоконфигурации |
| Фрагментация | Обрабатывается незаметно маршрутизаторами | Сообщения Packet Too Big | Требуется path MTU discovery |
| Управление мультикастом | IGMP (отдельный протокол) | MLD сообщения (ICMPv6) | ICMPv6 заменяет IGMP |
Ключевое отличие: ICMPv6 поглотил функциональность, которая использовала отдельные протоколы в IPv4. ARP работает на втором уровне в IPv4. В IPv6 нет ARP — Neighbor Discovery использует ICMPv6 вместо него. IGMP управлял мультикаст-группами в IPv4. IPv6 использует сообщения Multicast Listener Discovery (MLD) внутри ICMPv6.
Эта консолидация упростила стек протоколов, но сделала ICMPv6 абсолютно необходимым. Вы не можете заблокировать его без нарушения базовой функциональности.
Структура типов сообщений#
Сообщения ICMPv6 имеют простую структуру: тип, код, контрольная сумма и данные, специфичные для сообщения. Поле типа определяет категорию сообщения.
Диапазоны номеров типов:
- 0-127: Сообщения об ошибках
- 128-255: Информационные сообщения
Это разделение упрощает фильтрацию. Сообщения об ошибках сообщают о проблемах с доставкой пакетов. Информационные сообщения обрабатывают запросы, ответы и обнаружение соседей/маршрутизаторов.
Распространённые типы сообщений#
| Тип | Код | Название | Категория | Назначение |
|---|---|---|---|---|
| 1 | 0-6 | Destination Unreachable | Ошибка | Порт закрыт, маршрут недоступен и т.д. |
| 2 | 0 | Packet Too Big | Ошибка | MTU превышен на пути |
| 3 | 0-1 | Time Exceeded | Ошибка | Лимит хопов достигнут или таймаут фрагмента |
| 4 | 0-2 | Parameter Problem | Ошибка | Неправильно сформирован заголовок пакета |
| 128 | 0 | Echo Request | Инфо | Запрос ping |
| 129 | 0 | Echo Reply | Инфо | Ответ ping |
| 133 | 0 | Router Solicitation | Инфо | Запрос информации о маршрутизаторе |
| 134 | 0 | Router Advertisement | Инфо | Маршрутизатор анонсирует присутствие и конфигурацию |
| 135 | 0 | Neighbor Solicitation | Инфо | Разрешение адреса и проверка доступности |
| 136 | 0 | Neighbor Advertisement | Инфо | Ответ на solicitation |
| 137 | 0 | Redirect | Инфо | Существует лучший маршрутизатор первого хопа |
Номера типов имеют значение
В отличие от IPv4, где типы ICMP используют разбросанные номера, организованное пространство типов ICMPv6 делает правила файрвола более понятными. Типы 133-137 обрабатывают Neighbor Discovery Protocol, что упрощает разрешение или блокировку NDP как группы.
Neighbor Discovery Protocol (NDP)#
Neighbor Discovery Protocol заменяет ARP в IPv4 и добавляет возможности, которые в IPv4 обрабатывались множеством протоколов. NDP работает полностью через ICMPv6 и выполняет пять критических функций:
- Разрешение адресов — сопоставление IPv6-адресов с MAC-адресами (заменяет ARP)
- Обнаружение маршрутизаторов — поиск локальных маршрутизаторов без конфигурации
- Обнаружение префиксов — изучение сетевых префиксов для автоконфигурации
- Обнаружение параметров — получение MTU, лимита хопов и других параметров
- Определение следующего хопа — идентификация лучшего маршрутизатора для назначения
Пять типов сообщений NDP#
Router Solicitation (Тип 133)#
Отправляется хостами для запроса маршрутизаторам немедленно анонсировать себя вместо ожидания следующего запланированного Router Advertisement.
Когда отправляется:
- Хост загружается
- Интерфейс становится онлайн
- Хост хочет быстро получить конфигурацию
Формат:
Source: Link-local адрес или ::
Destination: ff02::2 (all-routers мультикаст)
Hop Limit: 255Router Solicitations позволяют хостам получить конфигурацию сети в течение секунд вместо ожидания периодических анонсов.
Router Advertisement (Тип 134)#
Отправляется маршрутизаторами для анонса своего присутствия, рекламы префиксов для SLAAC и предоставления параметров конфигурации.
Когда отправляется:
- Периодически (каждые несколько минут)
- В ответ на Router Solicitation
- При изменении конфигурации маршрутизатора
Что содержит:
- Время жизни маршрутизатора (как долго использовать этот маршрутизатор)
- Сетевой префикс(ы) и их валидность
- Рекомендация MTU
- Предложение лимита хопов
- Флаги для SLAAC и DHCPv6
Формат:
Source: Link-local адрес маршрутизатора
Destination: ff02::1 (all-nodes мультикаст) или запрашивающий хост
Hop Limit: 255Router Advertisements — это то, как хосты узнают свою конфигурацию сети автоматически. DHCP не требуется — маршрутизаторы транслируют всё, что нужно хостам для самоконфигурации.
SLAAC зависит от Router Advertisements
Stateless Address Autoconfiguration (SLAAC) полностью зависит от Router Advertisements. Заблокируйте тип 134, и хосты не смогут автоконфигурироваться. У них будут только link-local адреса, без маршрута по умолчанию и без глобально маршрутизируемых адресов.
Neighbor Solicitation (Тип 135)#
Эквивалент ARP-запросов в IPv6. Отправляется для обнаружения MAC-адреса соседа или проверки того, что сосед всё ещё доступен.
Когда отправляется:
- Разрешение IPv6-адреса в MAC-адрес
- Проверка, что сосед всё ещё доступен
- Duplicate Address Detection (проверка, что адрес уже используется)
Формат:
Source: Адрес отправителя (или :: для DAD)
Destination: Solicited-node мультикаст-адрес или целевой адрес
Hop Limit: 255Сообщения Neighbor Solicitation используют solicited-node мультикаст-адреса вместо broadcast. Это уменьшает ненужную обработку — только целевой хост и хосты с похожими адресами получают пакет.
Neighbor Advertisement (Тип 136)#
Ответ на Neighbor Solicitation. Предоставляет MAC-адрес отправителя или подтверждает доступность.
Когда отправляется:
- Ответ на Neighbor Solicitation
- Незапрошенный анонс изменения адреса
Формат:
Source: Link-local или глобальный адрес отправителя
Destination: Адрес запросившего или all-nodes мультикаст
Hop Limit: 255Redirect (Тип 137)#
Отправляется маршрутизаторами для информирования хостов о том, что существует лучший маршрутизатор первого хопа для конкретного назначения.
Когда отправляется:
- Хост отправляет пакет маршрутизатору
- Маршрутизатор знает лучший следующий хоп в той же сети
- Маршрутизатор пересылает пакет И отправляет redirect
Формат:
Source: Link-local адрес маршрутизатора
Destination: Исходный отправитель
Hop Limit: 255Redirects оптимизируют маршрутизацию без требования от хостов поддерживать сложные таблицы маршрутизации.
Как работает разрешение адресов#
Когда хост должен отправить пакет на другой IPv6-адрес в локальной сети:
- Проверить кеш соседей — MAC-адрес уже известен?
- Отправить Neighbor Solicitation — если нет, отправить NS на solicited-node мультикаст-адрес
- Получить Neighbor Advertisement — цель отвечает с MAC-адресом
- Обновить кеш — сохранить сопоставление для будущего использования
- Отправить пакет — доставить исходный пакет
Solicited-node мультикаст-адрес вычисляется из IPv6-адреса цели:
ff02::1:ff + последние 24 бита IPv6-адреса
Пример:
IPv6: 2001:db8::a4b2:c3d4:e5f6:7890
Solicited-node: ff02::1:ff:f6:7890Этот мультикаст-подход уменьшает сетевой трафик по сравнению с broadcast-основанным ARP в IPv4.
Duplicate Address Detection
Перед использованием адреса хосты отправляют Neighbor Solicitation с source :: и целью, установленной на адрес, который они хотят использовать. Если другой хост отвечает, адрес уже используется. Это предотвращает конфликты адресов в SLAAC.
Подробности обнаружения маршрутизаторов#
Маршрутизаторы анонсируют себя и конфигурацию сети через сообщения Router Advertisement. Хосты слушают и автоконфигурируются на основе этих анонсов.
Содержимое Router Advertisement#
Типичный RA содержит:
Информация о маршрутизаторе:
- Время жизни маршрутизатора (0-9000 секунд, 0 означает «не маршрутизатор по умолчанию»)
- Время доступности (как долго считать соседа доступным)
- Таймер ретрансмиссии (задержка между neighbor solicitations)
Информация о префиксе:
- Сетевой префикс (например, 2001:db8:1234::/64)
- Время валидности (как долго адреса валидны)
- Предпочтительное время (как долго использовать для новых соединений)
- Флаги:
- L (On-link): Префикс находится в локальной сети
- A (Autonomous): Использовать для SLAAC
Другие опции:
- Рекомендация MTU
- DNS-серверы (опция RDNSS)
- DNS search домены (опция DNSSL)
Формирование SLAAC-адреса#
Когда хост получает RA с установленным флагом A:
- Взять префикс — например,
2001:db8:1234::/64 - Сгенерировать идентификатор интерфейса — 64 бита, выведенные из MAC или случайные
- Объединить их —
2001:db8:1234::a4b2:c3d4:e5f6:7890 - Запустить Duplicate Address Detection — убедиться, что никто другой не использует его
- Настроить адрес — добавить к интерфейсу
- Установить маршрут по умолчанию — использовать маршрутизатор как следующий хоп
Это происходит автоматически без вмешательства пользователя или DHCP-серверов.
Флаги, контролирующие конфигурацию#
Router Advertisements включают флаги, которые указывают хостам, как настраивать себя:
- M (Managed): Использовать DHCPv6 для адресов (не SLAAC)
- O (Other): Использовать DHCPv6 для другой конфигурации (DNS, NTP и т.д.)
Распространённые комбинации:
| M | O | Поведение |
|---|---|---|
| 0 | 0 | Только SLAAC, без DHCPv6 |
| 0 | 1 | SLAAC для адресов, DHCPv6 для DNS и т.д. |
| 1 | 0 | DHCPv6 для адресов (необычно) |
| 1 | 1 | DHCPv6 для всего |
Большинство сетей используют M=0, O=0 (чистый SLAAC) или M=0, O=1 (SLAAC + DHCPv6 для DNS).
Path MTU Discovery#
Маршрутизаторы IPv6 не фрагментируют пакеты. Источник должен отправлять пакеты достаточно маленькие, чтобы поместиться на весь путь. Вот где ICMPv6 тип 2 становится критическим.
Как работает PMTUD#
- Хост отправляет пакет — использует MTU интерфейса (обычно 1500 байт)
- Маршрутизатор встречает меньший MTU — не может фрагментировать в IPv6
- Маршрутизатор отбрасывает пакет — отправляет сообщение ICMPv6 Packet Too Big обратно
- Сообщение включает MTU — сообщает отправителю максимальный разрешённый размер
- Хост уменьшает размер пакета — ретранслирует с меньшим MTU
- Соединение продолжается — используя подходящий размер пакета
Формат сообщения Packet Too Big:
Type: 2
Code: 0
MTU: 1280 (или что поддерживает следующий хоп)
Original packet: Первая часть отброшенного пакетаМинимальный IPv6 MTU — 1280 байт. Все каналы должны поддерживать как минимум этот размер. Более крупные пакеты требуют работы PMTUD.
Что происходит, когда вы блокируете тип 2#
Симптомы соединения, когда сообщения Packet Too Big заблокированы:
- Начальное соединение работает — пакеты SYN, SYN-ACK, ACK маленькие
- Передача данных зависает — крупные пакеты отбрасываются молча
- Нет сообщений об ошибках — соединение просто застопоривается
- Таймаут через минуты — TCP в конечном итоге сдаётся
Это одна из самых раздражающих проблем для отладки, потому что соединение устанавливается успешно перед сбоем.
Реальный сценарий:
$ curl -6 https://example.com/
# Соединение зависает после TLS handshake
# Браузер показывает «Загрузка...» вечно
# SSH подключается, но зависает во время обмена баннерамиВсё из-за того, что какой-то middlebox заблокировал ICMPv6 тип 2.
Никогда не блокируйте Packet Too Big
Блокировка ICMPv6 типа 2 ломает соединения тонкими, специфичными для приложения способами. Всегда разрешайте этот тип сообщений в обоих направлениях через файрволы и маршрутизаторы.
Echo Request и Echo Reply (Ping)#
Тип 128 (Echo Request) и Тип 129 (Echo Reply) работают точно так же, как ping в IPv4.
Формат:
Type: 128 (запрос) или 129 (ответ)
Code: 0
Identifier: Произвольный (совпадает запрос/ответ)
Sequence: Увеличивается с каждым ping
Data: Произвольная полезная нагрузкаДиагностическое использование#
Ping — это простейший тест подключения:
# Базовый ping
ping6 2001:4860:4860::8888
# Указать адрес источника
ping6 -I 2001:db8::10 2001:4860:4860::8888
# Крупные пакеты для тестирования PMTUD
ping6 -s 1400 google.com
# Flood ping (требует root)
sudo ping6 -f 2001:4860:4860::8888Соображения ограничения скорости#
Многие администраторы ограничивают скорость ping для предотвращения разведки и DoS-атак. Это разумно для production-серверов, но полная блокировка усложняет устранение неполадок.
Рекомендуемый подход:
- Разрешить echo request/reply
- Ограничить скорость для предотвращения злоупотреблений
- Логировать чрезмерные попытки
Пример для Linux:
# Разрешить ping, но ограничить скорость
ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 128 \
-m limit --limit 10/sec --limit-burst 20 -j ACCEPT
ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 128 -j DROPЭто разрешает 10 ping в секунду с всплесками до 20, отбрасывая избыточный трафик.
Соображения файрвола#
Фильтрация ICMPv6 требует понимания, какие типы необходимы, а какие опциональны.
Обязательно разрешить (нарушение подключения)#
Тип 2: Packet Too Big
- Направление: Входящий и исходящий
- Причина: Path MTU discovery ломается без него
- Область: Все соединения
Типы 133-136: Neighbor Discovery
- Направление: Только link-local (hop limit 255)
- Причина: Разрешение адресов и обнаружение маршрутизатора ломаются
- Область: Только локальная сеть
Тип 1: Destination Unreachable
- Направление: Входящий (ответы на ваш трафик)
- Причина: TCP должен знать, когда порты/маршруты не существуют
- Область: Все соединения
Следует разрешить (нарушение диагностики)#
Тип 3: Time Exceeded
- Направление: Входящий
- Причина: Traceroute не работает без него
- Влияние: Невозможно диагностировать проблемы маршрутизации
Типы 128-129: Echo Request/Reply
- Направление: Оба
- Причина: Ping — основной тест подключения
- Влияние: Невозможно проверить базовую доступность
Можно блокировать (только информационные)#
Типы 130-132: Multicast Listener Discovery
- Область: Только локальная сеть
- Влияние: Мультикаст может не работать оптимально
Тип 137: Redirect
- Влияние: Неоптимальная маршрутизация в локальной сети
- Безопасность: Некоторые администраторы блокируют для предотвращения манипуляции маршрутами
Примеры правил iptables#
Минимальный файрвол хоста:
# Необходимый ICMPv6
ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 1 -j ACCEPT # Destination Unreachable
ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 2 -j ACCEPT # Packet Too Big
ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 3 -j ACCEPT # Time Exceeded
ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 128 -j ACCEPT # Echo Request
ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 129 -j ACCEPT # Echo Reply
# Neighbor discovery (только link-local, hop limit 255)
ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 133 -m hl --hl-eq 255 -j ACCEPT
ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 134 -m hl --hl-eq 255 -j ACCEPT
ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 135 -m hl --hl-eq 255 -j ACCEPT
ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 136 -m hl --hl-eq 255 -j ACCEPTПроверка hop limit (--hl-eq 255) гарантирует, что пакеты neighbor discovery исходят из локальной сети. Легитимный NDP всегда использует hop limit 255. Пакеты от маршрутизаторов имели бы уменьшенные значения.
Эквивалент nftables:
# Необходимый ICMPv6
nft add rule ip6 filter input icmpv6 type { destination-unreachable, packet-too-big, time-exceeded, echo-request, echo-reply } accept
# Neighbor discovery с проверкой hop limit
nft add rule ip6 filter input icmpv6 type { nd-router-solicit, nd-router-advert, nd-neighbor-solicit, nd-neighbor-advert } ip6 hoplimit 255 acceptРаспространённая ошибка: блокировка всего ICMPv6
Самая распространённая ошибка файрвола IPv6 — блокировка всего ICMPv6. Администраторы переносят правила IPv4, которые блокируют весь ICMP, и удивляются, почему IPv6 ломается. ICMPv6 не опционален — разрешайте необходимые типы или ожидайте сбоев подключения.
Устранение неполадок с помощью ICMPv6#
Чтение сообщений об ошибках#
Когда соединения ломаются, проверьте сообщения об ошибках ICMPv6 с помощью tcpdump:
# Захватить весь ICMPv6
sudo tcpdump -i eth0 -n ip6 and icmp6
# Конкретные типы
sudo tcpdump -i eth0 -n 'ip6 and icmp6 and ip6[40] == 1' # Type 1 (Destination Unreachable)
sudo tcpdump -i eth0 -n 'ip6 and icmp6 and ip6[40] == 2' # Type 2 (Packet Too Big)Распространённые сценарии ошибок:
Тип 1, Код 1: Communication administratively prohibited
# Файрвол блокирует трафик
18:23:45.123456 IP6 2001:db8::1 > 2001:db8::10: ICMP6, destination unreachable,
administratively prohibited, length 68Файрвол или список контроля доступа блокирует соединение.
Тип 1, Код 4: Port unreachable
# Сервис не запущен
18:23:45.234567 IP6 2001:db8::10 > 2001:db8::1: ICMP6, destination unreachable,
port unreachable, length 68Ничто не слушает на целевом порту.
Тип 2: Packet too big
# Проблема MTU
18:23:45.345678 IP6 2001:db8:1234::1 > 2001:db8::10: ICMP6, packet too big,
mtu 1280, length 1240Path MTU меньше, чем предполагал отправитель. Отправитель должен уменьшить размер пакета до 1280 байт.
Использование Wireshark для NDP#
Wireshark упрощает анализ NDP с помощью фильтров отображения:
# Весь ICMPv6
icmpv6
# Только Neighbor Discovery
icmpv6.type >= 133 && icmpv6.type <= 137
# Router Advertisements
icmpv6.type == 134
# Neighbor Solicitations для конкретного адреса
icmpv6.type == 135 && icmpv6.nd.ns.target_address == 2001:db8::10Смотрите Router Advertisements, чтобы увидеть, какую конфигурацию предоставляет ваша сеть:
# Фильтр RAs, развернуть слой ICMPv6 в деталях пакета
# Проверить:
# - Флаги (M, O)
# - Информация о префиксе
# - DNS серверы (опция RDNSS)
# - Опция MTUРаспространённые проблемы и решения#
Проблема: у хоста нет глобального IPv6-адреса, только fe80::*
Диагностика:
# Проверить наличие Router Advertisements
sudo tcpdump -i eth0 -n 'icmp6 && ip6[40] == 134'Причины:
- Нет маршрутизатора в сети
- Маршрутизатор не отправляет RAs
- Файрвол блокирует тип 134
Решение: Включить IPv6 на маршрутизаторе, проверить конфигурацию RA, проверить правила файрвола.
Проблема: ping работает, но большие передачи зависают
Диагностика:
# Тест с крупными ping-пакетами
ping6 -s 1400 target.example.comПричины:
- ICMPv6 тип 2 заблокирован где-то
- Несоответствие MTU на пути
- Файрвол фильтрует Packet Too Big
Решение: Разрешить тип 2 через все файрволы, проверить конфигурацию MTU.
Проблема: невозможно достичь соседей в той же подсети
Диагностика:
# Проверить кеш соседей
ip -6 neigh show
# Смотреть Neighbor Solicitations
sudo tcpdump -i eth0 -n 'icmp6 && ip6[40] == 135'Причины:
- Файрвол блокирует типы 135/136
- Коммутатор фильтрует мультикаст
- IPv6 отключён на цели
Решение: Разрешить NDP через файрволы, проверить конфигурацию мультикаста коммутатора.
Проблема: хосты игнорируют Router Advertisements
Диагностика:
# Проверить, что RAs прибывают
sudo tcpdump -i eth0 -n 'icmp6 && ip6[40] == 134'
# Проверить настройку accept_ra (Linux)
sysctl net.ipv6.conf.eth0.accept_raПричины:
- accept_ra отключён (Linux)
- IPv6 forwarding включён на хосте (отключает обработку RA)
- RA имеет неправильный hop limit (!= 255)
Решение: Включить accept_ra, отключить forwarding на конечных хостах, проверить конфигурацию маршрутизатора.
Связанные статьи#
- Основы IPv6 — Изучите основы IPv6-адресации и почему IPv6 существует.
- Конфигурация файрвола IPv6 — Настройте свой файрвол для разрешения необходимого ICMPv6 с сохранением безопасности.
- Устранение неполадок IPv6 — Диагностируйте и исправьте распространённые проблемы подключения IPv6 с помощью ICMPv6.
Протестируйте вашу сеть
Используйте наш инструмент Ping для тестирования подключения ICMPv6 и наш инструмент Traceroute, чтобы увидеть сообщения ICMPv6 Time Exceeded в действии.
Часто задаваемые вопросы#
Могу ли я блокировать ICMPv6 ping так же, как делаю с IPv4 ICMP?
Вы можете ограничить скорость или заблокировать Echo Request/Reply (типы 128-129) без нарушения подключения, но это значительно усложняет устранение неполадок. В отличие от IPv4, где ICMP в основном диагностический, ICMPv6 включает необходимые функции, такие как Neighbor Discovery и Path MTU Discovery, которые вы никогда не должны блокировать. Блокируйте ping, если хотите, но никогда не блокируйте типы 1, 2 или 133-136.
Почему NDP использует мультикаст вместо broadcast, как ARP?
Мультикаст более эффективен. ARP в IPv4 отправляет broadcasts, которые каждый хост в сети должен обработать, даже если они не являются целью. NDP в IPv6 использует solicited-node мультикаст-адреса, вычисленные из IPv6-адреса цели. Только хосты с совпадающими адресами обрабатывают пакет — все остальные фильтруют его на уровне оборудования. Это снижает нагрузку на CPU и сетевой шум, особенно в больших сетях.
В чём разница между Router Solicitation и Router Advertisement?
Router Solicitation (тип 133) — это запрос, отправляемый хостами, просящими маршрутизаторы немедленно анонсировать себя. Router Advertisement (тип 134) — это ответ, отправляемый маршрутизаторами, содержащий сетевые префиксы, параметры конфигурации и информацию о маршрутизаторе. Маршрутизаторы также отправляют RAs периодически без solicitation. RS позволяет хостам быстро получить конфигурацию при загрузке вместо ожидания следующего периодического RA.
Как часто маршрутизаторы должны отправлять Router Advertisements?
RFC 4861 рекомендует RAs с интервалом 200-600 секунд (3.3-10 минут). Большинство реализаций по умолчанию используют 200 секунд. Маршрутизаторы также отвечают немедленно на Router Solicitations. Интервал балансирует быструю конфигурацию для новых хостов с минимальными накладными расходами сети. Слишком частые — тратят пропускную способность; слишком редкие — задерживают автоконфигурацию.
Почему некоторые сообщения ICMPv6 требуют hop limit 255?
Требование hop limit 255 предотвращает атаки с удалённых узлов, отправляющих поддельные сообщения Neighbor Discovery. Легитимные NDP-пакеты исходят из локальной сети и всегда используют hop limit 255. Пакеты от удалённых атакующих проходят через маршрутизаторы, уменьшая hop limit. Отклоняя пакеты с hop limit < 255, хосты защищаются от злонамеренных Router Advertisements и Neighbor Advertisements извне локальной сети.