Тоннель в конце света: как выжить в эпоху блокировок. Часть 4

Предыдущие части здесь:
Часть 1, Часть 2, Часть 3.

Если попасть в Ютуб и Телеграм кое-как получается с разными обходами, просто подбирая настройки, то с Session все оказалось сложнее. Он открывает соединения не как обычный HTTPS, использует свой routing, часто задействует UDP и потому легче распознается DPI.

Придется попасть в него другим путем, хотя у других сработали обходы, когда клиентом была Amnezia.

Буду использовать сервер, на котором установлен Ubuntu. Для начала хочу устанавливать программу WireGuard:

apt install -y wireguard

Далее узнаем имя своего сетевого интерфейса:

ip a

Вам нужно увидеть что-то типа eth0, ens3, ens18 или enpls0, у меня получился eth0:

На сервере командой генерируем ключи:
wg genkey | tee /root/server_private | wg pubkey > /root/server_public

А затем проверяем, что он получились:

cat /root/server_private

и:

cat /root/server_public

А затем делаем файл с ключами, где строка 1 → server_private, а строка 2 → server_public:

cat /root/server_private /root/server_public > /root/wg_keys.txt

и получаем их через FileZilla в папке /root/ :

 

Создаем конфиг из чистого текстового файла под названием wg0.conf и через Visual Code помещаю в него следующую программу, заменяя слова приватным ключом:

[Interface]

Address = 10.10.0.1/24

ListenPort = 40000

PrivateKey = ВАШ_PRIVATE_КЛЮЧ_СЕРВЕРА

PostUp = sysctl -w net.ipv4.ip_forward=1

PostUp = iptables -t nat -A POSTROUTING -s 10.10.0.0/24 -o eth0 -j MASQUERADE

PostDown = iptables -t nat -D POSTROUTING -s 10.10.0.0/24 -o eth0 -j MASQUERADE

 

[Peer]

PublicKey = ПУБЛИЧНЫЙ_КЛЮЧ_КЛИЕНТА

AllowedIPs = 10.10.0.2/32

 

 

Конфиг помещаем на сервер в папку /etc/wireguard/

Возвращаемся на сервер и в командной строке запускаем права конфигу:

chmod 600 /etc/wireguard/wg0.conf

А затем запускаем сервис несколькими командами:

systemctl enable wg-quick@wg0

и:

systemctl start wg-quick@wg0

а затем проверяем:

wg

если не стартанул – узнаем причину:

systemctl status wg-quick@wg0 --no-pager

У меня ключ имел неверный формат, один лишний символ ломает конфиг, исправляю, перезапускаю:

systemctl restart wg-quick@wg0

и снова проверяю:

wg

Теперь скачиваю клиент wireguard windows, точнее wireguard-installer.exe.

а на андроиде нужен WireGuard

Нажимаю «добавить пустой тунель» — не из файла, откроется окно, где уже заполнен сгенерированный клиентом ключ.

Даем название, меняем содержимое , ключ клиента не трогаем, остальное так, вместo текста ставим ключ из второй строки и ip вашего сервера:

[Interface]

PrivateKey = ВАШ_КЛИЕНТСКИЙ_PRIVATE_КЛЮЧ

Address = 10.10.0.2/24

DNS = 8.8.8.8, 1.1.1.1

MTU = 1280

 

[Peer]

PublicKey = ПУБЛИЧНЫЙ_КЛЮЧ_СЕРВЕРА

Endpoint = IP_СЕРВЕРА:40000

AllowedIPs = 0.0.0.0/0

PersistentKeepalive = 15

Сохраняю, затем жму «подключить» — и интернет у меня благополучно отваливается

А все потому, что сервер еще не знаком с нашим клиентов и ему нужно скормить тот самый ключ, который клиент сам сгенерировал. Потому сначала заходим в наш конфиг в папку /etc/wireguard/wg0.conf через FileZilla. В конфиге добавляем в самом низу команду:

[Peer]

PublicKey = сгенерированный_клиентом_ключ

AllowedIPs = 10.10.0.2/32

Сохраняем, заливаем обратно и перезапускаем программу на сервере:

systemctl restart wg-quick@wg0

Но лучше сразу перезагрузить интерфейс, чтоб сервер увидел изменения:

systemctl stop wg-quick@wg0

затем:

systemctl start wg-quick@wg0

и проверяем:

wg

У нас должна появиться строка peer со своим ключом:

Кстати порт мне пришлось менять – в конфиге, клиенте, и выставить 40000, потому на скринах отображается другой, если тоже будете подбирать, то вот команды перезапуска программы

1

wg-quick down wg0

2
wg-quick up wg0

3

wg

Если после подключения интернет пропадает – вводим команду на сервере для проверки FORWARD:

iptables -L FORWARD –n

Если вам выдает policy DROP – жмем

iptables -P FORWARD ACCEPT

И сохраняем наше созданное правило:

apt install -y iptables-persistent

после чего сервер перезагрузится, очаровав вас надписью на фиолетовом:

В боковой панели жму «yes» и жду окончания обновлений:

Затем снова запускаю клиент и проверяю айпи и скорость интернета, а затем проверяю все через поход в Session. Финальный вариант в клиенте у меня выглядит так:

И после сохранения:

И теперь самое интересное: после месяца головняка с серверами у меня уже спортивный интерес слепить новый обход. Но мне до сих пор не удается некоторым пояснить разницу меду клиентом и ВПН. Потому мне придется вместо настроек дать человеку на тест готовый обход.

Для этого в клиенте правой кнопкой мыши выбираю экспорт всех туннелей в zip-архив, а потом пересылаю его себе на телефон или человеку, а он уже загружает и открывает через WireGuard. Это не совсем верно, потому сделаю иначе.

Для тех, кто не любит архивы и предпочитает QR – код, покажу, как можно его сделать.

Для начала делаю новый конфиг из текстового документа под названием client1.conf

Вставляю копированием в него с помощью Visual Code все, что у нас находится тут:

Затем сохраняю и помещаю с помощью FileZilla в папку /root

На сервере в командной строке выполняю следующую команду:

qrencode -o client1.png client1.conf

Для начала ставлю программу на сервере командой:

apt install -y qrencode

И проверяем командой:

ls

Должны увидеть client1.png, но у меня там стоит другой обход, потому прямо в терминале получаю qr-код командой:

qrencode -t ansiutf8 < client1.conf

Он у меня получился какой-то кривой, потому client1.png открываю в FileZilla и нахожу там файл:

Открываю его и нахожу готовый qr-код, которым уже можно делиться. На телефоне открываю WireGuard и сканирую им код, программа просит у меня дать имя туннелю. Рандомно ввожу, что хочу, например, цифру и подключаюсь. В Session зайти можно, а большего от него и не требовалось, хотя сработал, как полноценный обход.

 

ПРОКСИ ДЛЯ ТЕЛЕГРАМ

И по многочисленным просьбам трудящихся на фоне текущих замедлений отдельно опишу создание прокси для Телеграмм.

Для начала устанавливаю командой программу MTProto

Так как у меня AlmaLinux то устанавливаю программу MTProto через Podman:

dnf install -y podman

Проверяем:

podman –version

И затем проверяем порт, например 8888:

ss -ltnp | grep :8888

И запускаем контейнер MTProto:

сначала генерим secret в файл (потом взять через FileZilla:

openssl rand -hex 16 > /root/mtproto_secret.txt

затем запускаем контейнер:

podman run -d --name mtproto -p 8888:443 \

-e SECRET=$(cat /root/mtproto_secret.txt) \

docker.io/telegrammessenger/proxy

Смотрим лог и получаем ссылку для телеграмм:

podman logs mtproto

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

echo "tg://proxy?server=109.94.209.252&port=443&secret=aec905e2311056d6b1c85e52f6e2fa82" > /root/tg_proxy.txt

И получаю ссылку в FileZilla в папке:

/root/tg_proxy.txt

Ссылку помещаю в избранное, создаю себе чат и отправляю себе же, а  затем открываю, нажимаю «включить прокси» — и Телеграмм умирает…

Если подключение не удалось, его отключают, зайдя в настройки Телеграмм, продвинутые настройки и отключают ненужное прокси. У меня Телеграмм подключиться предложил на 443 порту, а обход должен был быть на 8888.

Проверяю:

podman ps

и нахожу там уже известную Amnezia, начинаю чинить:

podman stop mtproto

затем:

podman rm mtproto

И после этого уже запускаю на 8899 порту нашу программу:

podman run -d --name mtproto -p 8899:443 \

-e SECRET=$(cat /root/mtproto_secret.txt) \

docker.io/telegrammessenger/proxy

затем создаю новую ссылку:

echo "tg://proxy?server=109.94.209.252&port=8899&secret=$(cat /root/mtproto_secret.txt)" > /root/tg_proxy_fixed.txt

И забираю ее через FileZilla.

/root/tg_proxy_fixed.txt

Если у вас получилось любое подключение с первого раза – жизнь ваша, конечно, хорошая, но скушная…

Теперь у меня все работает, очень надеюсь, что у вас тоже.

Ели же у вас Ubuntu/Debian, то набор команд немного другой, но принцип тот же – надо поставить MTProto:

apt update

и:

apt install -y docker.io openssl

Затем запуск:

systemctl enable --now docker

и проверка:

docker –version

Проверяю тот же порт, что и на прошлом сервере:

ss -ltnp | grep :8899

А далее как раньше:

Сначала надо сгенерировать секрет в файл (чтобы брать через FileZilla):

openssl rand -hex 16 > /root/mtproto_secret.txt

Затем запускаю MTProto proxy контейнер:

docker run -d --name mtproto --restart=always -p 8899:443 -e SECRET=$(cat /root/mtproto_secret.txt) telegrammessenger/proxy

Проверяете порт в firewall (если UFW включён, у меня был выключен еще с момента проверки под создание других вариантов):

ufw status

Когда аctive:

ufw allow 8899/tcp

И снова делаю ссылку в текстовый файл для FileZilla:

echo "tg://proxy?server=IP_СЕРВЕРА&port=8899&secret=$(cat /root/mtproto_secret.txt)" > /root/tg_proxy.txt

И забираю ссылку в FileZilla из файла tg_proxy.txt в папке:

/root/tg_proxy.txt

Надеюсь, что подключение в Телеграмм вы уже освоили.

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

айпи.server это proxy.твойподдомен.домен.com с серым облаком, который указывает на твой сервер – и можем даже поделиться с семьей. Важно помнить: для каждого отдельного устройства нужно заново подключать прокси на Телеграмм, а выключить можно просто перезагрузив устройство

С предыдущими частями можно ознакомиться  здесь:
Часть 1, Часть 2, Часть 3.

1

Автор публикации

не в сети 15 часов

Николай

429
Комментарии: 83Публикации: 4730Регистрация: 03-02-2021

Оставьте первый комментарий

Отправить ответ