Эта проблема:
Потеря возможности подключения IPv6 к удаленному IP через определенный период времени без установления соединения с удаленным IP.
Моя установка:
Я использую сервер с ip6tables
брандмауэр, который фильтрует входящие пакеты ICMPv6. Я установил этот брандмауэр в соответствии с RFC 4890 для трафика локальной конфигурации. Следующие ICMPv6 разрешены на INPUT
цепь для eth0
интерфейс:
type 1 (destination unreachable)
type 2 (packet too big)
type 3 (time exceeded)
type 4 (parameter problem)
type 128 limit 100/sec limit-burst 500 (Echo)
type 129 (Echo reply)
type 133 (Router Solicitation)
type 134 (Router Advertisement)
type 135 (Neighbor Solicitation)
type 136 (Neighbor Advertisement)
type 141 (Inverse Neighbor Discovery Solicitation)
type 142 (Inverse Neighbor Discovery Advertisement)
type 148 (Certificate Path Solicitation)
type 149 (Certificate Path Advertisement
type 151 (Multicast Router Advertisement)
type 152 (Multicast Router Solicitation)
type 153 (Multicast Router Termination)
Все остальные типы отбрасываются. Все пакеты ICMPv6 разрешены в цепочке OUTPUT для eth0
интерфейс.
Что я пробовал:
После ip6tables
правила включены, весь трафик IPv6 проходит без сбоев. Однако после прибл. 1 день без подключения к удаленному IP-адресу он внезапно становится недоступным.
Бег tcpdump
в удаленном месте показывает, что эхо-сигнал ICMPv6 с сервера с брандмауэром успешно поступает и отправляется ответ. Однако эхо-ответ не приходит.
Если политика брандмауэра ослаблена, чтобы пропускать все пакеты ICMPv6, соединение устанавливается, а затем перезапускается исходный брандмауэр - все продолжает работать.
Мой вопрос:
Как предотвратить потерю связи?
Я предполагаю, что я должен отбрасывать какой-то тип пакета ICMPv6, важный для установления соединения.
Я пропустил правило, импортированное из брандмауэра IPv4, оно находилось выше в INPUT
цепочка и блокировка всех многоадресных пакетов:
-t filter -A INPUT -m pkttype --pkt-type multicast
После удаления этого правила связь была восстановлена.
Я обнаружил это, внимательно изучив трафик ICMPv6 на сервере с брандмауэром. Сервер получал пакеты Neighbor Solicitation, но не отправлял Neighbor Advertising в ответ.
Я все еще нахожу это странным, поскольку правило отбрасывания многоадресной рассылки INPUT
chain, поэтому он не должен мешать пакету Advertising. Вместо этого я думаю, что мне даже не следует получать запрос о привлечении внимания ...
Извините за шум.