Фильтрация сообщений IPv6 ICMPv6
Поэтому я немного больше играю с IPv6 в моей домашней сети и делаю вещи старомодно - настраиваю статические адреса и все такое. Это означает, что я на самом деле не хочу и не забочусь обо всей автоматической конфигурации, встроенной в IPv6 через различные сообщения ICMPv6. Но при работе с Wireshark и захвате только трафика IPv6, две из моих систем IPv6, работающих под Linux, оказываются болтливыми мелочами. Они постоянно обмениваются пакетами "Запрос соседей", "Объявление соседей" и "Отчет многоадресного прослушивателя ICMPv6". Они делают это как на статически назначенном адресе ULA, который я установил для каждой машины, так и на автоматически настроенном локальном адресе канала.,
У меня вопрос, как я могу отключить их в Linux? Я нашел несколько руководств для Windows с помощью команды "netsh" (что меня удивило - Windows, кажется, гораздо более настраиваема в этом аспекте, чем Linux). Пока что, похоже, мой единственный выбор в Linux - использовать ip6tables для блокировки определенных типов сообщений ICMPv6. Однако, глядя на RFC4890, они подразумевают, что эти сообщения не должны блокироваться, если хост IPv6 должен успешно участвовать в сети IPv6.
Мое чтение протокола IPv6 показывает, что на него сильно повлияли проблемы, с которыми сталкиваются крупные корпоративные сети. Инженеры-протоколисты, казалось, мало заботились о небольших частных сетях. Это замечательно, если вы являетесь системным администратором большой корпоративной или другой такой корпоративной сети, но немного раздражает, если вы просто "какой-то парень", пытающийся поиграть с протоколом в домашней сети, чтобы изучить его. Мой метод обучения означает создание чего-то вроде моей сети IPv4 в качестве базовой линии, а затем включение функций по мере необходимости.
Поэтому я спрашиваю экспертов, должен ли я отключить эти три типа сообщений на моем хосте Linux и Windows? Будет ли это ужасно нарушать мою внутреннюю настройку IPv6, если я это сделаю? Как это повлияет на внешний IPv6, когда я достигну этой стадии (мой провайдер еще не выделил адреса IPv6 для клиентов, поэтому пока нет внешней маршрутизации IPv6 и нет туннелей 6-4)? Являются ли ip6tables моей единственной опцией в Linux?
Я также предполагаю, что застрял с локальными адресами, верно? Нет способа от них избавиться? Их невозможно запомнить...(может, в этом его смысл?)
2 ответа
Отключение ICMP для IPv6 может полностью сломать его. Он используется для гораздо большего количества вещей в v6, чем v4. Он используется для отчетов об ошибках, обнаружения соседей (как вы узнали) и многого другого.
Блокируя ICMPv6 на любом уровне, вы можете серьезно помешать IPv6 выполнять свою работу. На ней есть (краткая) статья в Википедии, а также нормальный, очень полный RFC.
Для получения глобального адреса вы можете использовать 6to4; вы получите перевод вашего глобального адреса v4 как адрес v6. Недостатком является то, что вам нужно пройти через туннельный узел 6to4; они колеблются между "медленным" и "мучительно медленным" в зависимости от того, как близко вы находитесь к узлу (чтобы узнать, пингуйте 192.88.99.1; это адрес anycast, который должен быть вашей ближайшей конечной точкой). Достаточно хорошо, чтобы получить живую ссылку для тестирования и обучения... но это все.
Что касается ICMPv6, Марк уже хорошо это описал. Я добавлю это: не волнуйтесь об этом. Подумайте обо всей болтовне, к которой вы сейчас привыкли - ARP, DHCP; если у вас есть системы Windows, то нетбиос, компьютерный браузер и Teredo; многоадресный мусор как SSDP/DNLA/UPnP. Вы не привыкли к этим ICMP-сообщениям, но они являются важной частью работы IPv6... именно поэтому вы настраиваете его для изучения в первую очередь!