Мы разрабатываем наш собственный модуль ядра, который выполняет расширенный исходный nat в обработчике предварительной маршрутизации netfilter. После обновления с ядра Linux 2.6.32 (Ubuntu 10.04) до 2.6.35 (Ubuntu 10.04 lucid-back-ports) кажется, что пакеты SNAT просто удаляются внутри ядра Linux.
Я знаю, что SNAT никогда не рекомендовалось использовать в хуках предварительной маршрутизации для общего использования (Список рассылки Netfilter), но все же есть некоторые причины, по которым мы предпочли бы выполнить анализ источника до того, как будет принято фактическое решение о маршрутизации.
Есть ли у кого-нибудь опыт разработки модулей ядра, выполняющих SNAT в обработчике предварительной маршрутизации netfilter для ядра Linux версии 2.6.35+? Что именно нужно изменить в коде linux-kernel/netfilter-kernel-module, чтобы SNAT-пакеты не отбрасывались? Может быть, SNAT в предварительной маршрутизации — это просто плохая идея для ядра Linux версии 2.6.35+, и нам лучше использовать nf_marks для решения о маршрутизации, а SNAT — в постмаршрутизации?
Я использую Ubunut 10.04 с портированным ядром Linux (2.6.35) на X86_64.