Собственный VPN-сервер за 10 минут

Lord777

Professional
Messages
2,583
Reputation
15
Reaction score
1,296
Points
113
5f8c00009ede785fe7b91.jpg


Есть много причин использовать VPN: от классической задачи объединения нескольких удаленных сегментов локальной сети в одну виртуальную частную сеть или повышения собственной приватности в сети до получения доступа к заблокированным ресурсам.

В этой статье я не буду рассматривать вопрос зачем вообще нужен VPN, а просто расскажу как буквально за 10-15 минут поднять приватный VPN-сервер в Нидерландах с минимальными денежными затратами.

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

Для создания VPN-сервера нам потребуется:

VPS в одном из европейских дата-центров. Из характеристик смотрим только на доступную ширину канала (желательно, чтобы она была не меньше скорости вашего домашнего интернета) и стоимость аренды в месяц. Количество ядер, объем оперативной памяти, емкость дискового хранилища и его производительность — все эти параметры VPS важны для веб-сервера, но совершенно не существенны для организации VPN-сервиса. Нам нужен только европейский IP-адрес, нормальная ширина интернет-канала и низкая стоимость аренды.

Минимальные навыки работы в консоли по SSH. Думаю, что для читателей моего блога это не составит проблемы, но если что — отсылаю к своей старой статье про удаленный доступ по SSH на примере Raspberry Pi, самые азы изложены в ней.

Наш приватный VPN-сервер будет поддерживать соединения по протоколам IPSec, L2TP over IPSec и IKEv2.

Почему не публичный VPN-сервис?​


У публичных VPN есть несколько недостатков:
  1. Роскомнадзор с переменным успехом ведет с ними борьбу. Например, популярный сервис Cloudflare WARP с некоторых пор перестал работать в России, а возможность использования Opera VPN в России и Беларуси год назад ограничили сами разработчики после получения предупреждений о блокировке сервиса со стороны сотрудников ведомства.
  2. Публичные VPN-сервисы собирают о вас информацию. Несмотря на то, что каждый VPN указывает приватность и конфиденциальность в качестве своих достоинств, было бы очень наивно предполагать, что они не ведут логи, не анализируют пользовательскую активность и не продают в дальнейшем эти данные третьим лицам.
  3. Публичные VPN-сервисы могут быть забанены на стороне отдельных сайтов. То же самое касается и exit-node сети Tor.
  4. Публичные VPN-сервисы могут резать скорость. А если речь идет о бесплатных тарифах, то скорость обязательно будет ограничиваться. Для веб-серфинга их использовать еще можно, но если, например, в будущем у нас заблокируют YouTube, то смотреть его через публичный VPN может оказаться уже проблематично.
Несмотря на все это, пользоваться публичными VPN вполне можно. Я и сам время от времени пользуюсь сервисом Windscribe. Но создание собственного приватного VPN обеспечит более высокий уровень удобства, позволит не зависеть от действий Роскомнадзора и даст дополнительные возможности в перспективе. Например, его можно использовать для удаленного доступа к Home Assistant или своему домашнему серверу.

Почему не OpenVPN / WireGuard / Outline VPN?​

Почему я предлагаю делать VPN на базе протоколов IPSec и IKEv2, а не на OpenVPN и не на набирающих популярность WireGuard или Outline?

Потому что IPSec и IKEv2 поддерживаются всеми современными устройствами на уровне системы, обладают достаточно высокой производительностью, просты в настройке и не требуют установки никакого дополнительного ПО. В то время как OpenVPN, WireGuard и Outline требуют установки дополнительных приложений на клиентские устройства.

Меня всегда привлекали простые, минималистичные и самодостаточные решения, поэтому мне не по душе перспектива устанавливать отдельные приложения для подключения к своей же виртуальной частной сети. И я не вижу какие преимущества в сравнении с IKEv2 дало бы использование WireGuard или Outline VPN обычному домашнему пользователю.

Аренда VPS в Европе​

На момент написания этой статьи я нашел 2 хостинга, предоставляющих VPS в Нидерландах по умеренной цене:

Aeza с промо-тарифом AMS-PROMO (1 vCPU / 8GB RAM / 20GB NVMe) за 99 рублей в месяц.

VDSina с минимальным тарифом (1 vCPU / 1GB RAM / 30GB NVMe) за 198 рублей в месяц

Свой выбор я остановил именно на Aeza с их тарифом за 99 рублей. Они гарантируют скорость не менее 100 Мбит/с (предельно возможная — 1 Гбит/с, но гигабитный линк у них делится на несколько виртуальных машин, так что в реальности скорость будет ниже), один выделенный IP-адрес и отсутствие лимитов по трафику.

Итак, регистрируемся на сайте https://aeza.net и начинаем оформлять VPS.

Промокод​

По промокоду [ PROMKOD ] можно получить 200 рублей на бонусный баланс и воспользоваться ими при пополнении основного баланса не менее чем на 300 рублей. Но для начала достаточно оплатить минимальные 99 рублей за аренду VPS на месяц и потестировать его работу. Бонусами можно воспользоваться уже потом, если устроит качество услуг.

Промо-тариф доступен в только при создании виртуального сервера в локации «Нидерланды»:
a0aed668043d1013f4ca3.png


Выбираем имя сервера и операционную систему. Я выбрал Ubuntu 22.04 как наиболее знакомую.

После оплаты на хостинге начнет создаваться VPS, это займет несколько минут:
5e4faed2262f0528b8807.png


После завершения процесса установки в панели хостинга появится IP-адрес сервера и данные для доступа:
ef303b11b52d4a75d0000.png


Установка VPN-сервера​


После завершения процесса создания VPS подключаемся к серверу по SSH, используя доступы из админ-панели хостинга:
349a6394571f51ddafa52.png


Сразу же обновляем все пакеты:
sudo apt update
sudo apt dist-upgrade

Скачиваем скрипт для развертывания VPN-сервера:
wget https://git.io/vpnsetup -O vpnsetup.sh

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

sudo nano vpnsetup.sh

И вписываем в строку YOUR_IPSEC_PSK пароль из 20 символов, а в строки YOUR_USERNAME и YOUR_PASSWORD свой логин и пароль для VPN-соединения соответственно:
ed2d754d857e04b75d529.png


И запускаем процесс установки:
sudo sh vpnsetup.sh

Ждем окончания процесса и обращаем внимание на пути к файлам конфигурации:
b41b8f553858673dc292e.png


Эти файлы потребуются для настройки VPN-туннеля по протоколу IKEv2, который мы и будем рассматривать далее в статье. Если же IKEv2 вам по какой-то причине не подходит, то в качестве альтернативы вы можете поднять VPN-соединение по протоколу IPSec, воспользовавшись теми данными для доступа, которые прописали ранее в скрипте vpnsetup.sh.

На этом процесс установки завершен, но поскольку наш VPS доступен извне всему интернету, в целях безопасности добавим в файрволл ufw правила, ограничивающие доступ ко всем портам кроме тех, которые планируем использовать:
sudo ufw allow ssh
sudo ufw allow OpenSSH
sudo ufw allow 500,4500/udp
sudo ufw allow 8181
sudo ufw enable

Это важно​

Не запускайте ufw до добавления правил, разрешающих доступ по SSH на 22 порт, иначе сразу после запуска файрволл разорвет действующее SSH-соединение и будет блокировать все последующие.

На этом установка VPN-сервера завершена. Я не преувеличивал, когда писал в заголовке статьи о том, что она займет 10 минут.

Настройка подключений​

Теперь осталось настроить подключения к нашему VPN-серверу на своих устройствах.

Среди стандартных пакетов Python есть http-сервер, позволяющий получить доступ к любой нужной папке на устройстве в веб-интерфейсе. Воспользуемся им:
python3 -m http.server 8181

И обратимся в браузере к нашему VPS по IP-адресу на 8181 порт:


При этом откроется листинг домашней директории пользователя root:

30a68c2b03e668d83b296.png

Для настройки подключения необходимо скачать файл vpnclient.p12 (для Windows или Linux), vpnclient.sswan (для устройств на Android) или vpnclient.mobileconfig (для iOS или macOS).

После скачивания не забудьте выключить веб-сервер, прервав выполнение команды в терминале комбинацией клавиш Ctrl + C

В macOS​

  1. Скачиваем и запускаем файл vpnclient.mobileconfig
  2. Переходим в «Системные настройки» → «Профили»
  3. Нажимаем «Установить…» возле отобразившегося в списке сертификата
  4. Переходим в «Системные настройки» → «Сеть», выбираем подключение c IP-адресом нашего VPS в левом меню и нажимаем «Подключить»
  5. Опционально можно поставить галочку «Подключать по запросу», тогда VPN будет активироваться автоматически при каждом подключении к интернету

В Windows​

  1. Скачиваем и запускаем файл vpnclient.p12
  2. Скачиваем скрипт ikev2_config_import.cmd в ту же папку, в которой находится vpnclient.p12
  3. Запускаем скрипт ikev2_config_import.cmd от имени администратора
  4. В открывшемся диалоге оставляем имя VPN-клиента по умолчанию, указываем IP-адрес сервера, выбираем предпочитаемое имя VPN-подключения и нажимаем любую кнопку для выхода из диалога.
  5. Подключаемся к своему VPN-серверу на вкладке управления сетевыми подключениями

В iOS и iPadOS​

  1. Скачиваем файл vpnclient.mobileconfig
  2. Отвечаем «Разрешить» на вопрос «Веб-сайт пытается загрузить профиль конфигурации. Разрешить?»
  3. Переходим в «Настройки», выбираем на новый пункт «Профиль загружен» и нажимаем «Установить»
  4. Переходим в «Настройки» → «VPN», выбираем подключение c IP-адресом нашего VPS и нажимаем на переключатель подключения
  5. Опционально можно поставить галочку «Подключать по запросу», тогда VPN будет активироваться автоматически при каждом подключении к интернету

После настройки соединения можно зайти на сервис проверки IP-адресов и убедиться, что трафик действительно идет через VPN, в качестве IP-адреса отображается адрес VPS, а в качестве локации — Нидерланды:
4aee831bcb969f7b2dbb7.png


Заключение​

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

Также у нас остается полный доступ к VPS, который можно использовать для каких-то других задач или экспериментов. Ведь даже слабая конфигурация виртуального сервера позволяет разместить на нем какие-то скрипты и иметь доступ к ним из интернета.
 
Top