Как стать автором
Обновить

Комментарии 64

Ваш подход похож на опцию --ipset в DNS-резолвере dnsmasq, которая добавляет IP-адреса резолва в ip set, а не в таблицу маршрутизации. IP set'ы хорошо оптимизированы, адреса из set'а могут удаляться по таймауту автоматически, ядром, но требуют маркировки пакетов средствами netfilter, чтобы направить их в нужную таблицу маршрутизации.

Несколько недоработок вашей реализации:

  • Отсутствует поддержка AAAA-записей. На провайдерах с IPv6 (в России это порядка 7% интернет-трафика) обход не заработает — нужно хотя бы удалять AAAA-ответ из резолва, если нет желания обрабатывать полноценно.

  • Отсутствует поддержка записи SVCB/HTTPS (type 65), которая используется на устройствах Apple. Она имеет приоритет выше, чем A/AAAA, из-за чего iPhone может отправлять запросы в обход ваших правил.

  • На некоторых устройствах и некоторых браузерах по умолчанию включены DNS-over-HTTPS/TLS, из-за чего ваш резолвер не будет получать запросы. У Apple шифрование запросов отключается блокировкой доменов 'mask.icloud.com', 'mask-h2.icloud.com', 'mask.apple-dns.net', а в Firefox — 'use-application-dns.net'.

Я крайне не рекомендую блокировать какие-либо домены Apple. Это может привести к непредсказуемым последствиям. Какие-то функции перестанут работать или будут работать медленно, через раз, и вы замучаетесь искать причину.

Лучше в dnsmasq что-то типа:

address=/use-application-dns.net/
address=/_dns.resolver.arpa/

если такой вариант для вас актуален.

Однако, блокировка mask.icloud.com и mask-h2.icloud.com отдельно документирована для отключения iCloud Private Relay, что может быть полезно для исключения DNS-запросов мимо своего резолвера.

Как раз на OpenWRT в пакете https-dns-proxy по умолчанию блочатся эти домены)

На ваш, кхм, роутер я бы накатил сперва proxmox ve + pfsense в виде вирт. машины.

Еще и запас мощности остается для экспериментов.

Вот это был бы РОУТЕР :)

P.s. Если заинтересуетесь, цикл статей по proxmox, pfsense etc https://forum.netgate.com/topic/163435/proxmox-ceph-zfs-pfsense-и-все-все-все-часть-2/

Я один раз предпринимал попытку поставить Arch и всё настроить для роутера, но оказалось очень не легко и время ограничено было)

Пробуйте

Спасибо за развернутую рецензию, со временем я добавлю поддержку остальных режимов)

Хотел написать, что в принципе, на функциональном уровне, это решается много проще , посредством того же privoxy, причем, прописывать там надо скорее прокси в рунет, оставляя заграничный по умолчанию, но если вам так сильно нужен udp ...

Одно из преимуществ моей программы это очень маленькое потребление памяти, примерно 12 мегабайт, из них 8 мегабайт занимают все заблокированные домены. Я постараюсь дополнить пост примерами реального лога и потреблением памяти.

Пожалуйста, распишите подробно, как можно настроить Privoxy?

Минимальная настройка - открываете config (config.txt в win) дописываете
forward / outerworld_proxy:port
forward .ru interrusia_proxy:port
forward .su interrusia_proxy:port
(если соотв прокси не нужен, а нужно - прямое соединение ставите просто точку) . После чего на 127.0.0.1:8118 privoxy поднимает вам прокси перенаправляющий вас туда куда вам нужно.
Где брать внешний прокси ?? Ну тут каждый исхитряется как может. Бомж-вариант - берете смартфон , ставите на него N штук vpn и Android Proxy Server. Главное преимущество - никаких openwrt, никаких BPF - ничерта не нужно, матушка в свои 71 настраивает в режиме телефонной консультации ...

Возможно против блокировок поможет "метод Пригожина", но я ни к чему не призываю. Хотя если уважаемый Максут Шадаев захочет о чем нибудь поговорить с Липовыми, может попросить проработать откровенные недостатки базы заблокированных сервисов. Особенно внесудебные блокировки. Стабильно рабочая сеть важна в стране. Как они ещё госуслуги умудрились не заблокировать я удивлен.

Стать уголовником, сесть на распил бюджета, собрать больше уголовников, а потом устроить бучу? Умно, умно...

А кто-то не оценил постироничный юмор.

Хватит пиарить мудаков (с)

Помнится когда я начал заворачивать трафик до yt3.ggpht.com через VPN у меня начались какие-то нехорошие приколы, но вот в упор не могу вспомнить какие... Но достаточно серьезные чтобы сидеть без аватарок и картинок в community постах (превью как не удивительно почему-то грузятся нормально)

Кстати да, у меня превьюшки тоже грузились и без yt3.ggpht.com, но спасибо автору статьи что ткнул носом - добавил в zapret-hosts-user.txt, обновил списки и теперь аватарки отображаются снова

У меня из таких приколов - долгий "запуск" видео, который начинается спустя N дней нормальной работы завернутого трафика в VPN. Видео просто начинает 5-15 секунд крутить колесом загрузки. Пока не решил.

Если есть возможность, можете попробовать моё решение, у меня проблем с зависанием нет)

Увы, у меня Mikrotik, не OpenWrt.

Там есть докер :)

Но он только для ARM

Была аналогичная проблема при настройке policy based roting под OpenWrt. Решил тем, что через консоль разработчика посмотрел, обо что именно спотыкаются запросы и жёстко прописал рабочие связки домен-IP в хосты роутера. У меня это www.youtube.com, wide-youtube.l.google.com, www.youtube-nocookie.com

Вообще на Android в WireGuard клиенте можно и не весь трафик пропускать, а только определённые приложения. Там надо зайти в добавленный конфиг, нажать на редактирование и будет пункт с исключёнными приложениями. Так можно исключать банк. приложения, поставить 2 браузера, один из которых идёт по впн, а второй по обычному каналу.

НЛО прилетело и опубликовало эту надпись здесь

Она у большинства "нормальных" VPN-клиентов под андроид есть.
К сожалению у некоторых (насколько помню — Mullvad когда он еще не был сам заблокирован и Proton VPN) — добавление в список исключений — очень долго если приложений много.
Ну и VPN на андроид = прощай блокировка рекламы (ну или надо ее делать на сервере, если этого достаточно) если она тоже через VPN а сочетать и то и другое умеет штатно только парочка Adguard VPN + Adguard, но вот только они платные.

Да? И во всех приложениях который используют WebView или Custom Tab будет работать?


С браузером то проблема решается просто (Firefox и расширения). С Custom Tab там — теоретически проблема решается тем же Firefox'ом а на практике — есть приложения где тупит все из-за этого.

Если нужно в приложениях под впн, то срабатывает Wireguard + Adguard DNS (на андроиде его как кастомный прописать надо). Реклама в играх режется под vpn на удивление. Тут зависит от того, какой список программ на андроид в клиенте прописать. Там есть список исключений (то есть программы, которые не надо через впн проводить), тогда система также через впн ходит (и WebView и прочие, если не исключать) или же есть белый список, то есть только определённые программы ходят через впн, тогда система ходит напрямую.

Меня вариант с Adguard + Adguard VPN вполне устраивает. Удобно. Весьма.
При этом Wireguard через свою VPS(где сервер matrix живет) тоже настроен, но в запас.

Аналогично в клиенте OpenVPN. Там эта опция называется bypass. В настройках VPN-соединения во вкладке Allowed Apps. Всякие банковские приложения, хром, такси пускаются через него, а firefox через vpn.

для маршрутизации на роутере необходимо иметь роутер с поддержкой WireGuard, а значит необходим роутер, на который можно установить OpenWrt.

Кинетики на родной прошивке умеют в WireGuard.

и микротики

В RouterOS 7
Для которой, судя по сайту, до сих пор нет long-term сборки (я в курсе что из Winbox'а такой видно 7.5 но на сайте то нет)

И Asus

А policy-based routing они умеют?

Умеют, но у них нет аппаратного ускорения шифрования и сколько-нибудь нормальной скорости работы не добиться. На Микротике только на старших моделях можно что-то выжать. Кинетик быстро упирается в производительность процессора.

WireGuard и не требует аппаратного ускорения шифрования. Какие вообще процессоры умеют аппаратно ускорять ChaCha20 и Poly1305?

Если же вы говорите про аппаратное ускорение AES, то, во-первых, AES в WireGuard не используется, во-вторых кинетики прекрасно ускоряют его, кроме совсем уж старых моделей.

Вышенаписанное относится к роутерам с MIPS-процами. В новые кинетики сейчас вообще ставят ARM-процессоры, в их группе в телеграме скидывали результаты бенчмарков - спокойно жуют сотни мегабит.

А теперь задание со звёздочкой - обход блокировок когда блокировка не на стороне РКН, а на стороне сервера.

Тоже думал на эту тему, но тут уже без DPI ни как не обойтись)Только если кто то составит отдельный список таких)

Любое решение с VPN но точка выхода НЕ в России?

И не только. Не раз натыкался на рос сайты которые тупо не открываются через vpn

Бывает смешнее — сайт открывается но логин не работает. Потому что site.ru и api.site.ru — за cloudflare но вот у api.site.ru настройки более более жесткие.


Если блокировки на той стороне — можно просто считать их блокировками на этой и просто сайт в туннель заворачивать. Если же это становится неудобно — заворачивать в туннель все по умолчанию (с Youtube/Facebook сложно но списки сетей Google вполне себе публичны например) а то что должно быть в России — принудительно НЕ заворачивать. Либо руками по доменам либо раз список сгенерить либо вообще с https://antifilter.network/bgp брать — есть там списочек ру-сетей.
У меня на основном так сказать месте откуда доступ — схема с получением по BGP списков куда нельзя ходить и отправление трафика на эти сети куда следует. В дополнение — ручное задание по DNS-имени (у роутера и машин за ним — один и тот же DNS-резолвер так что если уж резолвинг на роутере решил что habr.com это 1.2.3.4 то машинки за ним тоже полезут за habr.com через 1.2.3.4).
С копией антизапрета (запуск их контейнера у себя) возится пока не хочется. В том числе потому что ну очень не хочется танцы с прокси устраивать, придется ж не только для браузеров это городить, например для gradle еще надо.
(и без того хватает проблем — приходится вот в Firefox + MultiAccount Containers + Container Proxy несколько групп сайтов через отдельные спецпрокси и в данном случае тема совсем не про цензуру).

Давно есть идея как реализовать подобное: самописная прокся, которая будет автоматически повторять запрос через какой-нить парент при обнаружении 403/access denied. На минутку призадумался, а может это вообще реализуемо через прозрачный squid

нет, потому что мало смотреть на уровне http/https, надо смотреть на уровне tcp/udp.

Там вообще может быть не 403, а 200 ОК — и страница-заглушка «извините, мы с вами больше не работаем».

Вот, например, порнхаб...

Но пока мы делаем это чисто для себя, вполне достаточно вести ручками список таких URL'ов. У меня, например, стоит ящик с pfSense, к нему из разных локаций (дача, другие квартиры — клиенты на роутерах, мобильные клиенты на мобилах) коннектятся по WireGuard (заодно получая доступ к локальным ресурсам этого ящика, от умного дома до файлопомойки и торрентокачалки), а на ящике уже стоит VPN и policy-based routing со списками, формируемыми как вручную, так и из подгружаемых снаружи перечней IP или доменов.

Если сервер блокирует по странам, то подойдёт geo ip роутинг. Есть отличная статья с готовым скриптом по выгрузке подсетей разных стран в формате удобном для запихивания в route add: https://habr.com/en/articles/659655/

Поднимаем на роутере VPN соединения к серверам в нужных странах и роутим подсети этих стран через эти VPN.

https://habr.com/en/companies/xakep/articles/699000/
Выбор точки выхода в зависимости от принадлежности AS к стране. И госуслуги работают, и блокировок нет. Единственный минус — это дополнительный хоп для всего внешнего трафика.

Я задолбался бороться с отдельными блокировками и просто зароутил все зарубежные (с т.з. RIPE) сети в VPN, а российские идут напрямую. Это не идеально, конечно, но лучше чем другие подходы как по мне. Если есть какие-то нестыковки - просто добавляю в исключения.

на моем роутере antiblock стоит уже 3 месяца и не возникает проблем, список доменов обновляется оперативно, так что если есть возможность, можете попробовать)

Зачем? Зашифрованные DNS оно не отловит, да и стояла у меня подобная система какое-то время: https://habr.com/ru/articles/467547/

я как раз в том числе опирался на вашу статью)

просто зароутил все зарубежные сети в VPN

я тоже так сделал.
одна из причин: часто доступ закрывается не властями рф, а от рф.
вторая: география ip-подсетей меняется куда реже, чем блокировки.


Если есть какие-то нестыковки — просто добавляю в исключения

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

Ну вот, например, мы (наша контора) зафайрволилась от РФ и Китая. По очень простой причине: то, что мы продаём, нужно исключительно проживающим на североамериканском континенте. В указанных странах у нас нет и не может быть клиентов — но запросы к сайту оттуда постоянно приходят, так зачем энргию на них тратить?

например, ошибок в базах geoip достаточно. ещё, люди путешествуют и переезжают. или просто могут интересоваться жизнью в других странах.

Есть статья с оригинальным методом получения списка заблокированных сайтов:
Точечный обход блокировок PKH на роутере с OpenWrt с помощью WireGuard и DNSCrypt (часть 1)
https://habr.com/ru/articles/440030/


subnet.lst — список заблокированных подсетей, изменяется не часто.
ip.lst — список заблокированных адресов, прям из списка РКН
community.lst — список заблокированных адресов, который составляется комьюнити antifilter.download

я через него домены и адреса как раз и получаю)

аахаха?

Мне хватает socks прокси, который доступен через VPN подключение (можно и без VPN, но надо позаботиться, чтобы другие через вас не начали качать). В браузере плагин, который избранные домены направляет на прокси. Главный недостаток, что настраивать всё нужно на каждом устройстве. Но метод рабочий и пользуюсь им уже много лет.

антизапрет не подходит ?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории