Как приложение перехватывает трафик
Скопировано

16 октября 2026

ID 316389

Как приложение перехватывает трафик

Приложение может использовать в своей работе один из двух режимов перехвата сетевого трафика: eBPF или iptables. Режим iptables выбран по умолчанию.

Параметр неприменим для устройств с процессором Эльбрус.

О перехвате сетевого трафика eBPF

В режиме eBPF приложение создает свое отдельное сетевое пространство имен (network linux namespace), куда перенаправляет сетевые пакеты с помощью eBPF-программ, привязанных к очередям tc (linux traffic control) локальных сетевых интерфейсов. Далее перенаправленный сетевой трафик проходит анализ в соответствии с активными сетевыми задачами и после этого возвращается на исходный сетевой интерфейс.

Для обмена данных между сетевыми пространствами имен используются пары виртуальных сетевых интерфейсов veth (каждый конец пары находится в своем сетевом пространстве имен):

  • Пара kesl_in – kesl_worm_in передает сетевой трафик входящих соединений.
  • Пара kesl_out – kesl_worm_out передает сетевой трафик исходящих соединений.

Через эти пары интерфейсов сетевой трафик передается на проверку из пространства имен по умолчанию в пространство имен, созданное приложением, и через них же возвращается обратно после анализа.

Сетевой трафик попадает на эти интерфейсы с других сетевых интерфейсов в системе, только если приложение запущено и включен сетевой перехват. Они не могут использоваться для передачи данных по сети между удаленными устройствами.

О перехвате сетевого трафика iptables

В режиме iptables перехват осуществляется с помощью механизма ядра tproxy.

В цепочке PREROUTING таблицы mangle создаются соответствующие правила, которые перенаправляют трафик на специальный порт, открытый приложением. Приложение также добавляет дополнительные правила в различные таблицы сетевого экрана операционной системы, предназначенные для перенаправления пакетов в tproxy. Сетевой перехватчик приложения встраивается между клиентом и сервером, устанавливая с каждым из них отдельное соединение, проверяет и передает трафик между ними.

Перехватываемые входящие и исходящие соединения маркируются отдельными метками, которые вы можете изменять в конфигурационном файле kesl.ini.

Для исходящих соединений вводятся дополнительные правила маршрутизации, которые перенаправляют исходящий трафик для перехватываемых портов на интерфейс loopback в tproxy.

Выбор режима перехвата сетевого трафика

Как выбрать режим перехвата сетевого трафика в Web Console

Как выбрать режим перехвата сетевого трафика в командной строке

Особенности и ограничения

  • Для изменения режима перехвата трафика требуется перезапустить приложение. Во время перезапуска происходит разрыв установленных сетевых соединений.
  • Если приложение не смогло использовать режим eBPF для перехвата сетевого трафика, будет использован режим iptables.

Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!