Чт, 2015-12-17
Данный сервер реализует ICAP (Internet Content Adaptation Protocol RFC3507) протокол
Втр, 2015-12-01
Аппаратно-программная система, позволяющая 3rd party устройствам, программам, контролировать и модифицировать инкапсулированный (туннельный) трафик TCP/IP
Ср, 2015-05-20
LKM модуль для постановки и считывания меток для CIDR в kernel-space прикладными программами

Специализированный прокси сервер

    Данный сервер реализует проксирование TCP/IP трафика на основе следующих протоколов, технологий:

  • SOCKS 4;
  • SOCKS 5;
  • HTTP;
  • TPROXY.

    Основное назначение сервера - модификация, проверка, TCP/IP трафика, передаваемого серверу. Неблокируемый сервер разработан для ОС Linux с использованием паттерна worker thread, что позволяет эффективно работать в high load. Все функции и задачи, связанные с модификацией трафика вынесены в отдельные подгружаемые модули. Наличие специализированного программного интерфейса (API) и задекларированых требований к модулям позволяет разработывать их отдельно без внесений измений в сервер.  В трафике выделяются два потока от клиента к серверу и от сервера к клиенту. Любой модуль работает с данными заданного потока. Данные потока обрабатываются одним или более модулями последовательно, очередность определяется в процессе конфигурирования сервера. Последовательность модулей для потока активного соединения - называется цепочка модулей потока. Начальная цепочка модулей для проксируемых соединений задается при настройке сервера.

    На настоящий момент, модуль с помощью API, предоставляемого ему, может решить следующие задачи:

  • Получить очередной буфер данных из потока.
  • Отправить данные в поток.
  • Перегрузить цепочку модулей потока текущего активного соединения.
  • Создать сетевое взаимодействие с внешними сервисами. Данное взаимодействие осуществляется в рамках одного из worker-ов сервера, что позволяет избежать решения вопросов многопоточности в модулях.
  • Получить/записать данные через сетевое взаимодействие. 

   На настоящий момент, реализованы следующие модули

  • dpi - загрузка определенных цепочек модулей в зависимости от типа трафика.
  • cidr - загрузка определенных цепочек модулей в зависимости от CIDR клиента и(или) сервера.
  • time - загрузка определенных цепочек модулей в зависимости от времени.
  • rpl - подмена трафика на основе regexp match/replace, за счет использования библиотеки pire сложность этой задачи сведена к линейной. 
  • regexp - загрузка определенных цепочек на основе match regexp выражений в потоке.
  • dmp - дамп трафика на диск.
  • icsp - взаимодействие с сервером icap на основе regexp правил.
  • url - подмена url на основе regexp правил.
  • block - блокирование трафика.

   В процессе разработки были использованы следующие средства разработки, протоколы, технологии:

  • С++;
  • libev;
  • Pire;
  • HTTP;
  • SOCKS 4;
  • SOCKS 5;
  • ICAP;
  • tproxy.

   В зависимости от конфигурации и наличии модулей данный сервер может быть использован, например, для решения следующих задач:

  • подмена рекламных блоков в http;
  • удаление рекламных блоков из http;
  • проверка на наличие вирусов;
  • блокирование передачи данных определенных типов;
  • блокирование передачи данных, содержащих определенные паттерны;
  • дамп трафика, содержащего определенные паттерны;
  • и т/д.