Перейти в группу новостей: 
 
Тема linux nftables
Написал Alexei <webmaster@microsoft.com>
Дата 26 сентября 2022 в 10:33:55
Группа новостей kraft.os.linux

Всем привет.
Заморочился с nftables (то, что взамен iptables в linux сейчас). Не
получается кое-что, нужна помощь зала.
Задача такая: есть линукс-машина (выполняет функцию роутера для
локалки), подключена к интернету, и эта же линукс-машина выполняет роль
сервера с такой спецификой трафика: на неё из интернетов сыплются с
большого количества IP адресов UDP запросы, а она отправляет ответы;
поток достигает 30 тысяч пакетов в секунду, поэтому пришлось отказаться
от коробочных роутеров (есть микротики разные SOHO), имеющихся в
наличии: у них переполняется память и/или они тонут в обработке
трассировки соединений, которая неизбежно задействуется в NAT-схеме.
Итак, две задачи: обрабатывать UDP трафик (in/out) и интернет для
локалки (forward/NAT).
По nftables имеется документация, например, картинка с стадиями
обработки трафика внутри подсистемы nftables:
https://wiki.nftables.org/wiki-nftables/index.php/Netfilter_hooks.
Зелёные прямоугольники там - это доступные хуки в пространстве IP
применений (точки вызова цепочек с правилами nftables).
Я создаю такие правила:
table ip mytable {
chain mynat {
type nat hook postrouting priority srcnat; policy drop; #это точка
входа для ситуации с NAT, всё не попавшее в правила- дропается пока.
iif "vlan3" oif "eth0" ip saddr 192.168.90.2 snat to 141.101.220.3
#SNAT для интернета для локалки
ip saddr 0.0.0.0/0 meta nftrace set 1 #пометка не попавшего в
правила, для логгирования
}
chain in_notrack {
type filter hook prerouting priority raw; policy accept;
udp dport 7070 notrack #приходящие UDP на сервер проводятся мимо
трассировщика для эконоии памяти и времени, приоритет raw выше
приоритета обработчика трассировщика соединений
}
}

И в моём случае получается, что приходящие UDP на сервер действительно
не попадают к трассировщику (conntrack -L), но UDP-ответы при выходе от
приложения в направлении интернета попадают в цепочку mynat.
Почему они попадают в цепочку с типом nat ? Не могу понять из
документации, когда именно хуки передают управление в цепочки типа nat
- может, кто-то обладает этим знанием, поделитесь ?
Я добавлял цепочку для исходящих пакетов:
chain myout {
type filter hook output priority filter; policy accept;
udp sport 7070 notrack counter #предполагал, что notrack уберёт
обращение к NAT
}
Но толку мало. Счётчик прирастает, но увод в nat всё равно присутствует.

В общем, нужны идеи, как сделать notrack для определённого вида трафика
и работу интернетов для локалки :)
Спасибо.

Все сообщения в этой теме
 
#  linux nftables Alexei 26 сентября 2022 в 10:33:55
#  Re: linux nftables beer-s 27 сентября 2022 в 17:32:59
#  Re: linux nftables beer-s 27 сентября 2022 в 17:44:13
#  Re: linux nftables Alexei 27 сентября 2022 в 19:33:57
#  Re: linux nftables beer-s 27 сентября 2022 в 21:51:54
#  Re: linux nftables Alexei 29 сентября 2022 в 11:54:31



Время выполнения скрипта: 0.00069808959960938 сек.