9
Способы оптимизации и сокращения количества записей в списке блокировок
gSpot edited this page 2025-11-13 18:16:16 +03:00
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Оптимизация и уменьшение количества записей в списке блокировок возможны только для режимов обновления блэклиста использующих полный реестр, т.е. источники zapret-info, rublacklist и antifilter. Источник ruantiblock предоставляют уже оптимизированный список блокировок и описанные ниже методы оптимизации с ним не работают.

Некоторые методы уменьшения количества записей в итоговых конфигах nftables и dnsmasq (в примерах опции UCI):

1. Оптимизация списка доменов в конфиге dnsmasq, путём группировки субдоменов (3 ур-ня и выше) под одной записью 2-го уровня (SLD). Вместо нескольких записей субдоменов в конфиг dnsmasq добавляется всего одна запись второго уровня. Количество субдоменов в реестре, необходимое для срабатывания этой группировки, определяется в опции ruantiblock.config.bllist_sd_limit. По умолчанию: 16. Т.е. если в реестре встречается >16 субдоменов *.domain.com, то вместо них добавляется одна запись domain.com и весь трафик ко всем субдоменам domain.com проходит через прокси (включая и те сайты в зоне domain.com, которых нет в реестре). Установка значения:

uci set ruantiblock.config.bllist_sd_limit="16"

В файле /etc/ruantiblock/gr_excluded_sld определяется список SLD, которые никогда не оптимизируются. Например, в livejournal.com у пользователей свои субдомены, в реестре лишь незначительная их часть, а следовательно, нет смысла ходить на весь livejournal.com через прокси. Формат файла: одна запись FQDN на строку, можно комментировать строки (# - первый символ строки). Пример:

#comment
domain.net
anotherdomain.com

Такая оптимизация довольно эффективна и позволяет сократить конфигурацию dnsmasq, но не заблокированные субдомены также попадают под правила обхода блокировок. Данные оптимизации применяются только в режимах обновления блэклиста fqdn (rublacklist-fqdn, zapret-info-fqdn).

2. Оптимизация списка IP адресов для nftables. Принцип такой же, как и в предыдущем пункте, только группировка выполняется по принадлежности IP адреса к подсети класса C (/24). Необходимое для срабатывания этой группировки количество IP адресов (принадлежащих одной подсети) в реестре определяется опцией ruantiblock.config.bllist_ip_limit. Например, если значение 30, то при наличии в реестре >30 адресов одной подсети /24 (к примеру: 192.168.1.1, 192.168.1.2 ... 192.168.1.31) вместо них будет добавлена одна запись для всей подсети: 192.168.1.0/24. Таким образом, сокращается размер списка nftables, но под правила для блокировок попадает некоторое количество не заблокированных IP адресов. Установка значения:

uci set ruantiblock.config.bllist_ip_limit="30"

В файле /etc/ruantiblock/gr_excluded_nets определяются шаблоны подсетей (в виде: 68.183.221., 149.154.162. и пр.), адреса которых никогда не группируются (важно для VPN конфигурации, ниже подробнее). Формат файла: один шаблон IP подсети (/24) на строку , можно комментировать строки (# - первый символ строки). Пример:

#comment
74.125.131.
74.125.0.

При использовании VPN конфигурации необходимо добавить IP адрес подсети VPN-сервера в файл /etc/ruantiblock/gr_excluded_nets для исключения этой подсети из группировки списка IP адресов (иначе, в случае присутствия заблокированных адресов в подсети, парсер может сгруппировать эти адреса в запись CIDR и VPN-клиент будет пытаться заворачивать своё соединение в себя). Например, если IP адрес VPN-сервера 217.23.3.91, то нужно добавить 217.23.3., как было описано выше.

Также, можно применить опции суммаризации IP адресов (суммирование идущих подряд IP адресов в диапазоны CIDR). В чистом виде, без других оптимизаций, суммаризация даёт некоторое уменьшение записей (плюс в том, что в получившиеся диапазоны не попадают не заблокированные адреса). Суммаризация выполняется после группировки IP адресов, поэтому применение обеих этих оптимизаций даёт неплохой результат (суммаризация относительно тяжёлая операция и увеличивает время обработки блэклиста при обновлении). Оптимизации IP адресов применяются в обоих режмах обновления блэклиста (ip и fqdn):

uci set ruantiblock.config.bllist_summarize_ip="1"
uci set ruantiblock.config.bllist_summarize_cidr="1"

3. Фильтрация записей. Исключение из итоговых конфигов nftables и dnsmasq записей ненужных вам хостов по шаблонам. К примеру, если вы никогда не посещаете онлайн-казино, то можно добавить шаблоны для исключения подобных сайтов, чтобы сократить размер конфигов и, как следствие, потребление оперативной памяти. Подробнее об этой функции...

4. Отключение альтернативных DNS-серверов в конфиге dnsmasq сокращает количество строк конфигурации в 2 раза (в режиме обновления блэклиста fqdn):

uci set ruantiblock.config.bllist_alt_nslookup="0"

Вместо провайдерского DNS-сервера можно использовать сторонние (8.8.8.8, 1.1.1.1 и пр.). Для провайдеров, блокирующих сторонние DNS-серверы, есть dnscrypt-proxy, https-dns-proxy и пр.

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