Если после установки возникли проблемы... - gSpotx2f/ruantiblock_wiki_v0.9 GitHub Wiki

1. Убедитесь, что ruantiblock включен

Выполните в консоли :

/usr/bin/ruantiblock status

Вывод статуса не должен содержать ошибок. Если есть ошибки связанные с iptables или ipset - выполните:

/usr/bin/ruantiblock destroy
rm /var/run/ruantiblock*
rm /tmp/ruantiblock/*

И запустите заново:

/usr/bin/ruantiblock start
/usr/bin/ruantiblock update

При перезапуске службы "firewall" в OpenWrt удаляется вся конфигурация iptables и, соответственно, ruantiblock приходит в выключенное состояние. Поэтому, если в системе используются какие-либо скрипты с перезапуском "firewall", в них следует прописать и перезапуск ruantiblock: /usr/bin/ruantiblock restart.

2. Проверьте запущен ли Tor или VPN клиент

Можно увидеть в консоли:

ps | grep tor

или

ps | grep openvpn

Также убедитесь, что сервисы стартуют при запуске системы:

/etc/init.d/tor enable

или

/etc/init.d/openvpn enable

В VPN конфигурации проверьте настройки межсетевого экрана: для устройства tun0 должен быть создан интерфейс (например, с названием VPN) и добавлен в зону wan, иначе трафик из локальной сети не сможет попасть в VPN тунель.

3. Ошибка маршрутизации VPN (VPN ROUTING ERROR)

Такая надпись появляется в выводе статуса (/usr/bin/ruantiblock status) в том случае, если отсутствует необходимая для работы ruantiblock запись в таблице маршрутизации. Это может быть связано, во-первых, с отсутствием VPN соединения (отключен клиент OpenVPN и пр.). Во-вторых, с тем, что при поднятом VPN соединении не добавляются правила маршрутизации: проверьте наличие скрипта /etc/hotplug.d/iface/40-ruantiblock и значение параметра определяющего используемый VPN интерфейс:

uci get ruantiblock.config.if_vpn

Далее, для решения проблемы, достаточно выполнить:

/usr/bin/ruantiblock restart

4. Ошибка при обновлении блэклиста

Когда при попытке обновления командой /usr/bin/ruantiblock update в консоли (логе) появляется сообщение Error! Another instance of update is already running - это означает, что присутствует файл другого процесса обновления (/var/run/ruantiblock_update.pid), который или выполняется в данный момент, или ранее завершился некорректно. Если в данный момент обновление уже не выполняется, запустите новый процесс обновления командой (удалит старый pid-файл):

/usr/bin/ruantiblock force-update

Разумеется, можно удалить и вручную:

rm /var/run/ruantiblock_update.pid

5. Убедитесь, что корректно разрешаются DNS-имена

Провайдеры на своих DNS-серверах часто ограничивают или изменяют сторонний DNS-трафик (DNS-спуфинг). Поэтому необходима замена провайдерского DNS-сервера на сторонний и обязательное применение DNS-шифрования (dnscrypt-proxy, https-dns-proxy и пр.). Очень желательно настроить перехват стороннего DNS-трафика хостов локальной сети (в последних версиях https-dns-proxy такая опция уже встроена).

6. Проверьте попадает ли трафик к заблокированным сайтам в цепочку ruantiblock в iptables

Выполните в консоли :

/usr/bin/ruantiblock status

Блок Iptables rules: содержит счётчики правил для CIDR-диапазонов (rc), IP адресов (ri) и IP адресов, которые добавляет dnsmasq (rd). При запросе заблокированного сайта или IP соответствующие счётчики растут.

7. Проверьте добавляет ли dnsmasq IP адреса заблокированных доменов из своего конфига в ipset rd

Выполните в консоли :

/usr/bin/ruantiblock status

В блоке Ip sets: сет с именем rd. При запросе заблокированного домена dnsmasq разрешает доменное имя в IP адрес и помещает его в ipset. Счётчик Number of entries: у сета rd должен увеличиваться при запросе новых заблокированных ресурсов. Далее, спустя некоторое время, этот IP адрес удаляется из сета.

Можно увидеть сами IP адреса (если они есть в данный момент):

ipset list rd

Если при обращении к заблокированному домену dnsmasq не добавляет его IP адрес в свой ipset, то причиной может быть отсутствие обращений к dnsmasq (DNS-серверу) со стороны ОС вашего ПК (или другого устройства). Локальный резолвер ОС часто кэширует полученные адреса и не делает запрос, следовательно, dnsmasq не добавляет IP адрес в ipset и вы получаете "заглушку" от провайдера для данного сайта. По истечении таймаута записи в кэше всё опять работает правильно. В этой ситуации можно либо подождать пока запись будет удалена из кэша по таймауту, либо очистить DNS-кэш ОС. Для Windiows всё просто: ipconfig /flushdns, для других ОС сложнее - ищите в Google. Также, не повредит очистить кэш браузера. Попробуйте больше разных заблокированных сайтов для тестирования...

8. Если возникают проблемы с нехваткой оперативной памяти

На девайсах с оперативной памятью в 128Мб и менее может проявляться ошибка нехватки памяти при обновлении блэклиста. Размер блэклиста постоянно растёт, памяти начинает не хватать... Например, при использовании lua-парсера это выглядит как сообщение Killed:

root@OpenWrt:~# /usr/bin/ruantiblock update
ruantiblock update...
Killed
Module run attempt 1: failed [/usr/libexec/ruantiblock/ruab_parser.lua]

и приводит к краху интерпретатора. Или же роутер просто зависает. Если при обновлении блэклиста в логе роутера появляются ошибки Module error! или kernel: Out of memory с трэйсами ядра, попробуйте выполнить в консоли команду (создание конфигов без перезагрузки dnsmasq и без изменения конфигурации ipset):

/usr/bin/ruantiblock.sh data-files

Присутствие подобных ошибок или зависаний говорит о наличии проблемы. Во-первых, можно попробовать подключить SWAP-файл (или раздел) на внешнем носителе (конечно, если это возможно на вашем устройстве). Во-вторых, подобрать настройки для оптимизации работы модуля-парсера и сократить количество записей в блэклисте (подробнее здесь). Далее, если подключен внешний носитель (extroot), можно попробовать использовать python-модуль, он стабильнее работает в условиях проблем со свободной памятью. Это не является полным решением проблемы, но позволит немного сократить потребление памяти.

Следующая конфигурация даёт самый минимальный размер списка блокировок (и требует менее всего памяти):

uci set ruantiblock.config.ipset_clear_sets="1"
uci set ruantiblock.config.bllist_preset="antifilter-ip"
uci set ruantiblock.config.bllist_ip_limit="0"
uci set ruantiblock.config.bllist_summarize_ip="0"
uci set ruantiblock.config.bllist_summarize_cidr="0"
uci commit ruantiblock

Здесь минимальный список IP адресов, приведённых к подсетям /24 (https://antifilter.download/list/allyouneed.lst). Недостаток в том, что в этих диапазонах большое количество не заблокированных адресов, и трафик к ним будет также проходить через прокси. В общем, в случае нехватки оперативной памяти, это возможный вариант...