Вижу проблему с NAT-правилами на мосту с включённым VLAN-фильтром (ROS v6.43). Мост содержит кучу портов (как с тегами, так и без), и я пытаюсь написать NAT-правило для одного порта, который подключён к мосту как нетегированный и у которого задан PVID. Правило, которое я пытаюсь создать — "dstnat", "In.Interface" — это именно тот порт, о котором речь, и я пытаюсь обработать либо только IP-пакеты (eth.type 0x800), либо опционально ARP-пакеты (eth.type 0x806).
Однако на этапе dstnat я вижу только VLAN-пакеты (0x8100), других типов eth. пакетов нет. Ладно, допустим VLAN-инкапсуляция (по порту с PVID) происходит до обработки правил моста dstnat, проблем нет — потому что в классификации правил я могу задать совпадение для кадров 0x8100, а потом уже дальше классифицировать по протоколу «VLAN/VLAN Encap». И вот эта классификация по «VLAN Encap» работает, по-моему, неправильно.
Что я обнаружил на этом правиле: MAC Protocol-Num совпадает с кадрами 0x8100 (VLAN), а VLAN Encap не совпадает ни с 0x800 (IP), ни с 0x806 (ARP), ни с !0x800 (то есть «не IP») — что вообще не имеет смысла.
Совершенно странное поведение проявляется (в winbox), когда я задаю VLAN Encap = 0x800 (IP). Счётчик этого правила (и вообще других nat-правил, если они есть) начинает показывать какие-то странные случайные числа, например Bytes: 5255520.0 GiB, Packets: 100895145455555555 (сразу после установки правила, так что, думаю, где-то происходит переполнение…).
Не уверен, ошибаюсь ли я или чего-то не понимаю, или это баг.
Однако на этапе dstnat я вижу только VLAN-пакеты (0x8100), других типов eth. пакетов нет. Ладно, допустим VLAN-инкапсуляция (по порту с PVID) происходит до обработки правил моста dstnat, проблем нет — потому что в классификации правил я могу задать совпадение для кадров 0x8100, а потом уже дальше классифицировать по протоколу «VLAN/VLAN Encap». И вот эта классификация по «VLAN Encap» работает, по-моему, неправильно.
Что я обнаружил на этом правиле: MAC Protocol-Num совпадает с кадрами 0x8100 (VLAN), а VLAN Encap не совпадает ни с 0x800 (IP), ни с 0x806 (ARP), ни с !0x800 (то есть «не IP») — что вообще не имеет смысла.
Совершенно странное поведение проявляется (в winbox), когда я задаю VLAN Encap = 0x800 (IP). Счётчик этого правила (и вообще других nat-правил, если они есть) начинает показывать какие-то странные случайные числа, например Bytes: 5255520.0 GiB, Packets: 100895145455555555 (сразу после установки правила, так что, думаю, где-то происходит переполнение…).
Не уверен, ошибаюсь ли я или чего-то не понимаю, или это баг.
