Pull to refresh

Comments 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 браузера, один из которых идёт по впн, а второй по обычному каналу.

UFO landed and left these words here

Она у большинства "нормальных" 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 но на сайте то нет)

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

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 месяца и не возникает проблем, список доменов обновляется оперативно, так что если есть возможность, можете попробовать)

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

просто зароутил все зарубежные сети в 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, но надо позаботиться, чтобы другие через вас не начали качать). В браузере плагин, который избранные домены направляет на прокси. Главный недостаток, что настраивать всё нужно на каждом устройстве. Но метод рабочий и пользуюсь им уже много лет.

Sign up to leave a comment.

Articles