ICMPv6 connection tracking - как оно в действительности работает?

Базовая функциональность RouterOS
ns88ns
Сообщения: 52
Зарегистрирован: 16 дек 2019, 13:40

ICMPv6 connection tracking - как оно в действительности работает?

Сообщение ns88ns »

Приветствую.

Наткнулся на странную работу трекера соединений в ROS. Ну, в последней стабильной ROS6 воспроизводится.

Собственно, кейс:

Код: Выделить всё

/ipv6 firewall filter
add chain=input protocol=icmpv6 connection-state=new action=accept log=no
add chain=input connection-state=established action=accept log=no
add chain=input connection-state=related action=accept log=no
add chain=input action=drop log=yes
В chain=output никаких правил нет.

Ну и начинаем сыпать ICMPv6 (types 128, 135,136) c одного стороннего источника (неизменный SRC) в ROS с адресами назначения - юникастный IPv6 роутера и мультикастные FF02::

Если я все правильно знаю - то весь трафик должен провалиться в первые два правила. Ну потому что SRC и DST не меняются. Но по факту, много трафика проваливается в правило 3 и 4 (совсем сорприз).

Как такое может происходить? Это я не понимаю каких-то фундаментальных основ или это ROS прикалывается?

С уважением.
Аватара пользователя
Chupaka
Сообщения: 2954
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: ICMPv6 connection tracking - как оно в действительности работает?

Сообщение Chupaka »

Здравствуйте.

А там точно только icmpv6? Я вижу log=no и отсутствие protocol=icmpv6 в остальных правилах, поэтому берут некоторые сомнения :)

Ну и добавьте для теста connection-state=invalid, что ли... Вдруг сюда что-нибудь уйдёт :)
ns88ns
Сообщения: 52
Зарегистрирован: 16 дек 2019, 13:40

Re: ICMPv6 connection tracking - как оно в действительности работает?

Сообщение ns88ns »

В этом тесте я там умышленно в правилах 2 и 3 не указал протокол, потому что другого трафика просто нет, да и без указания протокола в правилах 2 и 3 - весь ICMPv6 должен проваливаться в них по connection-state. ICMPv6 - он же stateless протокол и никакого специального хелпера в ROS для этого протокола нет, значит пакеты могут быть либо NEW, либо ESTABLISHED. По логике, там даже RELATED появится не может.

connection-state=invalid ничего не ловит.

Вот такую штуку увидел:

Код: Выделить всё

/ipv6 firewall filter
add chain=input connection-state=established action=accept log=yes
add chain=input connection-state=related action=accept log=yes
add chain=input protocol=icmpv6 action=accept log=yes
add chain=input action=drop log=yes
через такие правила, работает как ожидается - первый пакет проходит через правило 3, а остальные через правило 1. Правила 2 и 4 ничего не регистрируют. Т.е. connection-state определяется правильно.

Но если в правило 3 добавить connection-state=new - начинается ерунда: часть пакетов лезет через правило 1, част начинает лезть в правило 2, и часть - дропается правилом 4.

Как по мне - такого не бывает. Это похоже на какой-то глюк. Не может connection-state=new ломать все connection-states. И даже, не должен, скорей всего.

Я отписал в саппорт, но они - парни, традиционно, очень не торопливые. У меня там есть пара реквестов, которые уже 4-й месяц загорают без ответа.
Аватара пользователя
Chupaka
Сообщения: 2954
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: ICMPv6 connection tracking - как оно в действительности работает?

Сообщение Chupaka »

Да, совершенно загадочно. Видимо, поэтому IPv6 ещё им пилить и пилить...
ns88ns
Сообщения: 52
Зарегистрирован: 16 дек 2019, 13:40

Re: ICMPv6 connection tracking - как оно в действительности работает?

Сообщение ns88ns »

Таки мы разговаривали долго. Увы, поддержка продемонстрировала абсолютное отсутствие какого-либо интереса к проблеме. Там репрокейс был на 5 минут, но они вместо чтоб потратить 5 минут на воспроизвести проблему и отправить ее на фикс - три недели морочили мне мозги своими идеями и предположениями. Ни одно из них не сработало. Ну и понятно - цели не было у них фиксить. Цель была задолбать. В результате я плюнул и забил. А сам я себе так думаю: раз оно даже разработчику не надо - то мне-то че парится?

Хотя, я даже и растерялся от такого подхода. Когда я им сказал, что кейс можно закрыть ка нерешенный - за пять минут его уже не было в системе. На закрыть кейс - да, это они очень быстро среагировали.

Полагаю, нормального IPv6 тут не будет. Хотя, возможно, у них и цели-то нет развиваться. Пилят себе для интреса и пилят. Никому ничего не должны, денег на борщ хватает. 7-ка, вот уж который год в бете без сдвига. Знал бы заранее - внимательней смотрел бы по сторонам.

Ну, ок.
ns88ns
Сообщения: 52
Зарегистрирован: 16 дек 2019, 13:40

Re: ICMPv6 connection tracking - как оно в действительности работает?

Сообщение ns88ns »

Ну и да - по сути вопроса же:

В ходе тестов выяснилось, что после NEW, следующее состояние для ICMPv6 в ROS - это UNTRACKED. Именно на untracked все последующие после NEW пакеты и ловятся. Такое же точно поведение демонстрируют многие другие staless IPv6 протоколы. В соответствии с документацией, состояние соединения не отслеживается только если есть правило с NO-TRACK.Но, в данном случае, NO-TRACK отсутствует и UNTRACKED невозможны в принципе. И поскольку в документации это поведение никаким образом не отражено - это, определено, баг. Но, донести эту мысль не удалось.
Аватара пользователя
Chupaka
Сообщения: 2954
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: ICMPv6 connection tracking - как оно в действительности работает?

Сообщение Chupaka »

Эх, когда-нибудь будет и у меня IPv6 дома, и я смогу это всё проверять и писать в поддержку... :)

Спасибо за информацию!
ns88ns
Сообщения: 52
Зарегистрирован: 16 дек 2019, 13:40

Re: ICMPv6 connection tracking - как оно в действительности работает?

Сообщение ns88ns »

:-) а белый IPv4 есть?

Давно было... Я когда за двойным натом сидел, а IPv6 был надо - я через PPTP (PPTP/GRE через оба ната проходил) ходил на внешний линуксячий сервак, поднятый у хостера, который давал белые IPv4, там ловил IPv6 туннель от HE и через PPTP прокидывал IPv6 домой.
Аватара пользователя
Sir_Prikol
Сообщения: 371
Зарегистрирован: 14 апр 2018, 15:21
Откуда: СССР

Re: ICMPv6 connection tracking - как оно в действительности работает?

Сообщение Sir_Prikol »

Могу дать нативный ipv6 через 6to4 туннель, нахаляву :)

По теме, у меня проблем с ipv6 не наблюдается, юзаю его на микротике уже 5 лет. Бесит немного другое, пока с ipv6 невозможно сделать routing mark, и, соответственно, получить балансировку, но, посредством BGP они уже её реализовали, хоть и немного кривовато

Ну и бесит, что до сих пор не реализовано pppoe-pd. Вот именно это и мешает мне нормально внедрить ipv6 своим абонентам
Дома: CCR2004 (7-ISP(GPON)белый IP)
ns88ns
Сообщения: 52
Зарегистрирован: 16 дек 2019, 13:40

Re: ICMPv6 connection tracking - как оно в действительности работает?

Сообщение ns88ns »

Могу дать нативный ipv6 через 6to4 туннель, нахаляву
Так а смысл? HE делает ровно то же самое. Через 6to4 и на халву.

Ну, собственно, да, в самом базовом виде - IPv6 у них реализован и таки работает. Если не заморачиваться со всякими штуками вроде connection-state-based management, BPR (да, собственно, и все) - то, вполне себе даже. В описанном случае, если убрать connection-state-based management - то все гуд. Но, мне надо. К ним вообще б не было бы вопросов, если бы они эти нюансы описали в документации. Отсутствие PBR у них таки задекларировано. А вот кривой connection state traсking - нет.