- Регистрация
- 12 Май 2020
- Сообщения
- 108
- Реакции
- 32
- Репутация
- 62
Создание своего VPN с помощью Shadowsocks и обфускация трафика
К написанию этой статьи привело размышление: "А так ли эффективны сервисы VPN и Tor в частности?" И вот, после недолгого гугления всплыли неутешительные факты:
Что это такое?
Как говорит нам англоязычная Википедия: "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
Следует рассказать о назначении некоторых параметров:
Сохраняем файл при помощи 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
В нём мы добавляем в самый конец две строчки, которые мы пропустили во время первоначальной настройки:
Код:Скопировать в буфер обмена
systemctl restart shadowsocks-libev
Перейдём к настройке клиентов:
Далее будет рассмотрен плагин 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
Теперь весь трафик сначала будет идти на входную ноду, затем от неё на выходную, а только лишь потом - в интернет.
К написанию этой статьи привело размышление: "А так ли эффективны сервисы VPN и Tor в частности?" И вот, после недолгого гугления всплыли неутешительные факты:
- Провайдеры детектят любой подозрительный трафик и намеренно занижают скорость интернет-соединения
- Они же (и те, кто держат сервера с VPN) идут на поводу у РосКомНадзора/Федеральной комисси по связи/etc. , и при надобности могут выдать последним ключи шифрования
- Некоторые провайдеры VPN вообще не шифруют трафик
- Как правило, на серверах VPN используют OpenVPN, либо же его модифицированную версию (минус ли это - решать вам)
- Провайдеры VPN ограничивают количество устройств на тарифе, или режут определённый вид трафика (например, торренты)
- Tor, хоть и шифрует трафик, не обеспечивает полную анонимность - на выходной ноде вполне возможно перехватывать трафик, да и на многие сайты с ним невозможно зайти
Что это такое?
Как говорит нам англоязычная Википедия: "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 - скачиваем плагин (та же команда, что и для сервера), редактируем конфиг, добавляя эти два параметра, и перезагружаем клиент
Далее будет рассмотрен плагин 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
Теперь весь трафик сначала будет идти на входную ноду, затем от неё на выходную, а только лишь потом - в интернет.