Как поднять персональный VPN

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Как поднять свой VPN?


Зачем я вообще решил сделать свой VPN? 1. Я хочу быть уверен, что никто не пишет логи и не знает куда и что я отправил. 2. Я могу пользоваться ВПН без ограничений на количество устройств, скорости и объема траффика. 3. Если скинуться группой, то выйдет дешевле.

Что же, приступим к запуску персонального VPN. Расскажу как это делал я:


Для начала нам нужен какой-нибудь хостинг с локацией, которую мы хотим. Например, можно купить сервер на aeza.net. Берем виртуальную машину на Ubuntu.
Дальше нам нужно зайти на эту машину и настроить ее. Обычно на хостингах нам будет дан ip сервера и пароль от root. Заходим по ssh


ssh root@<ip>

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


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


useradd -G root -m diphantxm -s /bin/bash

Запретим вход на машину под рутом, разрешим аутентификацию по публичному ключу и запретим вход по паролю:


sed -i "s/PermitRootLogin yes/PermitRootLogin no/g" /etc/ssh/sshd_config
sed -i "s/PubkeyAuthentication no/PubkeyAuthentication yes/g" /etc/ssh/sshd_config
sed -i "s/PasswordAuthentication yes/PasswordAuthentication no/g" /etc/ssh/sshd_config

Настроим фаервольные правила. По умолчанию запретим весь входящий траффик, откроем порт для подключения по ssh и порт 443 для нашего приложения.


ufw default deny incoming
ufw default allow outgoing
ufw allow OpenSSH
ufw allow 22
ufw allow 443
ufw enable
ufw reload

Дальше нам нужен инструмент, который будет роутить наш траффик. Самые популярные из них это v2ray или xray, поэтому будем использовать их. Скачиваем:


wget https://github.com/XTLS/Xray-core/releases/download/v25.3.6/Xray-linux-64.zip
unzip Xray-linux-64.zip
chmod +x xray
mv xray /usr/bin/xray

Теперь для удобства создадим systemd сервис. Для этого можно просто скопировать файл сервиса и положить его в /lib/systemd/system/xray.service


echo "[Unit]
Description=XRay Service
After=network.target nss-lookup.target

[Service]
User=root
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
NoNewPrivileges=true
ExecStart=/usr/bin/xray run -config /etc/xray/config.json
Restart=on-failure
RestartPreventExitStatus=23

[Install]
WantedBy=multi-user.target"

Вместо TLS будем использовать Reality, это так же безопасно, но не требует сертификатов. Поэтому сгенерируем приватный и публичный ключи, сделать это можно при помощи самого Xray:


xray x25519

Приватный ключ нужен для настройки нашей тулзы, а публичный понадобится для подключения клиентам до нашего сервера.


Для правильной работы Xray напишем конфиг. Тут мы должны указать какие клиенты могут к нам подключиться, по какому порту, куда и как их роутить и прочее. Ниже минимальный конфиг для начала работы. В нем нужно указать id клиента в формате uuid v4 и только клиенты с этим id смогут подключаться к нашему прокси.


{
    "inbounds": [
        {
            "tag": "input",
            "port": 443,
            "listen": "0.0.0.0",
            "protocol": "vless",
            "settings": {
                "clients": [
                    {
                        "id": "<СЮДА ВСТАВЛЯЕМ ЛЮБУЮ СТРОКУ ВИДУ xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx>"
                    }
                ],
                "decryption": "none"
            },
            "streamSettings": {
                "network": "tcp",
                "security": "reality",
                "realitySettings": {
                    "show": false,
                    "dest": "github.com:443",
                    "privateKey": "<СЮДА ВСТАВЛЯЕМ НАШ ПРИВАТНЫЙ КЛЮЧ>",
                    "serverNames": ["github.com"],
                    "shortIds": [""],
                    "type": "tcp"
                }
            }
        }
    ],
    "outbounds": [
        {
            "protocol": "freedom",
            "tag": "direct",
            "settings": {
                "domainStrategy": "UseIP"
            }
        },
        {
            "protocol": "blackhole",
            "tag": "block"
        }
    ]
}

Запускаем Xray:


systemctl start xray.service

Наша прокся слушает порт 443, теперь нужно к нему подключиться.


Подключиться к нему можно с любого устройства, но нужны специальные приложения:
На Android/IOS: V2Box
На Windows: V2rayN


Разберем на примере IOS:
Приложение будет выглядеть следующим образом:


image


Мы являемся клиентом нашего прокси сервера, поэтому нам нужно написать еще один конфиг, теперь для клиентской части. В приложении нужно нажать на + и выбрать "Add manual config", в выпавшем списке выбираем наш транспортный протокол "VLESS". Заполняем его, пример моего конфига есть ниже:


image image

Вуаля, наш ВПН готов, можно пользоваться :)
Надеюсь моя статья была хоть немного полезна тем, кому это могло быть интересным!


image


Ну а если вам лень всем этим заниматься, то можно попробовать мой VPN через бота в тг: DipVPN

Источник: https://habr.com/ru/articles/898154/


Интересные статьи

Интересные статьи

В нашей предыдущей статье мы обсудили методы тестирования платформы электромобиля без серийного кузова. В этом материале мы сосредоточимся на ключевом аспекте разработки — создании и тестировании кузо...
Как ускорить 1С БИТРИКС и снизить кол-во запросов к БД используя ядро D7.Пример выборки элементов IBlock с пользовательскими свойствами в один запрос.
Всем привет, меня зовут Миша Хананашвили, я автор канала UXHorn и работаю исследователем в Сбере. Перевести статью ребят из NN-Group сподвигла потребность дать простую и понятную инстр...
Но если для интернет-магазина, разработанного 3–4 года назад «современные» ошибки вполне простительны потому что перед разработчиками «в те далекие времена» не стояло таких задач, то в магазинах, сдел...
Эта публикация написана после неоднократных обращений как клиентов, так и (к горести моей) партнеров. Темы обращений были разные, но причиной в итоге оказывался один и тот же сценарий, реализу...