Как сделать и настроить собственный VPN, этот способ явно лучше чем goodbyedpi

В статье рассмотрим четыре способа создания собственного VPN. Начнем с самого простого варианта, что под силу даже начинающим пользователям ПК. В моем тг канале больше способов ускорения ютуба в закрепе, а так же много крутых сервисов и нейросетей и о том как их использовать!

Как сделать и настроить собственный VPN, этот способ явно лучше чем goodbyedpi

Подготовка

Для всех четырех способов нам понадобиться виртуальный сервер (VPS). Будет достаточно конфигурации с 1 vCPU и 1GB RAM. В качестве операционной системы для установки возьмем последний Ubuntu 24.04 или Debian 12.

Способ 1. Amnezia

Самый простой и быстрый вариант настройки VPN самому. Достаточно просто установить программу-клиент Amnezia на компьютер или телефон. При первом запуске она подключится к серверу и настроит всё необходимое программное обеспечение.

Подробная инструкция есть здесь.

VPN-клиент Amnezia доступен для всех популярных десктопных и мобильных операционных систем, он полностью бесплатен и является программным обеспечением с открытым исходным кодом (GitHub).

Стоит отметить, что кроме поддержки привычных OpenVPN, WireGuard, IPsec и др. протоколов, в Amnezia есть собственный защищенный протокол AmneziaWG.

Способ 2. Виртуальный сервер с предустановленным VPN

Некоторые хостеры при заказе сервера сразу предлагают установить на нем VPN с удобным веб-интерфейсом (UI) для управления пользователями.

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

Затем этот файл достаточно загрузить или импортировать в любой VPN-клиент с поддержкой нужного протокола, в таблице ниже – наиболее популярные варианты:

перед установкой альтернативной прошивки проверяйте совместимость и наличие VPN клиента на сайте разработчика прошивки
перед установкой альтернативной прошивки проверяйте совместимость и наличие VPN клиента на сайте разработчика прошивки

Способ 3. Готовый скрипт

На GitHub есть готовые универсальные скрипты для полуавтоматической настройки VPN. Мастер установки задаст несколько вопросов, настроит всё сам и создаст пользовательский файл конфигурации для подключения к VPN.

Один из наиболее популярных скриптов – для OpenVPN, и также для WireGuard.

Способ 4. Сделать VPN самому

Самый трудоемкий вариант, где будем настраивать VPN на сервере с Ubuntu 24.04 сами. Из протоколов выберем проверенный временем OpenVPN, поддержка которого заявлена в большинстве современных роутеров.

Подключаемся к VPS как root, создаем нового пользователя и добавляем его в sudo:

adduser user usermod -aG sudo user

Затем входим на сервер как user и выполняем все дальнейшие команды от его имени.

Обновим списки пакетов и установим OpenVPN и Easy-RSA (для управления сертификатами в инфраструктуре открытых ключей):

sudo apt update -y sudo apt install openvpn easy-rsa -y

В папке нашего пользователя создаем директорию с символической ссылкой и нужными правами:

mkdir ~/easy-rsa ln -s /usr/share/easy-rsa/* ~/easy-rsa/ chmod 700 ~/easy-rsa

Создаем конфигурационный файл для Easy-RSA и инициализируем инфраструктуру открытых ключей (PKI):

cd ~/easy-rsa echo -e 'set_var EASYRSA_ALGO ec\nset_var EASYRSA_DIGEST sha512' > vars ./easyrsa init-pki

Сгенерируем ключи удостоверяющего центра:

./easyrsa build-ca nopass

Система запросит ввести универсальное имя, здесь можно просто нажать Enter.

Выпустим и подпишем пару "ключ-сертификат" для сервера:

./easyrsa gen-req server nopass ./easyrsa sign-req server server

При выполнении первой команды вас попросят указать Common Name, здесь просто нажмите Enter. Для второй команды запрос нужно подтвердить, введя yes.

Скопируем созданные файлы в каталог OpenVPN:

sudo cp ~/easy-rsa/pki/private/server.key /etc/openvpn/server sudo cp ~/easy-rsa/pki/issued/server.crt /etc/openvpn/server sudo cp ~/easy-rsa/pki/ca.crt /etc/openvpn/server

Для дополнительной защиты, создадим предварительный общий ключ (PSK), который будет использоваться с директивой tls-crypt:

sudo openvpn --genkey secret /etc/openvpn/server/ta.key

Выпустим и подпишем пару "ключ-сертификат" для клиента client1:

./easyrsa gen-req client1 nopass ./easyrsa sign-req client client1

В первой команде на требование указать Common Name нажмите Enter, при выполнении второй команды подтвердите запрос вводом yes.

Создадим директорию для клиентских конфигов, скопируем туда нужные файлы и установим для них соответствующие права:

mkdir ~/openvpn-clients chmod -R 700 ~/openvpn-clients cp ~/easy-rsa/pki/private/client1.key ~/openvpn-clients/ cp ~/easy-rsa/pki/issued/client1.crt ~/openvpn-clients/ sudo cp /etc/openvpn/server/{ca.crt,ta.key} ~/openvpn-clients/ sudo chown user ~/openvpn-clients/*

Настроим конфиг OpenVPN на основе дефолтного примера. Для этого скопируем шаблонный файл server.conf в рабочую директорию:

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/server/

C помощью любого текстового редактора открываем файл server.conf для редактирования:

sudo vim /etc/openvpn/server/server.conf

этом файле нужно внести следующие изменения:

  • заменить dh dh2048.pem на dh none
  • раскомментировать строку push "redirect-gateway def1 bypass-dhcp"
  • раскомментировать две строки с DNS серверами:push "dhcp-option DNS 208.67.222.222"push "dhcp-option DNS 208.67.220.220"По умолчанию здесь указаны адреса публичных DNS серверов от OpenDNS. Рекомендую сразу их заменить на DNS сервера от CloudFlare (1.1.1.1, 1.0.0.1) или Google (8.8.8.8 и 8.8.4.4)
  • заменить tls-auth ta.key 0 на tls-crypt ta.key
  • заменить cipher AES-256-CBC на cipher AES-256-GCM и после этой строки добавить еще одну новую – auth SHA256
  • добавить в конце файла две строки:user nobodygroup nogroup

Чтобы включить переадресацию пакетов, раскомментируем (вручную или с помощью утилиты sed) строку net.ipv4.ip_forward=1 в файле /etc/sysctl.conf и применим изменения:

sudo sed -i '/net.ipv4.ip_forward=1/s/^#//g' /etc/sysctl.conf sudo sysctl -p

Теперь нужно настроить форвардинг и маскарадинг в iptables, но для этого сначала посмотрим имя публичного сетевого интерфейса на сервере:

ip route list default

Пример результата выполнения команды показан ниже, в нем имя нужного нам интерфейса отображается сразу после "dev" :

default via 123.45.67.8 dev ens3 proto static onlink

Здесь интерфейс называется ens3, в вашем случае он может быть другой.

Разрешаем переадресацию и включаем маскарадинг в iptables. При необходимости имя интерфейса (ens3) в трех местах замените на нужное:

sudo apt install iptables-persistent -y sudo iptables -A INPUT -i tun+ -j ACCEPT sudo iptables -A FORWARD -i tun+ -j ACCEPT sudo iptables -A FORWARD -i ens3 -o tun+ -j ACCEPT sudo iptables -A FORWARD -i tun+ -o ens3 -j ACCEPT sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/8 -o ens3 -j MASQUERADE sudo netfilter-persistent save

Добавляем сервис OpenVPN в автозагрузку и запускаем его:

sudo systemctl enable openvpn-server@server.service sudo systemctl start openvpn-server@server.service

Проверить, запущен ли VPN можно командой:

sudo systemctl status openvpn-server@server.service

Нам осталось создать файл конфигурации .ovpn, который клиент будет использовать для подключения к VPN.

Файл .ovpn должен содержать базовые параметры, сертификаты и ключи. Чтобы не объединять это всё вручную, напишем небольшой BASH-скрипт:

#!/bin/bash # Формат использования: create_client_config.sh <clientname> # Перед использованием в SERVER_IP вместо X.X.X.X необходимо указать IP адрес вашего сервера SERVER_IP=X.X.X.X DIR=~/openvpn-clients cat <(echo -e \ "# Client OpenVPN config file"\ "\nclient" \ "\ndev tun" \ "\nproto udp" \ "\nremote $SERVER_IP 1194" \ "\nresolv-retry infinite" \ "\nnobind" \ "\nuser nobody" \ "\ngroup nogroup" \ "\npersist-key" \ "\npersist-tun" \ "\nremote-cert-tls server" \ "\nkey-direction 1" \ "\ncipher AES-256-GCM" \ "\nauth SHA256" \ "\nverb 3" \ ) \ <(echo -e "\n<ca>") \ ${DIR}/ca.crt \ <(echo -e "</ca>\n\n<cert>") \ ${DIR}/${1}.crt \ <(echo -e "</cert>\n\n<key>") \ ${DIR}/${1}.key \ <(echo -e "</key>\n\n<tls-crypt>") \ ${DIR}/ta.key \ <(echo -e "</tls-crypt>") \ > ${DIR}/${1}.ovpn

В скрипте вместо X.X.X.X впишите IP адрес вашего сервера, поместите файл в любую директорию и установите исполняемые права:

chmod +x create_client_config.sh

Создаем .ovpn файл для client1:

./create_client_config.sh client1

Готово! В папке ~/openvpn-clients появился client1.ovpn. Скачайте его и просто импортируйте в любой OpenVPN-клиент или на роутер с поддержкой этой функции.

В моем тг канале больше способов ускорения ютуба в закрепе, а так же много крутых сервисов и нейросетей и о том как их использовать!

44
Начать дискуссию