Релиз Carbon Reductor 7.0.0

Фильтрация HTTPS-ресурсов с активной динамической сменой IP адресов

Мы почти две недели готовили решение проблемы с ресурсами, часто меняющими IP адрес и, наконец, готовы выпустить новую мажорную версию 7.0.0! (На CentOS 7 она работать не будет, если что, а то мало ли, что подумаете).

  • Благодаря этому появляется возможность заредиректить пользователя на заглушку при обращении к HTTPS ресурсу
  • Помимо этого решается проблема с ресурсами, часто меняющими IP адреса
  • Возможно, благодаря этому можно будет отключить резолвер
  • На текущий момент поддерживается только A и AAAA записи для IPv4 запросов по UDP
  • На текущий момент генерируется пакет с TTL = 1 минуте, чтобы абоненты с кэшированием DNS не страдали долго из-за теоретических ошибочных блокировок.
  • Проверено: 100% юнит-тестов проходят, а модуль обкатан на серверах 5 провайдеров размером от 500 до 100000 абонентов.
  • Модуль интеграции с биллингом теперь тоже поддерживает использование нового модуля, что особенно важно для блокировки youtube.com / google.com и других ресурсов, использующих QUIC (HTTPS over UDP).

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

Из задумок, что сделать дальше:

  • Поддержка IPv6-запросов
  • Поддержка ответа с несколькими IP адресами
  • «Рандомизация» TTL чтобы не вызывать лишних подозрений
  • Поддержка TCP’шных DNS-запросов

Типовое решение для веб-сервера-заглушки

Поскольку модуль подмены DNS-ответов может редиректить абонентов только на IP, а не на конкретный URL, приходится немного модифицировать веб-сервера с заглушками. Поскольку клиентов много, мы постарались максимально автоматизировать этот процесс, а также учли несколько нюансов и проблем, возникающих при большом количестве обращений к серверу. Подробная инструкция по настройке и установке: https://github.com/carbonsoft/reductor_blockpages

P.S: Мы в скором времени сделаем поддержку такой заглушки прямо на Carbon Reductor, пока релизим так, чтобы те, кто ждал этой возможности не ждали её ещё несколько дней. Праздники же скоро, всё такое. Скорее всего необходимо будет добавить на Carbon Reductor ещё один IP адрес, доступный всем абонентам.

Упрощение файрвола и ненадобность части хуков

Теперь оптимизация подсистемы роутинга отключена по умолчанию, а при включении затрагивает только трафик, который попадает на интерфейсы, находящиеся в бриджах. Иными словами, чтобы разрешить доступ к какому-либо порту редуктора по интерфейсу для менеджмента достаточно просто добавить правило в filter INPUT с помощью хука, а mangle PREROUTING трогать не надо. Отрезание лишнего трафика происходит там же, где и применение правил NOTRACK (если опция включена) — в raw PREROUTING, цепочка — mirror_traffic.

Примечание — работает только с L2-зеркалами. L3 нужно будет настраивать вручную с помощью хуков. (пока что).

Веб-интерфейс

Помимо самого редуктора мы обновили веб-интерфейс до версии 1.1.8. Там много мелких улучшений в удобстве использования.

  • Видно какая вкладка/список сейчас открыты.
  • Вывод информации о сервере более стал унифицированным и читаемым.
  • У части графиков удалена ненужная легенда
  • И вообще местами текст переработан, исправлена куча орфографических ошибок (которых от себя даже не ожидали, очень стыдно), каша из английского и русского текста.

Иными словами смотреть в вебку стало немного приятнее. Обновить её нужно вручную, автоматическое обновление для неё мы пока не прикрутили, но в скором времени запилим и это. :)

Прочее

  • Для того чтобы диагностика и выгрузки не ругались на отсутствие сертификата теперь достаточно указать, что выгрузка идёт с собственного сервера (не нужно указывать дополнительно опцию skip_sign_request).
  • Диагностика при исправлении проблемы с актуальностью списков запускает выгрузку списков с timeout (≈55 минут) аналогично cron, в результате это защищает от зависания этого процесса.
  • Устранён небольшой Warning по поводу использования устаревшего BaseException в резолвере.
  • Увеличены TTL для записей нерезолвящихся доменов с 1 до 3 часов (для резолвящихся максимальный TTL остаётся 1 час). Ранее из-за большого числа таких доменов резолвер циклился. Впрочем, скоро он скорее всего всё равно станет не нужен.
  • Число тредов резолвера можно задать через QDNS_THREADS=8 ./bin/reload_ip.sh Повышена отказоустойчивость в случае проблем с /var/log/
  • Удалён fallback-режим (-134 строчки кода, ура).
Среди наших клиентов

Клиенты Carbon Soft