14
Записи пользователя в блэклисте
gSpot edited this page 2025-08-23 17:30:56 +03:00
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Добавление собственных записей для обхода блокировок (а также не заблокированных сайтов на которые необходимо всегда ходить через VPN/прокси).

Начиная с версии 2.0 в ruantiblock существует новая концепция функции записей пользователя. Теперь пользовательские записи представляют собой экземпляры с отдельными настройками прокси (Tor, VPN, прозрачный прокси), списка пользовательского блэклиста и ссылок на удалённые файлы записей. Каждый экземпляр имеет свой набор цепочек и правил в nftables, свою таблицу маршрутизации (для VPN конфигурации). Главный экземпляр (основной блэклист) имеет такой же набор цепочек и правил, но использует записи из реестра (обновляемые, как и раньше, либо с GitHub, либо с помощью модуля-парсера из поддерживаемых источников). Помимо главного экземпляра, всего доступно 5 экземпляров для записей пользователя с индивидуальными настройками. Это позволяет настроить обход блокировок с несколькими VPN/прокси по разным спискам (допустим, youtube в один VPN, какие-то избранные сайты в другой, все остальные заблокированные сайты через sing-box и т.п.). Приоритеты экземпляров уменьшаются от list1 до list5, т.е. list1 имеет наивысший приоритет, list5 - наименьший. Главный экземпляр (основной блэклист) имеет самый низкий приоритет. Эти приоритеты имеют значение при наличии дублирующихся записей в списках разных экземпляров, т.е. если сайт есть в нескольких списках, то трафик к нему пойдёт через прокси экземпляра с самым высоким приоритетом. При обновлении блэклиста в итоговые конфиги nftables и dnsmasq добавляются записи только из включенных экземпляров, поэтому всегда после изменений в конфигурации записей пользователя необходимо обновлять блэклист.

Простую конфигурацию с одним пользовательским списком (условно, как в предыдущих версиях ruantiblock) можно создать включив один из экземпляров записей пользователя (в примере это первый экземпляр list1) и указав в его настройках те же параметры, что и для основного блэклиста (тип прокси, VPN-интерфейс, порт прозрачного прокси и т.д.). Включение экземпляра list1:

uci set ruantiblock.list1.u_enabled="1"

Выбор режима прокси (VPN):

uci set ruantiblock.list1.u_proxy_mode="2"

VPN-интерфейс:

uci set ruantiblock.list1.u_if_vpn="tun0"

Сохрание настроек UCI:

uci commit ruantiblock

и т.д. Параметры аналогичны параметрам основного экземпляра с префиксом u_, например, для режима прозрачного прокси с типом прокси tproxy и портом 1100:

uci set ruantiblock.list1.u_proxy_mode='3'
uci set ruantiblock.list1.u_t_proxy_type='1'
uci set ruantiblock.list1.u_t_proxy_port_tcp='1100'
uci commit ruantiblock

Далее свои записи нужно добавить в текстовый файл /etc/ruantiblock/user_lists/list1 (IP, CIDR или FQDN, каждая запись в новой строке). В записях FQDN можно задать DNS-сервер для разрешения данного домена (через пробел). Также можно комментировать строки (# - первый символ строки).

Пример файла /etc/ruantiblock/user_lists/list1:

# FQDN
domain.net
# FQDN с DNS-сервером
sub.domain.com 8.8.8.8
# FQDN с DNS-сервером и портом. #53 - порт, не комментарий
sub.domain.com 8.8.8.8#53
# ip
74.125.131.19
# CIDR
74.125.0.0/16

В процессе обновления блэклиста можно подгружать дополнительные записи с удалённого сервера по протоколу HTTP. Файл на сервере должен иметь формат аналогичный файлу записей пользователя. Не стоит злоупотреблять этой опцией и подключать большие списки, поскольку при добавлении пользовательских записей в блэклист не производится никаких оптимизаций, проверок на повторы и пр. IP адреса и домены добавляются как есть, и нет никакого контроля над их содержимым и размером! Добавление URL удалённого файла:

uci add_list ruantiblock.list1.u_entries_remote="http://server.lan/files/user_entries_1"
uci add_list ruantiblock.list1.u_entries_remote="http://server.lan/files/user_entries_2"
uci commit ruantiblock
и т.д.

Есть возможность задать общий DNS-сервер только для пользовательских FQDN-записей:

uci set ruantiblock.list1.u_entries_dns="1.1.1.1#53"    # значение в виде пустой строки отключает опцию
uci commit ruantiblock

Если в какой-либо записи (как в примере выше) указан свой DNS-сервер - то для этого домена используется исключительно он.

Для применения записей необходимо обновить блэклист:

/usr/bin/ruantiblock update

Также, желательно очистить кэш DNS в ОС вашего ПК (в Windows: ipconfig /flushdns), и на роутере перезапустить dnsmasq /etc/init.d/dnsmasq restart, чтобы он тоже очистил кэш.

Конфигурация с использованием только собственных записей.

Если отключить режим обновления блэклиста и модуль-парсер:

uci set ruantiblock.config.bllist_preset=""
uci set ruantiblock.config.bllist_module=""
uci commit ruantiblock

то для создания правил nftables и dnsmasq будут применяться лишь записи пользователя, без загрузки основного списка блокировок. При этом, благодаря использованию dnsmasq, записи FQDN будут всегда актуальны (ибо резолвятся в IP адреса в момент запроса). Применение правил из списка пользователя происходит при выполнении команды обновления, как описано выше (/usr/bin/ruantiblock update). Также, можно удалить из cron задание для регулярного обновления блэклиста, ибо оно не имеет смысла при ручном формировании списка блокировок.

Тестирование конфигураций с несколькими экземплярами.

Для проверки правильного движения трафика через разные VPN/прокси можно использовать сервисы для определения публичного IP. Чтобы исключить влияние кэширования DNS далее будем использовать только записи IP адресов. Суть теста: в записи нескольких включенных экземпяров добавляем IP адреса разных сервисов для определения публичного IP адреса (IP самих сервисов получаем с помощью nslookup). Далее на ПК в браузере (или в консоли с помощью curl или wget) открываем страницы этих сервисов получая IP адрес соответствующего VPN/прокси в который ruantiblock заворачивает трафик к этому сервису.

Допустим, у нас есть 3 VPN/прокси, которые заданы в записях пользователя на 3-х инстансах: list1, list2, lis3.

  1. Добавляем в файл записей первого инстанса list1 (/etc/ruantiblock/user_lists/list1) IPv4 адреса сервиса http://ident.me:

     root@OpenWrt:~# nslookup ident.me
     Server:         127.0.0.1
     Address:        127.0.0.1:53
    
     Non-authoritative answer:
     Name:   ident.me
     Address: 49.12.234.183
    
     Non-authoritative answer:
     Name:   ident.me
     Address: 2a01:4f8:c0c:bd0a::1
    
     root@OpenWrt:~# echo "49.12.234.183" >> /etc/ruantiblock/user_lists/list1
    
  2. В записи второго инстанса list2 (/etc/ruantiblock/user_lists/list2) добавляем IPv4 адреса сервиса http://wgetip.com:

     root@OpenWrt:~# nslookup wgetip.com
     Server:         127.0.0.1
     Address:        127.0.0.1:53
    
     Non-authoritative answer:
     Name:   wgetip.com
     Address: 188.114.96.3
     Name:   wgetip.com
     Address: 188.114.97.3
    
     Non-authoritative answer:
     Name:   wgetip.com
     Address: 2a06:98c1:3120::3
     Name:   wgetip.com
     Address: 2a06:98c1:3121::3
    
     root@OpenWrt:~# echo -e "188.114.96.3\n188.114.97.3" >> /etc/ruantiblock/user_lists/list2
    
  3. В записи третьего инстанса list3 (/etc/ruantiblock/user_lists/list3) добавляем IPv4 адреса сервиса http://ip.tyk.nu:

     root@OpenWrt:~# nslookup ip.tyk.nu
     Server:         127.0.0.1
     Address:        127.0.0.1:53
    
     Non-authoritative answer:
     Name:   ip.tyk.nu
     Address: 95.216.101.209
    
     Non-authoritative answer:
     Name:   ip.tyk.nu
     Address: 2a01:4f9:2b:151f:80::2
    
     root@OpenWrt:~# echo "95.216.101.209" >> /etc/ruantiblock/user_lists/list3
    
  4. Обновляем блэклист:

     ruantiblock update
    
  5. Теперь в браузере на ПК из локальной сети загружаем страницу первого сервиса http://ident.me. IP адрес показанный сервисом должен быть выходным IP адресом VPN/прокси, который задан в первом инстансе list1. Далее аналогично с остальными сайтами: http://wgetip.com должен вернуть выходной IP VPN/прокси из второго инстанса list2, http://ip.tyk.nu - из третьего list3. Также в выводе статуса ruantiblock:

     ruantiblock status
    

в блоке Nftables rules: должны расти значения счётчиков Bytes для соответствующих инстансов. Если включена опция проксификации трафика локальных приложений роутера, то можно проверить как работают эти правила для самого роутера (в его консоли с помощью wget):

    wget -qO - http://ident.me
    wget -qO - http://wgetip.com
    wget -qO - http://ip.tyk.nu

Cчётчики соответствующих инстансов также должны расти.