Собственный VPN сервер за границей

Всем привет!!!

В этот раз я расскажу как сделать собственный VPN сервер за границей. Где я взял дешевый сервер за 109 рублей в месяц. А так же подробно как защитить этот сервер от атак из интернета.

Регистрируйтесь по ссылке и получите бонус 15% к пополнению баланса, который будет действовать 24 часа.

Введение

До 2022 года я не пользовался VPN серверами и они мне были не нужны. Ни один из заблокированных сайтов в РФ мне был не нужен. Но в 2023 году ситуация поменялась. Теперь не мы запрещаем доступ, а нам запрещают доступ. Целый ряд мелких и средних, а так же несколько больших корпораций закрыли доступ к своим ресурсам для Российского сегмента интернета. Решить эту задачу можно используя VPN за границей.

Можно взять услугу VPN, таких сервисов сейчас много. Но вот незадача, они с 99% долей вероятности сливают ваши данные заграничным спецслужбам. А те уже и другим неблагоприятным отморозкам. Это нужно для совершения атак на вас. Взлома пароля, аккаунта или просто подсовывания вам информации, которая настроит вас против своей страны. Поэтому нужен именно свой VPN, неподконтрольный никому.

Для решения этой задачи нужно воспользоваться распространенной услугой VPS (Virtual Private Server). Т.е. вы берете виртуальную машину с сервером Linux (так и дешевле чем на Windows и работает стабильнее) расположенном за границей и с белым статичным IP адресом какой-то страны, главное не из Российского сегмента. А многие такие компании располагая серверами за границей (я испробовал наверно 20-30 таких) выдают IP адреса из Российского сегмента и считают это нормальным.

Но это не нормально и это полностью делает такой VPN и VPS бессмысленным.

Так же еще одним критерием выбора хостинга является оплата Российскими картами, так как все зарубежные хостеры такого не позволяют.

Я нашел одного хостера, который за очень дешево от 99 рублей в месяц предоставляет услугу VPS в Германии и выдает IP адреса Люксембурга. Это хостинг Аéза. Это реферальная ссылка, которая поддержит мое творчество, переходите, пожалуйста, по ней. Если перейдете по моей ссылке, то получите бонус 15% к пополнению баланса, который будет действовать 24 часа.

Тарифы на хостинге на момент написания статьи такие:

Регистрируйтесь по ссылке и получите бонус 15% к пополнению баланса, который будет действовать 24 часа.

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

Тариф за 109 рублей в месяц отлично подойдет для VPN сервера для семьи или небольшой группы людей. Но есть в нем ограничение в 100Мб\с. Если нужна скорость выше до 1Гб\с то нужно брать тариф по дороже. Впрочем, 391 рублей в месяц тоже совсем не дорого для услуги VPN с безлимитным трафиком. Скидки при оплате за длительный период.

Поэтому преходите по ссылке, регистрируйтесь, выбирайте тариф, а я покажу как же настроить этот самый VPN на хостинге VPS.

Подключение

Я рекомендую при покупке VPS выбрать операционную систему Ubuntu 22.04 или новее, в зависимости от времени, когда вы читаете эту статью и все действия я буду показывать именно в этой ОС,

Когда вы приобретёте и оплатите услугу в панели управления хостингом, в активных услугах можно увидеть такое окно:

Тут отображается IP адрес, логин и пароль.

Для подключения к серверу по SSH нужно открыть:

  • PowerShell – если у вас Windows 10 и новее
  • Терминал – если у вас MacOS или linux
  • Скачать Putty – если у вас другая Windows подобная ОС

В этой утилите ввести комнду:

ssh root@IP-адрес

Исключение только Putty, в нем нужно вводить только IP-адрес взятый с панели управления на картинке выше.

Затем система попросит ввести пароль, его тоже нужно взять в панели управления как на картинке выше.

Напомню, что при вводе пароля этого самого ввода не видно, вы просто вводите пароль и нажимаете интер. В Putty вставка из буфера обмена по умолчанию правая кнопка мышки.

Так же при первом подключении нужно система попросит подтвердить и сохранить открытый ключ, соглашайтесь введя yes. В дальнейшем такого вопроса не будет.

Все, вы попали на свой только что купленный VPS сервер для VPN

Демонстрации, логин и IP адрес у вас будут другие

Если в будущем не будет подключаться из-за ошибки корректности ключа

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ED25519 key sent by the remote host is
SHA256:huHJw3Je35sBKdW9IFdBmj+qNqAnGn8+Y3der/ZhiyA.
Please contact your system administrator.
Add correct host key in C:\\Users\\alexandrlinux/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in C:\\Users\\alexandrlinux/.ssh/known_hosts:15
Host key for 185.149.146.205 has changed and you have requested strict checking.
Host key verification failed.

А это сам скриншот:

То нужно удалить ключ из файла known_host такой командой, как показано на картинке выше

ssh-keygen -R host

Где host это IP адрес или доменное имя

Первоначальная настройка

Первым делом вводим такие команды

apt update
apt upgrade
apt install dialog tasksel ntpdate net-tools
tasksel --new-install

На все вопросы отвечаем yes а на последний делаем так:

Убираем все лишние галочки пробелом и устанавливаем только последние две. Это нужно для установки всех необходимых утилит на сервер, так как изначально хостеры используют очень минималистическую сборку ОС.

После этого нужно перегрузить сервер командой reboot и через 1-2 минуты снова подключиться к нему по SSH

Настройка WireGuard скриптом

WireGuard это VPN сервер(служба), которая получила большую популярность в последнее время. Поэтому начну с нее, тем более, что метод, который я покажу будет очень простым. А клиенты для WireGuard есть для всех устройств и ОС.

Для установки и настройки сервера WireGuard воспользуемся готовым скриптом с GitHub и введем такие команды:

curl -O https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh
chmod +x wireguard-install.sh
./wireguard-install.sh

Первая команда скачает скрипт установки на сервер в ту папку, в которой вы находитесь. Вторая сделает скрипт исполняемым, а третья запустит скрипт и выйдет такое окно.

Первым делом нужно указать белый статичный адрес вашего VPS. В моем случаи это виртуалка на Synology VMM, но как правило скрипт отлично сам подставляет правильные данные, вам нужно только проверить. В целом на все вопросы можно нажать интер или подправить, например я бы не использовал DNS сервер 1.1.1.1 а использовал какой-то другой, но и с этим все будет работать хорошо.

После этого начнется скачивание и развертывание WireGuard на вашем VPS и в конце нужно придумать логин новому пользователю WireGuard, указать ему его IP адрес, можно оставить предложенные системой и скрипт выдаст QR код для телефона и путь до настроек этого пользователя

В моем случаи путь настроек пользователя такой: /home/sbaf/wg0-client-user1.conf но у вас он будет отличаться

Для просмотра настройки пользователя введите такую команду cat /home/sbaf/wg0-client-user1.conf

Как видите все достаточно просто.

Однако, некоторые клиенты, например на MacOS или Mikrotic, с такой конфигурацией работать будут нестабильно. Поэтому хорошей идеей будет добавить в секции Peer в конец PersistentKeepalive равным скажем 5. Тогда и стабильно работать будет и при обрывах связи соединение так же будет разрываться через 5 секунд, что положительно скажется на работе интернета на устройстве клиента.

PersistentKeepalive = 5

Теперь, если вам нужно добавить, удалить или посмотреть какие пользователи созданы, то достаточно снова запустить скрипт установки командой ./wireguard-install.sh 

Скрипт предложит варианты, а вам нужно просто выбрать нужный. Очень удобно.

На этом сервер WireGuard настроен и можно подключаться к нему имея все необходимые данные для подключения.


В MacOS клиент Wireguard глючит. Бывает он подключается, но интернет пропадает, а в логах MacOS при этом сыпит следующее:

2023-05-13 16:20:44.155 [NET] Routine: handshake worker 1 - stopped
2023-05-13 16:20:44.155 [NET] Routine: handshake worker 5 - stopped
2023-05-13 16:20:44.157 [NET] Routine: handshake worker 7 - stopped
2023-05-13 16:20:44.157 [NET] Routine: encryption worker 8 - stopped
2023-05-13 16:20:44.157 [NET] Routine: encryption worker 3 - stopped

Для решения этой проблемы в MacOS нужно отключить WIFI и через 5-10 секунд включить. Если используется проводное соединение, то отключить и включить его.

Настройка OpenVPN скриптом

OpenVPN – это свободно распространяемый протокол с открытым исходным кодом, который полюбился миллионам пользователей по всему миру и стал применяться практически на любом виде сетевых устройств.

Для установки и настройки сервера OpenVPN воспользуемся готовым скриптом с GitHub и введем такие команды:

curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh
chmod +x openvpn-install.sh
./openvpn-install.sh

Первая команда скачает скрипт установки на сервер в ту папку, в которой вы находитесь. Вторая сделает скрипт исполняемым, а третья запустит скрипт и выйдет такое окно.

  1. Введите IP адрес вашего сервера. Обычно скрипт находит его сам. Это белый адрес VPS
  2. Доменное имя или IP адрес, через который клиенты будут подключаться к серверу
  3. Поддержку IPv6 включать не обязательно (обычно)
  4. Порт, на котором будет работать OpenVPN сервер. Лучше заменить не не стандартный
  5. Рекомендуется использовать UDP протокол
  6. Можно выбрать DNS сервера из списка, адгуард по умолчанию хороший выбор
  7. Включать сжатие не рекомендуется, но если у вас медленный интернет, то можно включить. Будет действовать для всех клиентов.
  8. Лучше не менять шифрование по умолчанию
  9. Нажать любую кнопку для завершения настройки

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

  1. Имя пользователя
  2. Можно зашифровать файл с ключами для пользователя паролем. Не все клиенты это поддерживают, поэтому я выбрал 1

Сам файл настроек OVPN лежит в директории пользователя. Я выделил на картинке выше где он лежит в моем случаи. Этот файл можно скачать или скопировать его содержимое и вставить в текстовый файл, который потом сохранить с любым именем, но обязательно с расширением .ovpn

Просмотреть файл можно командой cat вот так:

root@vds:~# cat /home/sbaf/user1.ovpn
client
proto udp
explicit-exit-notify
remote vds.domen.ru 1194
dev tun
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
verify-x509-name server_eGGuvsq4ftvTKnbs name
auth SHA256
auth-nocache
cipher AES-128-GCM
tls-client
tls-version-min 1.2
tls-cipher TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256
ignore-unknown-option block-outside-dns
setenv opt block-outside-dns # Prevent Windows 10 DNS leak
verb 3
...

Если снова запустить скрипт, то он предложит создать нового пользователя, удалить существующего пользователя или удалить полность OpenVPN сервер с конфигурацией.

На этом сервер OpenVPN настроен и можно подключаться к нему имея все необходимые данные для подключения.

Настройка IKEv2 скриптом

IKEv2 – это новый протокол разработанный Microsoft и Cisco для безопасного и надежного VPN подключения. Этот протокол используется на всех современных платформах. К примеру в Android 13 будет только этот протокол встроен в систему.

Про IKEv2 есть отличная статья на хабрhttps://habr.com/ru/companies/ruvds/articles/498924/е.

Для установки и настройки сервера IKEv2 воспользуемся готовым скриптом с GitHub и введем такие команды:

wget https://raw.githubusercontent.com/jawj/IKEv2-setup/master/setup.sh
chmod u+x setup.sh
./setup.sh

Принцип этого скрипта такой же как и у других выше, но есть особенности. Так например протоколу IKEv2 обязательно нужен домен для привязки сертификата. Поэтому обзаведетесь таким предварительно.

Так же этот скрипт не поддерживает создание и удаление пользователей. Но их можно править в файле самостоятельно

sudo nano /etc/ipsec.secrets

Чтобы выйти из nano, это Ctrl + O, затем Ctrl + X для применения изменений введите команду:

sudo ipsec secrets

На этом сервер IKEv2 настроен и можно подключаться к нему имея все необходимые данные для подключения.

SoftEther VPN настройка L2TP и OpenVPN

Для настройки протоколов L2TP и OpenVPN я буду использовать SoftEther VPN. Это сервер и клиент с открытым исходным кодом поддерживающий все необходимые для VPN протоколы

Если вы захотите использовать это решение, то вам нужно удалить OpenVPN сервер и IKEv2, который был установлен скриптом выше.

Устанавливается он на сервер одной командой

apt install softether-vpnserver

А дальше его нужно настроить и этом можно сделать двумя способами: через командную строку или через специальное приложение для Windows называется SoftEther VPN Server Manager for Windows, которое можно скачать с официального сайта. Для других ОС к сожалению такой утилиты нет или она так сильно устарело, что не работает.

ВО время установки нужно выбрать только SoftEther VPN Server Manager (Admin Tools Only) что бы не разворачивать сервер у себя на ПК, а установить только средство администрирования.

При первом запуски нужно создать новую сессию кнопкой New Setting

В открывшемся окне придумать имя сессии и ввести белый статичный IP адрес вашего сервера, который выдал хостер. Можно так же заменить порт на 5555 из списка портов. Пригодится на будущее.

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

Так же при первом подключении нужно пройти процедуру первоначальной настройки. Установите галочку как на картинке ниже или выберите свой вариант. Это можно потом поменять.

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

В SoftEther VPN есть своя служба DDNS, придумайте имя или используйте по умолчанию, потом это можно отключить.

Теперь включите протокол L2TP\IpSec, придумайте пароль для общего ключа на английском языке и запомните его.

Службу VPN Azure Cloud я предлагаю отключить. Она нужна, когда сервер находится за NAT или фаерволом. В нашем же случаи у нас белый статичный IP адрес на VPS хостенге.

Теперь пришло время создать первого пользователя

  1. Придумайте логин
  2. Добавьте описание, что бы не забыть кто это
  3. Придумайте сложный пароль
  4. Повторите сложный пароль
  5. Нажмите ОК для создания пользователя

В дальнейшем для управления пользователями проследуйте цифрам как на картинке ниже

Так же нужно включить NAT и DHCP в самом SothEther VPN, что бы не делать это в Linux. Для этого откройте SecureNAT где обведено на картинке выше

В открывшемся окне сначала настроим SecureNAT

В настройках можно поменять сеть, но это не обязательно. Но обязательно нужно сменить DNS сервера. Можно выбрать как у меня на картинке ниже или любые другие. Например, тут есть их список

Применяем изменения и включаем SecureNAT как показано на одной из картинок выше.

Теперь осталось выполнить еще одну очень важную настройку. Так как мы установили сервер на VPS, а не внутри локальной сети, то нужно включить NAT на уровне ядра системы как показано на картинке ниже. DisableKernelModeSecureNAT должен быть равен 1.

На этом SofthEther VPN настроен и готов к работе. Можно подключаться по L2TP на Windows, Mac, Android и IPhone. Для подключения по протоколу OpenVPN нужен файл конфигурации с ключами. Для его генерации откройте настройки OpenVPN\MS-SSTP Settings и нажмите кнопку сгенерировать конфигурацию OpenVPN как показано на картинке ниже

Когда скачаете и распакуете архив с конфигурацией, вам нужен будет только один файл vds_openvpn_remote_access_l3.ovpn. Откройте его текстовым редактором, найдите строчку начинающуюся с remote и замените при необходимости на белый статичный IP адрес вашего VPS, который дал вам хостер. Только этот файл нужен для подключения к вашему VPN по протоколу OpenVPN. Правда еще нужен логин и пароль, который создавали в SoftEther VPN ранее.

Проверка скорости интернета на VPS

Для проверки скорости на VPS сервере можно воспользоваться такими командами:

wget -O /dev/null https://speedtest.selectel.ru/100MB
wget -O /dev/null https://speed.hetzner.de/100MB.bin

Первая проверит скорость до российского сегмента интернета, а вторая до заграничного в Германии.

Учтите, что скорость будет в Мега Байтах и что бы получить Мега биты нужно Мега Байты умножить на 8. Это курс информатики в школе.

А вот скорость, которую показывает телефон через VPN с протоколом Wireguard. Считаю результат очень хороший.

Дополнительно

Так как на VPS обычно мало оперативной памяти, то я рекомендую создать файл подкачки на 1 гигабайт, что бы обезопасить сервер от зависания при нехватке памяти.

fallocate -l 1G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
free -m

Затем прописать это в файл fstab для применения после перезагрузки

nano /etc/fstab
/swapfile none swap sw 0 0

Для установки важных обновлений безопасности в автоматическом режиме рекомендую сделать так

dpkg-reconfigure -plow unattended-upgrades

nano /etc/apt/apt.conf.d/50unattended-upgrades

Затем вставить в файл конфигурации 50unattended-upgrades следующее

Unattended-Upgrade::Mail "ваша почта яндекс";
Unattended-Upgrade::MailReport "on-change";
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "now";

Не на яндекс почту доставляться не будет, пока не будут сделаны нужные изменения в postfix. Эти параметры в данной статье затронуты не будут.

По умолчанию в Ubuntu Server применяется альтернативный iptables, рекомендую вернуть обычный командой

 update-alternatives --all

На все вопросы отвечайте по умолчанию, только в одном пункте установите ответ 1 как показано ниже

Press <enter> to keep the current choice[*], or type selection number: 
There are 2 choices for the alternative iptables (providing /usr/sbin/iptables).

  Selection    Path                       Priority   Status
------------------------------------------------------------
* 0            /usr/sbin/iptables-nft      20        auto mode
  1            /usr/sbin/iptables-legacy   10        manual mode
  2            /usr/sbin/iptables-nft      20        manual mode

Press <enter> to keep the current choice[*], or type selection number: 1

Защита от подбора паролей

Боюсь если я буду так же подробно описывать этот момент, то статья станет очень большой. Поэтому этот пункт будет только в видео ролике. А так же на видео настройка фаервола, изменение порта SSH и забота о дисковом пространстве.

Видео ролик

Канал Дзен

Группа ВКонтакте

Канал YouTube

Канал Rutube

Тайм коды:

  1. 00:00 – Что в этом видео ролике
  2. 01:12 – Кратко о хостинге Аéза
  3. 02:54 – Статья на сайте
  4. 03:36 – Подключаемся по SSH
  5. 06:50 – Первоначальная настройка
  6. 10:44 – Настройка WireGuard скриптом
  7. 15:28 – Другие протоколы VPN (OpenVPN IKEv2 L2TP)
  8. 17:24 – Проверка скорости интернета на VPS
  9. 19:00 – Дополнительные настройки
  10. 24:23 – Установка Webmin
  11. 26:40 – Защита от подбора паролей
  12. 27:18 – Изменение порта ssh
  13. 30:29 – Настройка фаервола
  14. 32:12 – Занятые ресурсы
  15. 33:03 – Синхронизация времени
  16. 34:15 – Как подключать клиентов
  17. 34:47 – Заключение

Занятые ресурсы

Так как у меня тариф за 109 рублей и количество ресурсов там сильно ограничено: 1 ядро процессора, 1 гигабайт оперативной памяти и 10 гигабайт диска, то интересно посмотреть сколько будет занято когда я все установлю, настрою и буду использовать.

Сейчас у меня 3 активных пользователя VPN и еще 5 созданы, но пользуются им периодически, не постоянно. Всего получается 8 пользователей. При этом ресурсов на VPS сервер достаточно, что бы он работал корректно.

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

Оперативная память: Из 1 гигабайта памяти использовано 315 мегабайт. Это 33% от общего объема.

Диск: Диск тут самое узкое место. У меня занялось более 6 гигабайт. Это 62% от общего объема в 10 гигабайт. Запас еще есть и его хватит еще на долго. В основном заниматься будет пространство различными логами. Стандартные логи будут сами себя чистить, а вот другие придется чистить вручную. Для этого я подготовил статью “Как удалить старые файлы логов в Linux” но не торопитесь ее исполнять. Подождите, возможно вам это и не нужно будет. Гляньте через пол года или год.

Как подключиться к VPN

Я конечно могу расписать как подключиться к VPN с различных ОС и устройств, но это явно будет лишним, так как этой информации в интернете уже и так слишком много. Рекомендую справку Keenetic, где все подробно по каждой платформе расписано. Вам нужно только учесть, что у вас не Keenetic, а собственный VPN на VPS и сделать соответствующие правки.

Итог

Как итог вы получите полноценный VPN сервер для обхода блокировок со стороны недружественных стран и сервисов да еще и за очень скромную плату. Причем проделать эту инструкцию можно на любом VPS у любого хостера. Я предложил Аéза, как самый дешевый из тех что дает реальные IP адреса иностранного сегмента интернета.

А если вы искали анонимный VPN сервер, то хочу вас разочаровать, что этот не такой, так как вы всегда будите выходить по одному статическому IP адресу и соответственно иностранные спецслужбы легко вас найдут. А прятаться нужно именно от них, свои вам ничего плохого не сделают, если вы не нарушаете закон Российской Федерации.

Регистрируйтесь по ссылке и получите бонус 15% к пополнению баланса, который будет действовать 24 часа.

Канал Телеграм Канал Дзенс Группа ВКонтакте Канал YouTube Канал Rutube

Подписаться
Уведомить о
guest
16 Комментарий
Старые
Новые
Межтекстовые Отзывы
Посмотреть все комментарии