Подтвердить что ты не робот

Утилиты для утилизации пакетов, кроме iptables?

Я ищу утилиту Linux, которая может изменять полезные нагрузки сетевых пакетов на основе набора правил. В идеале, я бы использовал iptables и модуль ядра netfilter, но они не поддерживают универсальное распределение полезной нагрузки: iptables изменяет различные поля заголовка (адреса, порты, TOS и т.д.) И может совпадать с произвольным байт в пакете, но, очевидно, он не может изменить произвольные данные в пакете.

Модуль ядра был бы большим плюсом, так как эффективность является проблемой, но я рад изучить любые другие варианты, которые могли бы выполнить работу.

Спасибо за ваши идеи!


Долгожданное обновление:

Мы решили использовать модуль NFQUEUE, который является последней реализацией модулей QUEUE, предложенных Робертом Гэмблом. Выглядело это довольно просто, с бонусом за безопасность, позволяющим запускать наш код в пространстве пользователя, а не ядра.

Реализация была бы почти тривиальной, если бы мы просто хотели изменить полезную нагрузку без изменения ее размера. В этом случае мы определим правило iptables, чтобы выбрать для нас "интересные" пакеты и отправить им цель NFQUEUE. Мы напишем функцию обратного вызова, которая будет проверять пакеты из NFQUEUE, изменять данные по мере необходимости и пересчитывать контрольные суммы в их заголовках TCP и IP.

Тем не менее, наш вариант использования включает в себя добавление дополнительных символов в поток данных. Это имеет несколько очевидный побочный эффект увеличения соответствующих номеров SEQ/ACK в потоке TCP, и не столь очевидный побочный эффект - достаточно запутывает модуль conntrack, что он полностью нарушает NAT, После многих исследований, расчесывания голов и экспериментов наиболее целесообразным решением было отключить отслеживание соединений для этих конкретных пакетов (с целью NOTRACK в таблице raw) и обработать это в нашем обратном вызове. Сохрани свои помидоры и ненавидь почту; Я нисколько не горжусь тем, что позволил вам скрыться, но это был единственный способ доставить покупателю надежный продукт до следующего ледникового периода. И это хорошая история. Но я искренне ценю и разделяю ваши искренние чувства.

Версия 2 будет использовать наше новое просвещение, заменив наш обратный вызов и несколько правил iptables на собственный NAT и/или conntrack помощник. Мы уверены, что данное упражнение дало нам достаточно опыта для создания модуля ядра, который органично вписался бы в архитектуру сетевого фильтра для решения проблем, с которыми мы столкнулись.

4b9b3361

Ответ 1

Я не использовал его, но цель QUEUE netfilter выглядит так, как будто она может работать. Он использует сокет nflink и приложение пользовательского пространства, зарегистрированное в сокете, для выполнения модификаций полезной нагрузки.

В справочной странице libipq содержится подробная информация о том, как ее использовать, и приведен простой пример.

Ответ 2

Разрешение:

У нас появился пользовательский модуль для netfilter, который, безусловно, является "правильным" инструментом для работы.