Как развернуть свой собственный VPN сервер?

Привет фейслесс.

В этой статье мы рассмотрим 3 способа развернуть свой ВПН. 1 очень простой и полностью бесплатный с ограничениями — Shadowsocks. 2-й и 3-й платные, ограничения зависят от бюджета — OpenVPN и Shadowsocks.

ОЧЕНЬ ВАЖНО!
Способ с Heroku больше не актуален!

С недавнего времени Heroku больше не поддерживает бесплатные проекты.

Альтернативы: (автором этого текста сервисы ниже не тестировались)

Что такое Shadowsocks?

Это клиент с открытым исходным кодом, сделанный и имеющий широкое распространение в Китае, для обхода великого Китайского фаервола. Существует ПО как для клиента, так и для сервера.

Как он работает?

Клиент притворяется прокси сервером, получает входящие соединения и шифрует их, передаёт на сервер и там выпускает в интернет.

kak-razvernut-svoy-sobstvennyy-vpn-server-kak-rabotayet-shadowsocks

Общие характеристики​

  • Все данные, которые проходят через клиент и сервер зашифрованы.
  • Скорость работы. По сравнению с SSH туннелем, который работает по схожему принципу, shadowsocks имеет большую пропускную способность.
  • Алгоритм шифрования можно выбрать.
  • Возможность настроить доступ на уровне отдельных программ, сайтов.
  • OpenVPN, Tor, SSH довольно просто определяются китайским фаерволом. Shadowsocks – нет. Даже если вашему провайдеру захочется троттлить соединение к прокси, есть возможность прикрутить обфускацию соединения. Плагин маскирует прокси-трафик под HTTPS или TLS/SSL.
  • Удобные клиенты для любых устройств. Можно забыть о ненадежных ВПН мобильных устройств, скачиваешь клиент и подключаешься к собственному серверу.
  • Чем лучше шифрование, тем более он требователен, особо заметно на слабых, старых телефонах и ПК.

Он подойдёт для всего, как и обычный впн. Но что-то не законное лучше не делать как и через обычный впн, хостер может слить все данные. Для этого лучше юзать хостеров стран третьего мира, но даже там могут возникнуть проблемы.

1 Способ. Shadowsocks + Heroku.

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

  • Временная квота составляет 550 часов в месяц или же ~22 дня непрерывной работы.
  • Сервер уходит в спящий режим после 30 минут отсутствия запросов к нему. С одной стороны это доставляет неудобства в виде задержек ответа до полминуты после перерыва в активности. С другой стороны, это экономит отведённую временную квоту.
  • Квота на передачу данных равна 2ТБ в месяц. То есть в случае с прокси это даёт 1ТБ трафика в месяц.

Регистрируем аккаунт на Heroku. После регистрации подтверждаем Email, и входим в аккаунт, если не вошли. Далее нажимаем здесь. У вас откроется страница создания приложения на Heroku.

Придумываем одинаковое название для — «app-name» и «AppName».

ENCRYPT — Алгоритм шифрования, чача один из лучших.
PASSWORD — Придумываем сложный пароль.
QR_Path — Лучше сделать сложный и непонятный URL, при переходе будет отображаться QR код для подключения к серверу.

kak-razvernut-svoy-sobstvennyy-vpn-server-heroku-settings

Как всё заполнили, нажимаем — Deploy app. Ждём окончания…

Далее открываем наше приложение, и в конце URL пишем то что заполняли в QR-Path. Если что-то забыли, или хотите изменить — Settings > Config Vars > Reveal Config Vars.

*Как подключиться к серверу Shadowsocks?

2 способ. Shadowsocks + VDS\VPS.

Что понадобится?​

Собственно сам арендуемый сервер.

putty – клиент для различных протоколов удалённого доступа, включая SSH, Telnet, rlogin. Будем с помощью него манипулировать сервером.

Можно юзать vdsin’у, (скидка 10%) там нету заполнения данных документов, только email, пароль, и данные оплаты. Оплата там ежедневная.

Устанавливаем ubuntu.

Запускаем putty, вводим ip сервера, нажимаем соединиться

В полях:

login as: как правило – root

root@ip's: password: пароль от удаленного доступа, у разных хостеров он выдаётся по разному, но обычно, данные приходят на почту, так же они должны быть в разделах “Доступ”, “Подключение”, или как-то так в админке.

*Вставлять в putty shift+insert

Установка

Обновляем репозитории:
sudo apt update && apt upgrade -y

Устанавливаем snapd:
sudo apt install -y snapd

Делаем ребут сервера:
sudo reboot

Устанавливаем shadowsocks (на C, быстрота и вес):
sudo snap install shadowsocks-libev

Создаём директорию для конфига:
sudo mkdir -p /var/snap/shadowsocks-libev/common/etc/shadowsocks-libev

Создаём конфиг:
sudo touch /var/snap/shadowsocks-libev/common/etc/shadowsocks-libev/config.json

Открываем кфг в nano:
sudo nano /var/snap/shadowsocks-libev/common/etc/shadowsocks-libev/config.json

Вставляем туда код:

{
    "server":"ip",
    "server_port":443,
    "local_port":1080,
    "password":"pass",
    "timeout":20,
    "method":"chacha20-ietf-poly1305",
    "fast_open":true,
    "nameserver":"1.1.1.1",
    "mode":"tcp_and_udp"
}

– ip – ip вашего сервера

– port – любой, можно поставить 443

– local_port – не менять

– pass – придумать пароль, будет использоваться для авторизации в клиенте shadowsocks

– timeout – оставить 20

– method – метод шифрования трафика, чем мощнее метод тем требовательней, клиент. Рекомендую оставить указаный метод. Если будет много есть, или быстро тратить батарейку на телефоне, то можно поставить – aes-256-gcm

– fast_open снижает пинг, если проблемы, стоит отключить его – false вместо true

– nameserver – днс, если оставить пустым, будет дефолтный днс хостера, а так там стоит днс от CloudFlare то есть 1.1.1.1, то же рекомендую оставить

– mode – tcp/udp трафика или обоих, если в сети есть специфические требования, возможно потребуется установить tcp_only, а так tcp_and_udp

*ctrl+o – сохранить, ctrl+x – выйти

Далее делаем автозапуск:

sudo touch /etc/systemd/system/[email protected]

sudo nano /etc/systemd/system/[email protected]

В открывшимся nano вставляем код:

[Unit]
Description=Shadowsocks-Libev Custom Server Service for %I
Documentation=man:ss-server(1)
After=network-online.target

[Service]
Type=simple
ExecStart=/usr/bin/snap run shadowsocks-libev.ss-server -c /var/snap/shadowsocks-libev/common/etc/shadowsocks-libev/%i.json

[Install]
WantedBy=multi-user.target

Запускаем сервер:​
sudo systemctl enable --now shadowsocks-libev-server@config

Проверяем запустился ли сервер:​
sudo systemctl status shadowsocks-libev-server@config

shadowsocks-server-startup-check-preview
Опционально: Редактируем настройки ядра, для максимальной производительности​

Открываем настройки ядра:

sudo nano /etc/sysctl.conf

В конце файла вставляем код:

fs.file-max = 51200
net.core.netdev_max_backlog = 250000
net.core.somaxconn = 4096
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 10000 65000
net.core.netdev_max_backlog = 4096
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_mtu_probing = 1
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.ipv4.tcp_mem = 25600 51200 102400
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864

ctrl+o, ctrl+x

Применяем настройки:​

sudo sysctl -p

Прикручиваем v2ray

v2ray уже есть в Shadowsocks + Heroku. Это только если вы устанавливаете shadowsocks на vps\vds. Следующие содержимое рассчитано, на то что вы устанавливали сервер по данному гайду. Если же нет, будьте внимательны к путям.

Скачиваем плагин:

wget https://github.com/shadowsocks/v2ray-plugin/releases/download/v1.3.1/v2ray-plugin-linux-amd64-v1.3.1.tar.gz

Смотрите актуальную версию плагина тут. На момент написания статьи версия 1.3.1.

Разархивируем:

tar -xf filename.tar.gz

Перемещаем и переименовываем:

mv v2ray-plugin_linux_amd64 /var/snap/shadowsocks-libev/common/etc/shadowsocks-libev/v2ray-plugin

Даём права:
chmod +x /var/snap/shadowsocks-libev/common/etc/shadowsocks-libev/v2ray-plugin

setcap cap_net_bind_service=+ep /var/snap/shadowsocks-libev/common/etc/shadowsocks-libev/v2ray-plugin

Редактируем конфиг:
nano /var/snap/shadowsocks-libev/common/etc/shadowsocks-libev/config.json

В конце вставляем:
"plugin":"/var/snap/shadowsocks-libev/common/etc/shadowsocks-libev/v2ray-plugin"

Редактируем конфиг запуска ss-сервера:
sudo nano /etc/systemd/system/[email protected]

Вставляем туда код:

[Unit]
Description=Shadowsocks-Libev Custom Server Service for %I
Documentation=man:ss-server(1)
After=network-online.target

[Service]
Type=simple
ExecStart=/usr/bin/snap run shadowsocks-libev.ss-server --plugin /var/snap/shadowsocks-libev/common/etc/shadowsocks-libev/v2ray-plugin >

[Install]
WantedBy=multi-user.target

Перезагружаем ss-сервер (выключение сервера):
sudo systemctl stop shadowsocks-libev-server@config && sudo systemctl disable --now shadowsocks-libev-server@config

Запуск ss-сервера:
sudo systemctl enable --now shadowsocks-libev-server@config

Проверка рабоспособности ss-сервера:
sudo systemctl status shadowsocks-libev-server@config

3 способ. OpenVPN + vps\vds.

По моему мнению, OpenVPN будет хуже shadowsocks, поэтому мне лень что-то писать, смотрим видео.

Как подключиться к серверу Shadowsocks?

Качаем клиент Shadowsocks.

Кидаем папку в удобное место. Установки нет, это portable версия, при запуске создаются конфиг файлы.

shadowsocks-client-soft-preview

ip – адрес – ip сервера

Порт – как в конфиге

Пароль – как в конфиге

Шифрование – это метод, как в конфиге

Таймаут – как в конфиге, 20

*Плагин – если устанавливали, указываем v2ray.

Больше ничего не трогаем.

Как подключиться к ВПН​?

ПКМ по значку shadowsocks на панели задач в трее, там “Системный прокси-сервер” – “Для всей системы”.

Так же выбрать сервер, в одноимённой вкладки.

“Автозагрузка” – если при запуске ПК нет интернета, значит shadowsocks не запустился с системой. Дополнительные меры предосторожности. Если отвалится что-то на пути – то интернет отключится во всей системе.

Как подключить другие устройства​?

ПКМ по значку в трее, “Серверы”, “Поделиться конфигурацией сервера”, появится qrcode, и снизу адрес, нужно либо отсканировать код, либо импортировать адрес ниже.

На этом пожалуй всё.

Этот веб-сайт использует файлы cookie, чтобы обеспечить вам наилучший опыт.
Этот веб-сайт использует файлы cookie, чтобы обеспечить вам наилучший опыт.