Создание своего Shadowsocks + v2ray + tor [Часть 2]

В прошлой статье мы разобрались как поднять shadowsocks а в этой статье разберем что такое плагин v2ray который пришел на замену старому simple-obfs, и то, как создать подобие сети TOR с входными и выходными нодами.
Прошлая статья - https://teletype.in/@slivmens/lqGPdSclx

Вы спросите: "Ну, насчёт первого понятно, а зачем второе?"
Я отвечу - так вас будет сложнее отследить: весь трафик, который будет приходить на входную ноду, будет пересылаться на выходную ноду, а уж там выпускаться во Всемирную сеть. Благодаря этому тот, кто попытается вас найти, следя, кто писал с этого IP, и кто в это же время к нему подключался, останутся ни с чем.
Начнём с настройки сервера с плагином v2ray.
Ну, начнём с очевидного - вам нужен сервер. Как его выбрать - смотрите в первой статье. ОС, которая использовалась на сервере для написания данной статьи - Ubuntu 18.04 64x.

Сначала обновимся:
sudo apt update && sudo apt upgrade
Затем установим сам shadowsocks:
Код:

sudo apt install shadowsocks-libev
Затем идём на данную страницу https://github.com/shadowsocks/v2ray-plugin/releases, копируем ссылку на последний релиз для нашего сервера и скачиваем его командой wget:

Код:

wget https://github.com/shadowsocks/v2ray-plugin/releases
Распаковываем скачанный архив (название может отличатся):

Код:

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

Теперь весь трафик сначала будет идти на входную ноду, затем от неё на выходную, а только лишь потом - в интернет.
И не забываем использовать Simple DNSCrypt - https://teletype.in/@slivmens/xOSXEF2NZ