Способы оптимизации и сокращения количества записей в списке блокировок - gSpotx2f/ruantiblock_wiki_v0.9 GitHub Wiki

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

Некоторые методы уменьшения количества записей в итоговых конфигах ipset и 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"

В параметре ruantiblock.config.bllist_gr_excluded_sld (тип list) определяется список SLD, которые никогда не оптимизируются. Например, в livejournal.com у пользователей свои субдомены, в реестре лишь незначительная их часть, а следовательно, нет смысла ходить на весь livejournal.com через прокси. Установка значения:

uci add_list ruantiblock.config.bllist_gr_excluded_sld="livejournal.com"    #тип list!
и т.д.

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

2. Оптимизация списка IP адресов для ipset. Принцип такой же, как и в предыдущем пункте, только группировка выполняется по принадлежности 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. Таким образом, сокращается размер списка ipset, но под правила для блокировок попадает некоторое количество не заблокированных IP адресов. Установка значения:

uci set ruantiblock.config.bllist_ip_limit="30"

Параметр ruantiblock.config.bllist_gr_excluded_nets (тип list) может содержать шаблоны подсетей (в виде: 68.183.221., 149.154.162. и пр.), адреса которых никогда не группируются (важно для VPN конфигурации, ниже подробнее):

uci add_list ruantiblock.config.bllist_gr_excluded_nets="68.183.221."
uci add_list ruantiblock.config.bllist_gr_excluded_nets="149.154.162."
и т.д.

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

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

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

uci add_list ruantiblock.config.bllist_gr_excluded_nets="217.23.3."    #тип list!

Можно добавлять несколько подсетей:

uci add_list ruantiblock.config.bllist_gr_excluded_nets="217.23.3."
uci add_list ruantiblock.config.bllist_gr_excluded_nets="209.58.142."
и т.д.

3. Фильтрация записей. Исключение из итоговых конфигов ipset и 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 и пр.

5. Если вы используете VPN сервис с приемлемым качеством коннекта и без ограничений по типу трафика, то можно попробовать вариант с режимами обновления ip:

uci set ruantiblock.config.bllist_preset="rublacklist-ip"
или
uci set ruantiblock.config.bllist_preset="zapret-info-ip"
или
uci set ruantiblock.config.bllist_preset="antifilter-ip"

в совокупности с методом оптимизации списка ip-адресов (п.2). В этом случае, в ipset будет добавляться оптимизированный список всех ip-адресов из блэклиста. Такая конфигурация приведёт к избыточному использованию VPN-соединения, но позволит иcключить из схемы разрешение имён DNS для записей блэклиста (пользовательские FQDN записи всё-равно будут использовать DNS).

6. Пример комбинации разных оптимизаций списка блокировок:

uci set ruantiblock.config.bllist_preset="rublacklist-ip"
uci set ruantiblock.config.bllist_ip_limit="30"
uci set ruantiblock.config.bllist_summarize_ip="1"
uci set ruantiblock.config.bllist_summarize_cidr="1"
uci commit ruantiblock

Здесь обновление блэклиста выполняется в режиме ip, включена группировка и суммаризация IP адресов. После применения настроек нужно обновить блэклист для получения результата:

/usr/bin/ruantiblock update

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