gSpotx2f / ruantiblock_openwrt

Обход блокировок в OpenWrt с помощью Tor или VPN
GNU General Public License v3.0
219 stars 20 forks source link

Nft set wasn't updated #75

Closed staskondrin closed 3 months ago

staskondrin commented 3 months ago

Здравствуйте, настраиваю на связку с wg, не открываются заблокированные сайты, а в логе ошибка ruantiblock: Error! Nft set wasn't updated Если добавить разрешённый сайт в блеклист пользователя, то на него трафик пойдет через впн, но если добавить туда заблокированный сайт, то всё равно не зайти

gSpotx2f commented 3 months ago

Какая версия OpenWrt? Какая версия ruantiblock? Какое устройство (количество оперативной памяти и пр.)?

staskondrin commented 3 months ago

OpenWrt 23.05.4 ruantiblock 1.5.0-2 Xiaomi Mi Router 4A Gigabit Edition: Процессор: MT7621A, объем оперативной памяти: 128 МБ На этом роутере, на этой же прошивке руантиблок нормально работал где-то неделю, просто после пришлось сбросить настройки роутера по другой причине и, соответственно, настраивать всё заново

gSpotx2f commented 3 months ago

Покажите сожержимое конфига /etc/config/ruantiblock. 128Мб RAM уже недостаточно для надёжной работы с полным списком блокировок, может просто не хватает свободной памяти...

staskondrin commented 3 months ago

config main 'config' option proxy_mode '2' option proxy_local_clients '1' option enable_logging '1' option update_at_startup '1' option nftset_clear_sets '1' option allowed_hosts_mode '0' option enable_fproxy '0' option if_vpn 'VPN' option vpn_route_check '0' option tor_trans_port '9040' option onion_dns_addr '127.0.0.1#9053' option t_proxy_port_tcp '1100' option t_proxy_port_udp '1100' option t_proxy_allow_udp '0' option bypass_mode '0' option enable_bllist_proxy '0' option enable_tmp_downloads '0' option add_user_entries '1' option bllist_min_entries '3000' option bllist_ip_limit '0' option bllist_summarize_ip '1' option bllist_summarize_cidr '1' option bllist_ip_filter '0' option bllist_ip_filter_type '0' option bllist_sd_limit '16' list bllist_gr_excluded_sld 'livejournal.com' list bllist_gr_excluded_sld 'facebook.com' list bllist_gr_excluded_sld 'vk.com' list bllist_gr_excluded_sld 'blog.jp' list bllist_gr_excluded_sld 'msk.ru' list bllist_gr_excluded_sld 'net.ru' list bllist_gr_excluded_sld 'org.ru' list bllist_gr_excluded_sld 'net.ua' list bllist_gr_excluded_sld 'com.ua' list bllist_gr_excluded_sld 'org.ua' list bllist_gr_excluded_sld 'co.uk' list bllist_gr_excluded_sld 'amazonaws.com' list bllist_gr_excluded_sld 'spb.ru' list bllist_gr_excluded_sld 'appspot.com' list bllist_gr_excluded_sld 'googleusercontent.com' option bllist_fqdn_filter '1' option bllist_fqdn_filter_type '0' option bllist_enable_idn '0' option bllist_alt_nslookup '0' option bllist_alt_dns_addr '8.8.8.8' option bllist_preset 'ruantiblock-ip'

gSpotx2f commented 3 months ago

option bllist_preset 'ruantiblock-ip'

Режим блэклиста *-ip добавляет большое количество ip-адресов в nftables. Проблема в том, что nftables (точнее утилита nft), который появился в OpenWrt 22.03, имеет неприятную особенность (или баг, или пофигизм разработчиков) - жрёт много оперативной памяти в момент добавления больших списков ip-адресов. Что делает невозможным использование больших сетов на роутерах с малым количеством RAM. Поэтому, режим ruantiblock-ip на девайсе с 128Мб RAM, скорее всего, работать не будет. Даже ruantiblock-fqdn под вопросом. Короче, попробуйте переключить в режим ruantiblock-fqdn. Если также будут проблемы, то остаётся либо свой свой собственный список из нужных вам сайтов (только записи пользователя), либо использовать список с antifilter.download с суммированными подсетями (что снижает точность обхода блокировок, в VPN попадает какое-то количество незаблокированных сайтов). Самый лучший вариант - устройство с RAM 512мб и более.

gSpotx2f commented 3 months ago

Список суммированных подсетей с antifilter.download можно добавить так (в консоли роутера):

uci set ruantiblock.config.add_user_entries="1"
uci add_list ruantiblock.config.user_entries_remote="https://antifilter.download/list/ipsum.lst"
uci commit ruantiblock
/usr/bin/ruantiblock update
staskondrin commented 3 months ago

ruantiblock-fqdn пробовал - тоже самое Спасибо за список antifilter.download , теперь ошибка Nft set wasn't updated не появляется, но никуда не ушла другая проблема, что заблокированные сайты всё равно не открываются, даже, если добавить их вручную в список При этом, добавив туда, скажем, 2ip.ru, то на него я уже захожу из под впн

gSpotx2f commented 3 months ago

но никуда не ушла другая проблема, что заблокированные сайты всё равно не открываются, даже, если добавить их вручную в список При этом, добавив туда, скажем, 2ip.ru, то на него я уже захожу из под впн

Если 2ip.ru добавлен в user_entries и показывает ip VPN, значит ruantiblock работает. Вы пробовали заходить через ваш VPN на заблокированные сайты без ruantiblock, например отправляя весь трафик в VPN? Ещё, в конфиге ruantiblock VPN интерфейс у вас выглядит так option if_vpn 'VPN'. Почему VPN? Это название интерфейса OpenWrt, а не сетевого интерфейса linux? Интерфейс Wireguard обычно имеет название wireguard_VPN, wireguard_что-то_там, wg0 и т.д.

staskondrin commented 3 months ago

Если перенаправлять весь трафик через vpn, то заблокированные сайты открываются VPN это название интерфейса впн в OpenWrt

gSpotx2f commented 3 months ago

Какие сайты вы проверяете? Проверьте https://rutracker.org. Также, если сайты которые вы проверяете добавлены в user_entries как домены, то после добавления и обновления блэклиста очистите кэш DNS на вашем ПК и, для верности, перезапустите dnsmasq на роутере service dnsmasq restart. Для обхода блокировок по доменам используется DNS, который кэширует запросы как на ПК, так и на самом роутере (записи в кэше могут хранится несколько часов). При открытии сайта в браузере делается запрос DNS (и кэшируется), если сразу после этого добавить сайт в ruantiblock без сброса кэша, то нового запроса к DNS не будет, следовательно dnsmasq на роутере не добавит IP сайта в сет и трафик к сайту не будет заворачиваться в VPN, до тех пор пока не произойдёт нового обращения к DNS-серверу.

staskondrin commented 3 months ago

Проверяю на 2ip.ru, rutor.info, instagram.com, rutracker.org, из этого всего открывается только 2ip Кэш чистил, но ещё раньше проверял и в другом браузере, и на телефоне service dnsmasq restart выполнял, хотя и весь роутер перезагружал

gSpotx2f commented 3 months ago

Кстати, шифрование DNS у вас настроено (DoH)? Нет ли других обходов блокировок работающих параллельно (или pbr и т.п.)? Такое же поведение сохраняется и при подключении списка с antifilter.download (как описывал выше)? Там список IP адресов, т.е. DNS не используется для перенаправления в VPN.

staskondrin commented 3 months ago

Нет, шифрование DNS не настроено и до этого тоже не настраивал, но работало около недели Настройка https‑dns‑proxy помогла решить проблему, сайты начали открываться, странно, что ещё при первой настройке я пропустил этот шаг, и хотел вернуться к нему, если не заработает, но тогда всё взлетело с 1 раза Спасибо

gSpotx2f commented 3 months ago

Шифрование DNS - обязательный шаг для обхода блокировок. Это прописано в wiki и разных инструкциях для других решений. Провайдеры уже давно подменяют ответы в DNS-трафике от сторонних DNS-серверов.

b1zya commented 3 months ago

Словил похожую проблему.

Однако у меня вполне подходящий под критерии роутер Xiaomi MI AioT AX3600 с 512Мб ОЗУ. OpenWrt 23.05.4. Установил и настроил Ruantiblock + VPN (Wideguard) + https‑dns‑proxy. Все по инструкциям с репозитория Github.

Все хорошо работает. Заблокированные сайты открываются. Однако не работают сайты из кастомных записей. Пробовал как с "ruantiblock - fqdn", так и с "ruantiblock - ip". Галку на "Включить записи пользователя" поставил, нажимал в главном меню Ruantiblock - "Обновить блэклист". Пробовал через командную строку настраивать. Перезагружал роутер.

root@OpenWrt:~# /usr/bin/ruantiblock update
 ruantiblock update...
 Received entries: CIDR: 638, IP: 5302, FQDN: 235987
 User entries (local): CIDR: 0, IP: 0, FQDN: 23
 Blacklist updated
 Updating nft sets...
 Ok
udhcpc: started, v1.36.1
udhcpc: broadcasting discover
udhcpc: no lease, failing

Обновление блэклистов в целом нормально проходит. Без ошибок. Судя по логу, пользовательские правила в том числе обрабатываются. Смущает только последняя строка "udhcpc: no lease, failing". Но не знаю, на сколько она важна. Интернет от провайдера настроен по PpoE.

Но бесполезно. Все равно сайты из списка по VPN не идут. И проблема та же, что и описана выше - Если дополнить список "2ip", то для него трафик будет пропускаться. Однако остальные сайты из пользовательского списка по какой то причине все равно не работают.

Что примечательно, пробовал ставить "Только записи пользователя" - То есть только сайты из моего списка. И это так же не работало. Сайты из списка так же не проходили через VPN. Только в таком случае и заблокипрованые ресурсы тоже недоступны.

Пример сайтов, которые хочу пустить по VPN:

4pda.ru
4pda.to
chatgpt.com
openai.com
intercomcdn.com
oaistatic.com
oaiusercontent.com
intercom.io
azureedge.net
launchdarkly.com
fastly.net
arkoselabs.com
cloudfront.net
bing.com
bing.net
microsoft.com
msn.com
live.com
microsoftonline.com
bingapis.com
cloud.microsoft
office.com
intel.com
netflix.com
nflxvideo.net
gSpotx2f commented 3 months ago

Словил похожую проблему.

Решение проблемы этого тикета - установка https-dns-proxy. Если у вас другая проблема, создайте отдельный тикет.