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