extFilter

Программа для блокирования сайтов из списка РКН с использованием DPDK.

Функционал

Программа осуществляет блокировку сайтов путем анализа зеркалированного трафика от пользователей. В случае нахождения вызываемого абонентом HTTP ресурса в списке блокировки, пользователю отсылается редирект на специальную страницу или сбрасывается соединение. Блокировка HTTPS ресурсов осуществляется на основе имени сервера в client hello запросе от пользователя или ip адреса сервера, если имени сервера нет в client hello запросе. В случае нахождения вызываемого абонентом HTTPS ресурса в списке блокировки, соединение с данными ресурсом будет сброшено. Так же возможна работа программы в режиме моста(bridge), что позволяет исключить пропуски блокированного трафика.

Требования

Для сборки программы необходимы следующие библиотеки и программы:

Для работы программы требуется не менее двух интерфейсов, подключенных в DPDK. Один из интерфейсов для приёма зекралированного трафика, а другой для отправки ответов программы. Зеркалированный трафик может приниматься на один или более интерфейсов. Ответы отправляются только с одного интерфейса.

Сборка

Настройка DPDK

Для работы DPDK необходимо настроить huge-pages и подключить необходимые сетевые адаптеры в DPDK.

Пример настройки для CentOS 7:

[bootloader] cmdline=isolcpus=1,2,3 default_hugepagesz=1G hugepagesz=1G hugepages=4

isolcpus=1,2,3 - Какие ядра освободить для работы dpdk/extfilter.
default_hugepagesz=1G hugepagesz=1G - Размер страницы памяти для dpdk/extfilter.
hugepages=4 - Количество страниц памяти для dpdk/extfilter (в данном примере под dpdk/extfilter будет выделено 4 Гигабайта памяти).

- Активируем профиль
```bash
tuned-adm profile dpdk-tune

Запуск

Параметры работы программы задаются в конфигурационном файле. Для запуска программы необходимо указать путь к конфигурационному .ini файлу (–config-file в командой строке). Для запуска в режиме daemon необходимо указать ключи –daemon и –pidfile=/path/to/file.pid

Файлы списков блокировки

Файлы с данными для блокировки (домены, url и т.д.) должны быть в формате nfqfilter.

Обновление списков блокировки

Для загрузки обновленных списков блокировки без перезапуска программы необходимо подать сигнал HUP.

Поддержка проекта

Если вы используете программу и она вам нравится, то вы можете отблагодарить автора через Yandex.Money 410014706910423