Рейтинг:1

Нужно ли переходить с iptables на nftables?

флаг ru

У меня есть следующие правила iptables.

Пересылка пакетов с 1.2.3.4 и 5.6.7.8 (источники), поступающих на порт 10000, на внешний socks5-сервер 10.10.10.10:1080. IP сервера 50.50.50.50

Эта схема хорошо работает, если объем источника невелик, и в то же время объем внешнего socks5 также невелик. Когда у меня есть 50 источников и 30 000 внешних носков - iptables зависает и пакеты не пересылаются, поэтому я подозреваю, что производительность iptables ограничена. Может ли кто-нибудь сказать мне, является ли nftables более мощным, и если да, то как перевести мои правила в nftables?

*натуральный
:ПРИНЯТЬ ПРИНЯТИЕ [1:40]
:ВВОД ПРИНЯТЬ [1:40]
: ВЫВОД ПРИНЯТЬ [0:0]
:ОТПРАВКА ПРИНЯТИЯ [0:0]

-A PREROUTING -s 1.2.3.4,5.6.7.8 -p tcp -m tcp --dport 10000 -j DNAT --назначение 10.10.10.10:1080
-A POSTROUTING -d 10.10.10.10/32 -p tcp -m tcp --dport 1080 -j SNAT --к источнику 50.50.50.50

СОВЕРШИТЬ

*фильтр
:ВВОД ПРИНЯТЬ [15:1012]
:ВПЕРЕД ПРИНЯТЬ [26:1348]
: ВЫВОД ПРИНЯТЬ [9:932]
СОВЕРШИТЬ
Рейтинг:1
флаг cl
A.B

Вот примерное объяснение того, что может пойти не так.

  • Перед iptables правила:

    X (X = 2 в начальном примере OP) IP-адреса источника с 2 ^ 16 возможными портами источника и 1 адресом и портом назначения:

    X * 2^16 возможных соединений.

  • После iptables правила: X источников были сжаты в один источник

    1 * 2^16 возможных соединений.

X * 2 ^ 16 соединений не может соответствовать только 2 ^ 16 соединениям. Конфликт исходного порта будет происходить все чаще и чаще и будет решаться сменой исходного порта, но найти свободный исходный порт, не конфликтующий с другим потоком, будет все сложнее: начнет увеличиваться падение производительности, могут даже начать происходить отброшенные пакеты.

Произойдет ли это по-другому, если iptables были заменены на nftables? Нет. В обоих случаях они не являются частями, разрешающими столкновение. Это разрешение выполняется в том же общем бэкэнде Netfilter: в nf_nat модуль ядра, возможно, повторяя несколько раз, если это необходимо, и даже отказываясь (например, отбрасывая новый коннтрек запись и пакет, инициировавший его предварительное создание).

Причина в том, что исходный NAT выполняется, когда есть единственное возможное место назначения (сервер): его следует избегать.

Возможные обходные пути:

  • не используйте исходный NAT. Вместо этого следует установить адекватную маршрутизацию (даже если для этого требуется множественная адресация или туннель), чтобы 10.10.10.10 не приходилось видеть один источник 50.50.50.50. Вопрос не объясняет, зачем нужен этот SNAT, поэтому невозможно более подробно остановиться на нем.

  • иметь несколько адресов источников для балансировки нагрузки и распределения давления порта источника. Это может быть достигнуто с iptables с использованием статистика модуль для балансировки нагрузки на несколько СНАТ цели.

Переключение на nftables обычно является улучшением, но в данном случае это не похоже на решение.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.