UCS - коллекция мануалов

Практика - критерий истины...

Инструменты пользователя

Инструменты сайта


linux:netaccess

Это старая версия документа!


Решение проблем с доступом к некоторым сайтам в Ubuntu и других дистрибутивах

Способ обхода замедления известного видеохостинга и других интернет-ресурсов в Linux

Предисловие

В данном способе не нужно обладать правами суперпользователя. И семи пядей во лбу тоже не надо иметь. Но! Тут многабукафф LOL . Поэтому, если вы не готовы осилить элементарное чтение этой страницы, то вам стоит поискать другие способы обхода DPI-оборудования провайдеров. И снова но! Данный гайд предусматривает тупую копипасту отсюда в ваш терминал. Мне просто хочется, чтобы вы хоть немного понимали, что делаете и при этом предложить больше возможностей. Чтобы вы не сломали что-нибудь у себя в системе, прочитав по диагонали, как это делают многие и потом винили либо меня, либо Linux. К тому же, тут описано несколько способов применения и интеграции этого решения в систему, от банального запуска командой до systemd-юнита и вы сможете выбрать более понравившийся или попробовать все сразу.

Вы обречены на успех при условии, что все внимательно прочтете и сделаете так, как тут предложено… Надо верить в свои возможности, многие недооценивают себя. Хотя бывает и наоборот). Это руководство можно условно разбить на несколько основных частей: подготовка, способы запуска и настройка proxy в браузере. Также, дополнительно можно улучшить возможности браузера для комфорта. Самое главное - все можно вернуть на круги своя. Об этом написано в конце статьи и даже если вы напорете косяков, то все можно легко исправить с помощью нескольких команд в терминале.

А если вам сложно использовать консольные редакторы, то замените nano в командах на тот, который вам больше нравится или дефолтный в гуях - edit. И надеюсь, что вы знакомы с термином комментарий в коде и не будете копировать команды вместе с ними.)))

Возимся под капотом

Подготовка

Для начала перейти на эту страницу Github, выбрать и скачать архив под архитектуру вашего дистрибутива из последнего релиза данного ПО. Распаковать любым удобным для вас способом в любое удобное для вас место. Если ваш внутренний перфекционист желает, чтобы у вас все лежало на своих местах и все было типа правильно в духе Linux, то предлагаю вам следующий вариант.

Первым делом создадим нужные директории и поместим туда скачанный и предварительно распакованный бинарник byedpi. Скопировать и вставить в терминал команду и выполнить ее:

mkdir -p ~/.local/bin/byedpi && mv /ваш/путь/до/распакованного/byedpi/ciadpi-x86_64 ~/.local/bin/byedpi && ln -s ~/.local/bin/byedpi/ciadpi-x86_64 ~/.local/bin/byedpi/ciadpi

На примере рассматривается x86_x64 дистрибутив, Вы можете выбрать необходимый, как я упоминал выше.

«Варианты допустимых архитектур»

«Варианты допустимых архитектур»

В результате выполнения вышеуказанной команды будет создана рабочая директория для byedpi, а бинарник ciadpi-x86_64 будет перемещен именно по созданному пути ~/.local/bin/byedpi и на него будет создан сим-линк. Лично я это делаю, чтобы при обновлении бинарника можно было создавать резервные копии предыдущих версий (типа ciadpi-x86_64.bac_0.16), так как не всегда новая версия работает корректно (это бывает, но очень редко, перестраховка никогда не помешает). И вообще, мне так хочется и нравится))) Если хотите по-своему, делайте, но не забывайте, что этот гайд отталкивается от этого, ошибетесь в путях - работать не будет. В итоге мы можем иметь целую пачку бэкапов, «весят» они мало, но вот откатиться можно в любой момент.

В принципе вы уже можете начать использовать его с помощью команды в терминале:

~/.local/bin/byedpi/ciadpi

Если не хочет запускаться и ругается на это в терминале, то выполнить:

chmod a+x ~/.local/bin/byedpi/ciadpi

Но увы, не все так просто и необходимо поиграться с аргументами запуска, на странице проекта вы можете увидеть их все.

«Варианты допустимых аргументов на текущий момент»

«Варианты допустимых аргументов на текущий момент»

-i, –ip <ip>

  Прослушиваемый IP, по умолчанию 0.0.0.0

-p, –port <num>

  Прослушиваемый порт, по умолчанию 1080

-D, –daemon

  Запуск в режиме демона
  Поддерживается только в Linux и BSD системах

-w, –pidfile <filename>

  Расположение PID-файла

-E, –transparent

  Запуск в режиме прозрачного прокси, SOCKS работать не будет
  

-c, –max-conn <count>

  Максимальное количество клиентских подключений, по умолчанию 512

-I, –conn-ip <ip>

  Адрес, к которому будут привязаны исходящие соединения, по умолчанию ::
  При указании IPv4 адреса запросы на IPv6 будут отклоняться

-b, –buf-size <size>

  Максимальный размер данных, получаемых и отправляемых за один вызов recv/send
  Размер указывается в байтах, по умолчанию равен 16384

-g, –def-ttl <num>

  Значение TTL для всех исходящий соединений
  Может быть полезен для обхода обнаружения нестандартного/уменьшенного TTL

-N, –no-domain

  Отбрасывать запросы, если в качестве адреса указан домен
  Т.к. резолвинг выполняется синхронно, то он может замедлить или даже заморозить работу

-U, –no-udp

  Не проксировать UDP
  

-F, –tfo

  Включает TCP Fast Open
  Если сервер его поддерживает, то первый пакет будет отправлен сразу вместе с SYN
  Поддерживается только в Linux (4.11+)
  

-A, –auto <t,r,s,n>

  Автоматический режим
  Если произошло событие, похожее на блокировку или поломку,
  то будут применены параметры обхода, следующие за данной опцией
  Возможные события:
      torst   : Вышло время ожидания или сервер сбросил подключение после первого запроса
      redirect: HTTP Redirect с Location, домен которого не совпадает с исходящим
      ssl_err : В ответ на ClientHello не пришел ServerHello или SH содержит некорректный session_id
      none    : Предыдущая группа пропущена, например из-за ограничения по доменам или протоколам
  

-L, –auto-mode <0|1>

  0: кешировать IP только если имеется возможность переподключиться
  1: кешировать IP также в том случае, если:
      torst - таймаут/соединение сброшено во время обмена пакетами (т.е. уже после первых данных от сервера)
      ssl_err - совершился лишь один круг обмена данными (запрос-ответ/запрос-ответ-запрос)
  

-u, –cache-ttl <sec>

  Время жизни значения в кеше, по умолчанию 100800 (28 часов)
  

-T, –timeout <sec>

  Таймаут ожидания первого ответа от сервера в секундах
  В Linux переводится в миллисекунды, поэтому можно указать дробное число
  

-K, –proto <t,h,u,i>

  Белый список протоколов: tls,http,udp,ipv4
  

-H, –hosts <file|:string>

  Ограничить область действия параметров списком доменов
  Домены должны быть разделены новой строкой или пробелом
  

-j, –ipset <file|:str>

  Ограничитель по определенным IP/подсетям
  

-V, –pf <port[-portr]>

  Ограничитель по портам
  

-R, –round <num[-numr]>

  К каким/какому запросу применять запутывание
  По умолчанию 1, т.е. к первому запросу
  

-s, –split <pos_t>

  Разбить запрос по указанной позиции
  Позиция имеет вид offset[:repeats:skip][+flag1[flag2]]
  Флаги:
      +s: добавить смещение SNI
      +h: добавить смещение Host
      +n: нулевое смещение
  Дополнительные флаги:
      +e: конец; +m: середина
  Примеры: 
      0+sm - разбить запрос в середине SNI
      1:3:5 - разбить по позициям 1, 6 и 11
  Ключ можно указывать несколько раз, чтобы разбить запрос по нескольким позициям
  Если offset отрицательный и не имеет флагов, то к нему прибавляется размер пакета
  

-d, –disorder <pos_t>

  Подобен --split, но части отправляются в обратном порядке
  

-o, –oob <pos_t>

  Подобен --split, но часть отсылается как OOB данные
  

-q, –disoob <pos_t>

  Подобен --disorder, но часть отсылается как OOB данные
  

-f, –fake <pos_t>

  Подобен --disorder, только перед отправкой первого куска отправляется часть поддельного
  Количество байт отправляемого из фейка равно рамеру разбиваемой части
  ! На Windows может работать нестабильно

-t, –ttl <num>

  TTL для поддельного пакета, по умолчанию 8
  Необходимо подобрать такое значение, чтобы пакет не дошел до сервера, но был обработан DPI

-S, –md5sig

  Установить опцию TCP MD5 Signature для фейкового пакета
  Большинство серверов (в основном на Linux) отбрасывают пакеты с данной опцией
  Поддерживается только в Linux, может быть выключен в некоторых сборках ядра (< 3.9, Android)

-O, –fake-offset <pos_t>

  Сместить начало фейковых данных
  Смещения с флагами вычисляются относительно оригинального запроса
     

-l, –fake-data <file|:str>

  Указать свои поддельные пакеты
  Строка может содержать escape символы (\n,\0,\0x10)

-e, –oob-data <char>

  Байт, отсылаемый вне основного потока, по умолчанию 'a'
  Можно указать ASCII или escape символ
  

-n, –fake-sni <str>

  Динамично меняет SNI в фейковом пакете
  Если размер фейка больше размера запроса, то фейк уменьшается (изменяются размеры Padding, ECH или удаляются некоторые расширения)
  Символ "?" заменяется на случайную латинскую букву, "#" на цифру, "*" на букву или цифру
  Можно указывать несколько раз, для каждого запроса будет выбираться случайный SNI из указанных
  

-Q, –fake-tls-mod <r,o>

  rand - заполнить случайными данными поля SessionID, Random и KeyExchange 
  orig - использовать в качестве фейка оригинальный ClientHello
  

-M, –mod-http <h[,d,r]>

  Всякие манипуляции с HTTP пакетом, можно комбинировать
  hcsmix:
      "Host: name" -> "hOsT: name"
  dcsmix:
      "Host: name" -> "Host: NaMe"
  rmspace:
      "Host: name" -> "Host:name\t"

-r, –tlsrec <pos_t>

  Разделить ClientHello на отдельные записи по указанному смещению
  Можно указывать несколько раз  

-a, –udp-fake <count>

  Количество фейковых UDP пакетов

-Y, –drop-sack

  Игнорировать SACK, вынуждая ядро переотправить уже доставленные пакеты
  Поддерживается только в Linux

Самый легкий вариант - терминал

Можно пойти чуть дальше и добавить переменные для запуска в свое окружение, но сначала создадим бэкап .bashrc, который мы будем изменять и если захотим вернуться к исходному, он у нас будет).

cp ~/.bashrc ~/.bashrc.bac

После этого необходимо отредактировать файл ~/.bashrc Любым доступным для вас способом, например здесь же в терминале:

nano ~/.bashrc   ### редактируем .bashrc в консольном nano, если не хотите/не удобно им, используйте альтернативную команду ниже
edit ~/.bashrc   ### альтернатива, используется дефолтный тесктовый редактор

вставив в конец файла строку:

export PATH=$PATH:~/.local/bin/byedpi

Выполняем:

source ~/.bashrc   ### перечитываем .bashrc

Прямой запуск бинарника

После этого вы можете запускать спуфер короткой командой в терминале:

ciadpi   ### Запуск ByeDPI без аргументов

Но, как я упоминал выше, не все так просто и необходимо использовать аргументы, лично я использую следующую команду (по отзывам всех, кто использовал данные аргументы, они универсальны и подходят для всех провайдеров, но все же…), возможно, вам придется подбирать свои значения:

ciadpi -i 127.0.0.1 --oob 1 --udp-fake 5 --ttl 12 --mod-http h,d,r --split 3 --split 5 --tlsrec 1+s --timeout 1 --md5sig --debug 0   ### Это уже рабочий вариант

Применение алиаса

Тут снова можно слегка продвинуть свой скилл LOL и немного усложнив себе задачу сейчас, вы упростите использование данного ПО в будущем. Снова редактируем файл ~/.bashrc и вставляем либо в его конец, либо в блок алиасов (это легко увидеть по характерному синтаксису):

alias spoofer='ciadpi -i 127.0.0.1 --oob 1 --udp-fake 5 --ttl 12 --mod-http h,d,r --split 3 --split 5 --tlsrec 1+s --timeout 1 --md5sig --debug 0'

Сохраняем, закрываем редактор, выполняем следом команду, заставив текущую оболочку (терминал) перечитать все команды, содержащиеся в файле .bashrc, без необходимости перезапуска терминала:

source ~/.bashrc   ### перечитываем .bashrc

Или просто закрыть это окно терминала и открыть новое, в котором уже можно запускать этот бинарник со всеми аргументами короткой командой:

spoofer   ### Запуск алиаса, включающий в себя все сразу

Создание кнопки в меню

Если вы любитель жмакать на кнопочки в меню и терминал вам не очень или совсем не нравится, то можно добавить кнопку запуска в меню. выполняем в терминале:

nano /home/$USER/.local/share/applications/byedpi.desktop

вставляем следующее содержимое:

#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Name=ByeDPI
Comment=Обход нелигитимных блокировок интернет-пространства
GenericName=ByeDPI - свободный интернет
Keywords=байдипиай;инувзш;byedpi;,fqlbgbfq;ciadpi;spoofer
Exec=.local/bin/byedpi/ciadpi -i 127.0.0.1 --oob 1 --udp-fake 5 --ttl 12 --mod-http h,d,r --split 3 --split 5 --tlsrec 1+s --timeout 1 --md5sig --debug 0
StartupNotify=true
Terminal=true
Type=Application
Icon=/usr/share/icons/hicolor/scalable/apps/org.gnome.Yelp.svg
Categories=Network;
NoDisplay=false

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

Ну, а если вы хотите, чтобы byedpi стартовал автоматически при загрузке в систему, то можно заморочиться еще больше LOL.

Автозагрузка приложения

Для начала самый простой способ - почти в любом рабочем окружении Linux вы сможете найти в меню приложений что-то вроде «Автозапуск» или «Запускаемые приложения», жмакаем кнопочку «Добавить», в открывшемся диалоговом окошке заполняем необходимые поля, имя вписываем любое, какое вам нравится, в поле команда вставляем .local/bin/byedpi/ciadpi -i 127.0.0.1 –oob 1 –udp-fake 5 –ttl 12 –mod-http h,d,r –split 3 –split 5 –tlsrec 1+s –timeout 1 –md5sig –debug 0, комментарий можно оставить пустым, задержку выставить в 5-10 секунд. Данный способ не пробовал, так как не интересует такое, но все должно работать. Если все же не работает, укажите полный путь в поле команда.

Создание юнита systemd

Или… Теперь способ посложнее - можно создать systemd юнит. Открываем терминал, копируем туда команду:

mkdir -p ~/.config/systemd/user/

создали директорию пользовательских юнитов, затем создаем сам юнит:

nano ~/.config/systemd/user/ciadpi.service

вставляем следующее содержимое:

[Unit]
Description=ByeDPI Service
After=network.target

[Service]
Type=simple
WorkingDirectory=/home/%u/.local/bin/byedpi
ExecStart=/home/%u/.local/bin/byedpi/ciadpi -i 127.0.0.1 --oob 1 --udp-fake 5 --ttl 12 --mod-http h,d,r --split 3 --split 5 --tlsrec 1+s --timeout 1 --md5sig --debug 0
Restart=on-failure
RestartSec=15

NoNewPrivileges=yes
ProtectSystem=strict
ProtectHome=read-only

[Install]
WantedBy=default.target

Сохраняем, закрываем. Затем подряд выполняем четыре команды:

systemctl --user daemon-reload   ### Перезагружаем конфигурацию systemd
systemctl --user enable ciadpi.service   ### Активируем юнит
systemctl --user start ciadpi.service   ### Запускаем сервис
systemctl --user status ciadpi.service   ### Проверяем статус

Если у нас что-то пошло не так, не работает или еще что - смотрим журнал

journalctl --user -u ciadpi.service -e

Настройка socks5-proxy в браузере

Также необходимо настроить сеть в браузере, с помощью которого вы осуществляете просмотр роликов в Youtube или сёрфинг по просторам «замедленного» интернета, для этого в Firefox (я использую только его, поэтому примеров с другими браузеров не будет) открываем настройки браузера и в разделе «Основные», прокрутив в самый низ, находим пункт «Настройки сети», нажимаем на кнопочку «Настроить…«, в открывшемся окошке в блоке «Настройка прокси для доступа в Интернет» выбираем пункт «Ручная настройка прокси», затем редактируем параметр «Узел SOCKS»:

**IP** - 127.0.0.1
**Порт** - 1080

Также желательно добавить некоторые домены или IP-адреса в список исключений, чтобы не потерять к ним доступ без отключения прокси, для обычного пользователя можно использовать следующий список:

192.168.0.0/24,ya.ru,yandex.ru,dzen.ru,mail.ru,vk.com,ok.ru,gosuslugi.ru,avito.ru,rutube.ru, rutubelist.ru, uxfeedback.ru, expf.ru, gpmdata.ru,citilink.ru,dns-shop.ru,taobao.com,aliexpress.com,aliexpress.ru,aliclick.shop,ali.click,aestatic.net,alibaba.com,hybrid.ai,alicdn.com,ozon.ru,wildberries.ru

Скриншот настроек прокси в Firefox

Скриншот настроек прокси в Firefox

Список можно редактировать в любое время и добавлять сайты (например sberbank.ru и прочие), на которые вы не можете попасть при включенном прокси. И в принципе вы уже можете использовать это решение «как есть», вы уже сможете иметь доступ к «замедленным» сайтам с запущенным бинарником byedpi и с текущей конфигурацией сети в браузере.

Остановка и удаление сервиса и файлов

Остановить сервис:

systemctl --user stop ciadpi.service

Отключить его насовсем и удалить:

systemctl --user disable ciadpi.service   ### Отключаем данный сервис
rm -v ~/.config/systemd/user/ciadpi.service   ### Удаляем его юнит
systemctl --user daemon-reload   ### Перезагружаем конфигурацию systemd

Если хотите полностью удалить все, что делали, то еще несколько команд:

rm -rf ~/.local/bin/byedpi   ### Удаляем директорию с этим софтом
rm -v ~/.bashrc && mv ~/.bashrc.bac ~/.bashrc   ### Удаляем правленный нами .bashrc и восстанавливаем из бэкапа оригинальный
source ~/.bashrc   ### перечитываем .bashrc

Улучшаем салон нашего интернет-мобиля

Как один из вариантов, а доступно их несколько, но я использую именно этот. Устанавливаем расширение (плагин) для браузера Smart Proxy, на странице данного проекта есть ссылки на магазины приложений для нескольких браузеров:

Mozilla Add-on Firefox Desktop and Android Extension

Chrome Web Store Chrome Extension

Edge Extension Edge Extension

Но для многих, полагаю, будет проще найти его в своем браузере в соответствующем пункте настроек. Делайте, как удобно лично вам.

Теперь нам необходимо настроить этот плагин. Жмакаем ЛКМ на его иконку на панели браузера, затем в выпавшем меню плагина выбираем «Настройки», нас перекинет на страницу его настроек. Но мне до такой степени влом их расписывать, что я просто дам вам бэкап моего конфига, просто разверните его во вкладке «Резервирование/Восстановление», нажмите на кнопку «Восстановить из резервной копии» и скормите диалоговому окну мой бэкап в json. Ну и собственно сам бэкап конфига здесь

После процедуры восстановления плагин автоматически активируется с уже настроенным socks5-proxy. Если у вас нет доступа к какому то нужному сайту, просто нажмите на иконку «SmartProxy» и ткните в строку «Неудачные запросы», выпадет еще один диалог, в котором покажет, какой именно хост не доступен, отметьте его чек-бокс и нажмите на кнопку «Добавить в список правил» .

Если у вас не показывает какие-либо элементы страницы, например окно плеера, просто удалите кукисы этого сайта.

Ну и на этом все, пользуйтесь на здоровье. Всем приятного просмотра и скачивания.

Внимание!!! Самое главное - не посещать сайты, официально заблокированные по решению суда РФ. Список с ними вы можете найти на официальном ресурсе Реестр запрещенных сайтов. Не забывайте, что законы надо соблюдать, даже если они кажутся вам глупыми или неправильными. И также это: «что не запрещено, то разрешено». Но при этом не возбраняется иметь ясный острый ум и хорошо подвешенный язык или хорошего адвоката в случае, если вы попадете в ситуацию «был бы человек, а статья найдется». LOL И извините, что прививаю вам паранойю, но что поделать, время такое и многие люди слабо представляют себе, что такое кибер-безопасность. В общем, я вас предупредил. Открывая дверь, посмотрите, нет ли впереди бездны, смотрящей на вас))).

Более подробно о механизмах преодоления блокировок можно почитать здесь, возможно, я дополню эту статью использованием софта из данного проекта.

Luciferus 2025/08/21 20:18

linux/netaccess.1758127093.txt.gz · Последнее изменение: Luciferus