Skip to content

Способы оптимизации и сокращения количества записей в списке блокировок

gSpot edited this page Nov 2, 2024 · 8 revisions

Оптимизация и уменьшение количества записей в списке блокировок возможны только для режимов обновления блэклиста использующих полный реестр, т.е. источники 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 адресов и доменов попадающих под правила в результате оптимизаций.