mirror of
https://github.com/gSpotx2f/ruantiblock_openwrt.git
synced 2026-05-14 22:50:58 +00:00
Created Способы оптимизации и сокращения количества записей в списке блокировок (markdown)
@@ -0,0 +1,51 @@
|
||||
Некоторые методы уменьшения количества записей в итоговых конфигах ipset и dnsmasq (в примерах опции UCI):
|
||||
|
||||
**1.** Оптимизация списка доменов в конфиге dnsmasq, путём группировки субдоменов (3 ур-ня и выше) под одной записью 2-го уровня (SLD). Вместо нескольких записей субдоменов в конфиг dnsmasq добавляется всего одна запись второго уровня. Кол-во субдоменов в реестре, необходимое для срабатывания этой группировки, определяется в опции `ruantiblock.config.sd_limit`. По умолчанию: 16. Т.е. если в реестре встречается >16 субдоменов `*.domain.com`, то вместо них добавляется одна запись `domain.com` и весь трафик ко всем субдоменам domain.com проходит через прокси (включая и те сайты в зоне domain.com, которых нет в реестре). В параметре `ruantiblock.config.opt_exclude_sld` (тип list) определяется список SLD, которые никогда не оптимизируются. Например, в livejournal.com у пользователей свои субдомены, в реестре лишь незначительная их часть, а следовательно, нет смысла ходить на весь livejournal.com через прокси. Такая оптимизация довольно эффективна и позволяет сократить конфигурацию dnsmasq, но не заблокированные субдомены также попадают под правила обхода блокировок. Данные оптимизации применяются только в режиме обновления блэклиста `fqdn`.
|
||||
|
||||
**2.** Оптимизация списка IP адресов для ipset. Принцип такой же, как и в предыдущем пункте, только группировка выполняется по принадлежности IP адреса к подсети класса C (/24). Необходимое для срабатывания этой группировки количество IP адресов (принадлежащих одной подсети) в реестре определяется опцией `ruantiblock.config.ip_limit`. Например, если значение 20, то при наличии в реестре >20 адресов одной подсети /24 (к примеру: `192.168.1.1`, `192.168.1.2` ... `192.168.1.20`) вместо них будет добавлена одна запись для всей подсети: `192.168.1.0/24`. Таким образом, сокращается размер списка ipset, но под правила для блокировок попадает некоторое кол-во не заблокированных IP адресов. Параметр `ruantiblock.config.opt_exclude_nets` (тип list) может содержать шаблоны подсетей (в виде: `68.183.221.`, `149.154.162.` и пр.), адреса которых никогда не группируются (важно для VPN конфигурации, ниже подробнее). Также, можно применить опции суммаризации IP адресов:
|
||||
|
||||
ruantiblock.config.summarize_ip="1"
|
||||
ruantiblock.config.summarize_cidr="1"
|
||||
|
||||
(суммирование идущих подряд IP адресов в диапазоны CIDR). В чистом виде, без других оптимизаций, суммаризация даёт уменьшение записей где-то около 15% (плюс в том, что в получившиеся диапазоны не попадают не заблокированные адреса). Суммаризация выполняется после группировки IP адресов, поэтому применение обеих этих оптимизаций даёт неплохой результат (суммаризация относительно тяжёлая операция и увеличивает время обработки блэклиста при обновлении). Оптимизации IP адресов применяются в обоих режмах обновления блэклиста (`ip` и `fqdn`).
|
||||
|
||||
При использовании VPN конфигурации необходимо добавить IP адрес подсети VPN-сервера в парметр `ruantiblock.config.opt_exclude_nets`, для исключения этой подсети из оптимизации списка IP адресов (иначе, в случае присутствия заблокированных адресов в подсети, парсер может сгруппировать эти адреса в запись CIDR и VPN-клиент будет пытаться заворачивать своё соединение в себя). Например, если IP адрес VPN-сервера 217.23.3.91:
|
||||
|
||||
uci add_list ruantiblock.config.opt_exclude_nets="217.23.3." #тип list!
|
||||
|
||||
Можно добавлять несколько подсетей:
|
||||
|
||||
uci add_list ruantiblock.config.opt_exclude_nets="217.23.3."
|
||||
uci add_list ruantiblock.config.opt_exclude_nets="209.58.142."
|
||||
и т.д.
|
||||
|
||||
**3.** Фильтрация записей. Исключение из итоговых конфигов ipset и dnsmasq записей ненужных вам хостов по шаблонам. К примеру, если вы никогда не посещаете онлайн-казино, то можно добавить шаблоны для исключения подобных сайтов, чтобы сократить размер конфигов и, как следствие, потребление оперативной памяти. [Подробнее об этой функции...](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/%D0%A4%D0%B8%D0%BB%D1%8C%D1%82%D1%80%D0%B0%D1%86%D0%B8%D1%8F-%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D0%B5%D0%B9-%D0%B1%D0%BB%D1%8D%D0%BA%D0%BB%D0%B8%D1%81%D1%82%D0%B0-%D0%BF%D0%BE-%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D0%B0%D0%BC)
|
||||
|
||||
**4.** Отключение альтернативных DNS-серверов в конфиге dnsmasq сокращает количество строк конфигурации в 2 раза:
|
||||
|
||||
uci set ruantiblock.config.alt_nslookup="0"
|
||||
|
||||
Вместо провайдерского DNS-сервера можно использовать сторонние (`8.8.8.8`, `1.1.1.1` и пр.). Для провайдеров, блокирующих сторонние DNS-серверы, есть dnscrypt-proxy, [https-dns-proxy](https://github.com/gSpotx2f/ruantiblock_openwrt/wiki/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-https-dns-proxy) и пр.
|
||||
|
||||
**5.** Если вы используете VPN сервис с приемлемым качеством коннекта и без ограничений по типу трафика, то можно попробовать вариант с режимом обновления `ip`:
|
||||
|
||||
uci set ruantiblock.config.block_mode="ip"
|
||||
|
||||
в совокупности с методом оптимизации списка ip-адресов (п.2). В этом случае, dnsmasq не участвует в обходе блокировок, а в ipset будет добавляться оптимизированный список всех ip-адресов из реестра. Такая конфигурация приведёт к избыточному использованию VPN-соединения, но позволит иcключить из схемы dnsmasq, т.е. в этой конфигурации нет зависимости от разрешения имён и службы DNS (в контексте именно обхода блокировок).
|
||||
|
||||
**6.** Пример комбинации разных оптимизаций списка блокировок:
|
||||
|
||||
uci set ruantiblock.config.bllist_mode="fqdn"
|
||||
uci set ruantiblock.config.bllist_source="rublacklist"
|
||||
uci set ruantiblock.config.fqdn_filter="1"
|
||||
uci set ruantiblock.config.sd_limit="16"
|
||||
uci set ruantiblock.config.ip_limit="20"
|
||||
uci set ruantiblock.config.summarize_ip="1"
|
||||
uci set ruantiblock.config.summarize_cidr="1"
|
||||
uci commit ruantiblock
|
||||
|
||||
Здесь обновление блэклиста выполняется в режиме fqdn (с применением dnsmasq), включена фильтрация доменов по шаблонам, оптимизация IP и доменов, а также суммаризация IP адресов. После применения настроек нужно обновить блэклист для получения результата:
|
||||
|
||||
/usr/bin/ruantiblock update
|
||||
|
||||
Подбирая разные комбинации параметров оптимизации можно добиться оптимального для вашего устройства баланса между размером конечных конфигов (ipset, dnsmasq) и количеством лишних IP адресов и доменов попадающих под правила в результате оптимизаций.
|
||||
Reference in New Issue
Block a user