Создание своего vpn с помощью shadowsocks и обфускация трафика

MonteRico

Постоянный участник
PR-group
PREMIUM USER
ДРУЗЬЯ ФОРУМА
Private fold group

MonteRico

Постоянный участник
PR-group
PREMIUM USER
ДРУЗЬЯ ФОРУМА
Private fold group
Регистрация
12 Май 2020
Сообщения
108
Реакции
32
Репутация
62
Создание своего VPN с помощью Shadowsocks и обфускация трафика
К написанию этой статьи привело размышление: "А так ли эффективны сервисы VPN и Tor в частности?" И вот, после недолгого гугления всплыли неутешительные факты:

  • Провайдеры детектят любой подозрительный трафик и намеренно занижают скорость интернет-соединения
  • Они же (и те, кто держат сервера с VPN) идут на поводу у РосКомНадзора/Федеральной комисси по связи/etc. , и при надобности могут выдать последним ключи шифрования
  • Некоторые провайдеры VPN вообще не шифруют трафик
  • Как правило, на серверах VPN используют OpenVPN, либо же его модифицированную версию (минус ли это - решать вам)
  • Провайдеры VPN ограничивают количество устройств на тарифе, или режут определённый вид трафика (например, торренты)
  • Tor, хоть и шифрует трафик, не обеспечивает полную анонимность - на выходной ноде вполне возможно перехватывать трафик, да и на многие сайты с ним невозможно зайти
Возникает закономерный вопрос - так чем, черт возьми, пользоваться? Тут ответ приходит, внезапно, из Китая - Shadowsocks.

Что это такое?
Как говорит нам англоязычная Википедия: "Shadowsocks - это бесплатный проект протокола шифрования с открытым исходным кодом, широко используемый в материковом Китае для обхода цензуры в Интернете". Действительно, он там используется для обхода знаменитого "Золотого щита", которым так гордится китайское правительство, и делает это весьма успешно.

Работает он в связке "Сервер-клиент" - трафик шифруется у клиента, пересылается на сервер, там расшифровывается и выпускается в Интернет. Причём и сервер, и клиент вы настраиваете сами - никакой утечки информации или попадании её не в те руки, плюс вы сами вольны выбирать алгоритм шифрования.

Более подробную информацию можно получить на

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.



Подготовительный этап
Для начала нам потребуется сервер. Где его брать я вам говорить не буду, т.к. в интернете много компаний предоставляют облачные сервера. Для Shadowsocks достаточно самого дешёвого - мой крутится на сервере с 1 ядром, 400 мегабайтами оперативной памяти и 5 гигабайтами дискового пространства, и этого вполне хватает. Главный же критерий тут - скорость соединения и место расположения сервера - для обхода блокировок лучше брать в Америке, Франции или Италии. Главное - безлимитный трафик (но если вы пользуетесь интернетом не так активно, то можно и ограниченный)

Далее переходим к выбору серверной ОС - тут желательно выбрать Ubuntu 64x, но можно либо Debian, либо CentOS. В этой же статье будет описываться сервер с Ubuntu 18.04

Если вы желаете полной анонимности, то платить за такой сервер следует биткойнами, и нигде не указывать свои данные (но это уже для незаконных действий, благо мы с вами не такие)

Настройка сервера
Сервер арендован, ОС поставлена, можно приступать к настройке самого Shadowsocks

Сначала обновимся

apt update && apt upgrade

Затем поставим сам Shadowsocks

apt install shadowsocks-libev

Тут нужно небольшое пояснение: shadowsocks-libev - Shadowsocks, переписанный на чистом Си

Затем откроем конфигурационный файл редактором nano

nano /etc/shadowsocks-libev/config.json

Следует рассказать о назначении некоторых параметров:

  • server - адрес вашего сервера, следует заменить на реальный адрес вашего сервера
  • server_port - порт, на котором будет открыт ваш сервер, можно поменять на любой, кроме тех, которые уже заняты
  • local_port - порт для связи внутри сервера, оставьте дефолтным
  • password - пароль от вашего соединения, поменяйте на более заковыристый
  • timeout - время, после которого сервер разрывает соединение, если не поступило никаких данных. Вместо 60 секунд лучше ввести 10, т.к. больше многие клиенты не поддерживают
  • method - метод шифрования трафика, лучше оставить дефолтным, либо поменять на предпочтительный
Остальных параметров нет в оригинальном файле, но в дальнейшем мы их введём.

Сохраняем файл при помощи Ctrl-O, Enter, а затем выходим с помощью Ctrl-X. Советую вам где-нибудь записать или сфотографировать всё то, что мы ввели.

Теперь добавим Shadowsocks в автозапуск:

systemctl enable shadowsocks-libev

systemctl restart shadowsocks-libev

Ну вот и всё! Базовый сервер настроен, перейдём к настройке клиента

Настройка клиента
Windows

Идём на

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

и качаем клиент для Windows

Затем распаковываем в удобное для нас место (Я распаковывал в корень C), запускаем, и видим следующее:


Заполняем все пункты так же, как и в конфигурационном файле, порт прокси не трогаем, нажимаем "Применить", и всё!

Состояние программы будет отображать значок в трее. Там же нужно поставить галочку по пути "Системный прокси-сервер -> Для всей системы", и автозапуск (по желанию)

Android

В Google Play ищем приложение Shadowsocks, устанавливаем, и настраиваем по аналогии с Windows

(Совет: Дабы не мучаться с вводом длинного пароля, можно выбрать в приложении пункт "Сканировать QR-код", а на Windows (где клиент уже настроен) выбрать пункт меню "Серверы ->

Поделиться конфигурацией сервера")

Linux

Копируем в терминал ту же самую команду, которую мы использовали для установки Shadowsocks на сервере.

Затем открываем с помощью nano конфигурационный файл:

nano /etc/shadowsocks-libev/config.json

И заполняем аналогично тому, как мы заполняли его на сервере

Затем вводим следующее для запуска:

sudo ss-local -c /etc/shadowsocks-libev/config.json

Чтобы соединение было и после перезапуска клиента, добавляем сервис, создав файл ss-local.service:

sudo nano /etc/systemd/system/ss-local.service

В него вставляем следующее:

Код:Скопировать в буфер обмена

[Unit]
Description=Daemon to start Shadowsocks Client
Wants=network-online.target
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/ss-local -c /etc/shadowsocks/config.json

[Install]
WantedBy=multi-user.target

Выходим, и прописываем последнюю команду:

sudo systemctl daemon-reload && sudo systemctl enable ss-local.service && sudo systemctl start ss-local.service

Теперь перейдём к обфускации трафика

Обфускация трафика
Для чего она нужна? Ну, прежде всего, это дополнительная защита вашего трафика от прослушивания: тот, кто попытается отследить ваши посещения, будет путаться - то ли вы На Ютуб зашли, то ли вы картинки с котиками смотрите

Хватит болтовни, приступим к делу.

Для начала скачиваем плагин:

Код:Скопировать в буфер обмена

apt install simple-obfs

Затем нам потребуется отредактировать конфиг:

Код:Скопировать в буфер обмена

nano /etc/shadowsocks-libev/config.json

В нём мы добавляем в самый конец две строчки, которые мы пропустили во время первоначальной настройки:

  • plugin - активирует этот самый плагин, туда вставляем "obfs-server"
  • plugin_opts - задаёт параметры запуска плагина, в данном случае вводим как на картинке, подставляя вместо

    Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

    любой сайт
Перезапускаем всё это добро:

Код:Скопировать в буфер обмена

systemctl restart shadowsocks-libev

Перейдём к настройке клиентов:

  • в Windows - скачиваем плагин с

    Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

    , и распаковываем в директорию Shadowsocks. Затем, в Редактировании серверов в поле Плагин вставляем obfs-local, а в поле Опции плагина - всё то же самое, что мы вставляли в конфиг
  • на Android - скачиваем в Google Play Simple Obfuscation, и в настройках конфига сервера Shadowsocks, в графе Плагины, выбираем данное приложение и вводим всё так же, как на Windows
  • в Linux - скачиваем плагин (та же команда, что и для сервера), редактируем конфиг, добавляя эти два параметра, и перезагружаем клиент
Ну, вот и всё! Персональный сервер с VPN и обфускацией трафика готов!

Далее будет рассмотрен плагин v2ray, пришедший на замену simple-obfs (который уже устарел), и то, как создать подобие сети Tor с входными и выходными нодами.

Вы спросите: "Ну, насчёт первого понятно, а зачем второе?"

Я отвечу - так вас будет сложнее отследить: весь трафик, который будет приходить на входную ноду, будет пересылаться на выходную ноду, а уж там выпускаться во Всемирную сеть. Благодаря этому тот, кто попытается вас найти, следя, кто писал с этого IP, и кто в это же время к нему подключался, останутся ни с чем.

Ну что, приступим!

Начнём с настройки сервера с плагином v2ray.

v2ray

Настройка сервера
Ну, начнём с очевидного - вам нужен сервер. Как его выбрать - смотрите в первой статье. ОС, которая использовалась на сервере для написания данной статьи - Ubuntu 18.04 64x.

Сначала обновимся:

Код:Скопировать в буфер обмена

sudo apt update && sudo apt upgrade

Затем установим сам shadowsocks:

Код:Скопировать в буфер обмена

sudo apt install shadowsocks-libev

Затем идём на данную страницу

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

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

Код:Скопировать в буфер обмена

wget

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.



Распаковываем скачанный архив (название может отличатся):

Код:Скопировать в буфер обмена

sudo tar -xf v2ray-plugin-linux-amd64-v1.3.0.tar.gz

Переносим плагин в удобное место и переименовываем его:

Код:Скопировать в буфер обмена

sudo mv v2ray-plugin_linux_amd64 /etc/shadowsocks-libev/v2ray-plugin

Теперь разрешим плагину и Shadowsocks использовать привилегированные порты:

Код:Скопировать в буфер обмена

sudo setcap 'cap_net_bind_service=+eip' /etc/shadowsocks-libev/v2ray-plugin

sudo setcap 'cap_net_bind_service=+eip' /usr/bin/ss-server

Создаём файл конфигурации, с которым будет работать Shadowsocks, в nano :

Код:Скопировать в буфер обмена

sudo nano /etc/shadowsocks-libev/v2ray.json

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

JSON:Скопировать в буфер обмена

{
"server":"0.0.0.0",
"server_port":443,
"password":"ваш пароль",
"local_port":1080,
"timeout":300,
"method":"chacha20-ietf-poly1305",
"fast_open":true,
"reuse_port":true,
"plugin":"/etc/shadowsocks-libev/v2ray-plugin",
"plugin_opts":"server",
"nameserver":"ваш DNS сервер"
}

В поля password и nameserver вставляем ваши пароль и адрес DNS сервера соответственно. Также вы можете изменить метод шифрования, если вас не устраивает этот. Сохраняемся (Ctrl-O, Enter) и выходим (Ctrl-X)

Теперь создадим сервис ss-v2ray.service:

Код:Скопировать в буфер обмена

sudo nano /etc/systemd/system/ss-v2ray.service

И вставим в него следующее:

Код:Скопировать в буфер обмена

[Unit]
Description=Shadowsocks-libev with V2RAY-websocket obfuscation
Documentation=man:shadowsocks-libev(8)
After=network.target

[Service]
Type=simple
User=nobody
Group=nogroup
LimitNOFILE=51200
ExecStart=/usr/bin/ss-server -c /etc/shadowsocks-libev/v2ray.json

[Install]
WantedBy=multi-user.target

Сохраняемся и выходим.

Затем включаем и рестартуем сервис:

Код:Скопировать в буфер обмена

sudo systemctl enable ss-v2ray.service && sudo systemctl restart ss-v2ray.service

Настройка сервера завершена!

Настройка клиента
Пара нюансов:

1. В Windows вам нужно скачать версию под вашу архитектуру, и переименовать её в v2ray.exe, а в настойках Shadowsocks, в Опциях плагина указать параметр host=example.com, где example.com - тот сайт, куда "идёт" трафик

2. В Linux - скачиваем плагин, перемещаем туда же, куда перемещали и на сервере. Затем в config.json указываем всё то же, что указывали в v2ray.json, меняя 0.0.0.0 в строке "server" на адрес сервера, и "server" на "host=example.com" в строке "plugin_opts"

3. На Android - просто скачиваем v2ray plugin в Google Play и указываем в настройках плагина, в опции host, любой сайт

Настройка клиента завершена!

Теперь перейдём к созданию подобия сети Tor

ShadowTor (да, я решил это так назвать, и не спрашивайте зачем)

ВНИМАНИЕ! Здесь требуется уже 2 сервера

Настройка выходной ноды
Выходная нода настраивается точно также, как и просто сервер с Shadowsocks (советую поставить на него v2ray или simple-obfs)

Настройка входной ноды

На неё мы ставим Shadowsocks, и настраиваем как клиент, чтобы он подключался к нашей выходной ноде

Затем ставим HAProxy:

Код:Скопировать в буфер обмена

sudo apt install haproxy

Потом нам нужно отредактировать файл настроек HAProxy:

Код:Скопировать в буфер обмена

nano /etc/haproxy/haproxy.cfg

В котором заменим строку в секции default:

Код:Скопировать в буфер обмена

mode http

на

Код:Скопировать в буфер обмена

mode tcp

Затем, в самый конец файла, мы вставим следующее:

Код:Скопировать в буфер обмена

frontend ss-in
bind *:80
default_backend ss-out
backend ss-out
server server1 127.0.0.1:1080

И всё!

Перейдём к настройке клиента

Настройка клиента
Здесь нет ничего сложного - просто настраиваем использование интернета программами через SOCKS5 прокси, который теперь находится по адресу ip_входной_ноды:80

Теперь весь трафик сначала будет идти на входную ноду, затем от неё на выходную, а только лишь потом - в интернет.
 
  • Нравится
Реакции: BadX
Недавно полученная репутация:
BadX +5 репутации

Круц

Активный участник

Круц

Активный участник
Регистрация
19 Сен 2021
Сообщения
53
Реакции
0
Репутация
0
Круто, попробую осуществить...
Спс. автору.
 
Сверху