-
Notifications
You must be signed in to change notification settings - Fork 21
Способы оптимизации и сокращения количества записей в списке блокировок
Оптимизация и уменьшение количества записей в списке блокировок возможны только для режимов обновления блэклиста использующих полный реестр, т.е. источники 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 адресов и доменов попадающих под правила в результате оптимизаций.