Продвинутое руководство по обходу всех блокировок (и YouTube) в России на Arch Linux
Как же достали все эти блокировки... Шёл второй год, и с каждым годом всё хуже и хуже.
Сначала я просто использовал Tor чисто из-за своей паранойи, затем по причине блокировок. Но блокировки становились жёстче и жёстче, и вот я уже даже не могу зайти на Google, а вынужден использовать Яндекс. И пусть бы последствия ложились лишь на поисковик - я не могу зайти на половину сайтов, просто потому что они покрыты CloudFlare, который не нравится операторам своими встроенными технологиями (типа DNS-over-TLS/DNS-over-HTTPS) которые частично помогали обходить блокировки.
Провайдеры как бешеные псы блокируют DNS-сервера, блокируют сайты, блокируют трафик по DPI-анализаторам, власти вводят законы, которые обязуют докладывать о любых обходах. Да плевать...
Сейчас я в очередной раз обманул систему и спокойно сижу на YouTube с чаем:
И я расскажу, какие способы я применяю для обхода. Но уточню, что они подойдут не всем. Дело в том, что я использую Linux для основных задач (Windows у меня тоже есть, но не для сёрфинга, а для тестов и ревёрс-инжиниринга программ), и я занимаюсь только программированием.
Забегая наперёд, скажу, что есть большое заблуждение о том, что через Tor всё работает медленно - это ложь! На скриншоте выше видео в качестве 1080p грузится моментально и на минуты вперёд, и это через Tor (obfs4).
TOR - настройка
Итак, начнём с простого. Для всех своих целей я использую Tor. Все проделанные инструкции будут рассчитаны на Arch Linux, но главное понять суть.
В репозитории BlackArch есть очень хороший пакет torctl, устанавливаем его.
На Arch Linux достаточно включить репозиторий в список /etc/pacman.conf:
[blackarch]
SigLevel = Optional TrustAll
Server=https://mirrors.tuna.tsinghua.edu.cn/blackarch/blackarch/os/$arch
Server=https://mirrors.ustc.edu.cn/blackarch/blackarch/os/$arch
После чего установить пакет командой: pacman -S torctl
Этот пакет автоматически настраивает iptables так, чтобы весь трафик шёл через Tor-сеть. Tor - это такой VPN следующего поколения, который держится на волонтёрах, то есть полностью бесплатный. Соединение через него шифруется и проходит через 3 прокси - это максимально скрывает ваш реальный IP-адрес и позволяет обходить DPI.
Но монстры подсуетились и прикрыли Tor. К счастью, разработчики продумали всё, и создали для нас МОСТЫ. Использовать мы будем мосты obfs4.
После установки пакета torctl, необходимо добавить поддержку obfs4 в него, поскольку изначально он этого не поддерживает.
Открываем его по пути /usr/bin/torctl в редакторе, находим строку "configuring tor", и в конфигурацию torrc прописываем следующие строки:
UseBridges 1
ClientTransportPlugin obfs4 exec /bin/obfs4proxy
Bridge obfs4 [ВАШ obfs4-мост]
Обязательно проверьте наличие файла /bin/obfs4proxy, после чего по формату Bridge obfs4 ...
можете добавлять бесконечное количество мостов.
Также у torctl есть автозапуск, включается командой: torctl autostart
, теперь при каждом запуске системы у вас автоматически будет проходить трафик через Tor
ВАЖНО: у пакета Torctl есть баг, связанный с автозапуском. После выключения системы, он не возвращает конфигурацию, поэтому при запуске считает, что Tor уже запущен, но это не так. Исправить его можно изменением кода на следующих строках в файле /usr/bin/torctl:
Это хороший вопрос, ведь без Tor вы не зайдёте на официальный сайт Tor и не получите мосты, а без мостов - вероятнее всего не запустите Tor. Разорвать этот круг можно либо с помощью бесплатного прокси, либо с помощью Telegram. Да, у Tor есть бот в Telegram - https://t.me/GetBridgesBot
Когда у вас перестанет подключаться к Tor - просто обращаетесь к боту, получаете мосты, и добавляете их в конфигурацию. Вуаля, всё работает!
Важное замечание: не удаляйте старые мосты, копите их как можно больше, они вам ещё пригодятся.
Да, переодически у вас может появляться капча, просто решите её один раз, и всё. Если мосты свежие, все сайты будут вас пропускать.
Tor не помогает? Что дальше?
Итак, скорее всего после этой настройки пару дней вы спокойно проживёте, но метод перестанет работать, YouTube снова перестанет грузиться, и тогда мы снова идём рыться...
Для начала, исключим блокировки по DNS, они устарели, но всё ещё возможны. У нас есть 2 варианта:
- Использовать DNS с шифрованием (DNSCrypt) локальный, либо уже существующий сервер - https://dns.comss.one/dns-query
- Использовать DNS-over-Tor
Я переодически переключаюсь между обеими вариантами, но на момент написания статьи у меня в браузере был включен DNS-сервер comss с шифрванием трафика. Но при этом на фоне у меня всегда в resolv.conf прописан локальный DNS-over-Tor.
Включаем DNS-over-Tor и DNS-over-HTTPS
Итак, по-умолчанию torctl поддерживает DNS, он работает на порту 9053. У нас есть 2 варианта:
Переключить порт на 53 и прописать в resolv.conf следующую строку:nameserver 127.0.0.1
Если вы используете на системе демон dhcpcd, нужно прописать в /etc/dhcpcd.conf следующее:
И у нас уже всё будет работать, однако с таким методом наш DNS будет достаточно медленный, поскольку он не кеширует запросы.
Второй вариант с кешированием: нам нужно просто установить демон dnsmasq и прописать следующие строки:
no-resolv
port=53
server=127.0.0.1#9053
listen-address=127.0.0.1
Дальше как в первом варианте прописываем в resolv.conf строку nameserver 127.0.0.1 и в /etc/dhcpcd.conf
прописываем nohook resolv.conf
, теперь наш DNS-сервер чуточку быстрее.
Для проверки работоспособности можно использовать утилиту dig из пакета bind:
Как видим, DNS прошёл через Tor.
Однако в Chromium нам ничего не мешает использовать DNS-over-HTTPS, используя следующий пункт:
Отлично, теперь мы исключили блокировки по DNS.
Дополнительный обход DPI с помощью ByeDPI
Сразу скажу, что этот метод мне ничем не помогал, но как дополнительная мера, я опишу его здесь.
Сначала устанавливаем утилиту ByeDPI: https://github.com/hufrea/byedpi
Я использовал менеджер yay для установки из репозитория готовых бинарников:
После чего, запускаем byedpi с аргументами: ciadpi -s2 -d2 -x1
, у него ещё много аргументов есть, обязательно почитайте про них, можно использовать разные комбинации.
Прокси с ByeDPI запускается по адресу 127.0.0.1:1080, для проксирования трафика в браузере используем расширение Proxy Helper: https://chromewebstore.google.com/detail/proxy-helper/mnloefcpaepkpmhaoipjkpikbnkmbnic?hl=en-
В настройках расширения в опции "SOCKS PROXY" пишем "127.0.0.1", "1080":
В самом расширении переключаемся на "SOCKS PROXY":
Если всё сделано правильно, вы увидите запросы в терминале:
И да, это будет работать поверх нашего DNS-over-Tor и самого Tor, по-моему достаточно мощная связка.
Советы для ускорения YouTube
- Отключите любые блокировщики рекламы типа AdGuard и AdBlock, вместо них используйте SponsorBlock
- Не используйте насильный кодек H.264 (расширения h264ify), разрешите для YouTube все кодеки, это улучшит соединение
- Поверх Tor и DNS-over-HTTPS с DNS-over-Tor, вам ничего не мешает также установить VPN-расширение для YouTube. Например, "Unlock YouTube", его можно переодически включать для экспериментирования, но обычно Tor справляется и так отлично
Заключение
Обязательно пускайте весь свой трафик через Tor, это исправит большинство проблем, в том числе проблемы с YouTube. Если это не помогло, включите DNS-over-Tor или DNS-over-HTTPS, если и это не помогло - дополнительно запустите ByeDPI на системе. Если это также не поможет, совместно с Tor используйте VPN-расширение в браузере.
Спасибо за прочтение. Мой канал, там я пишу на ассемблере всякие штуки - https://t.me/fasmgenius