Как создать свой VPN-сервер для обхода блокировок за 99 рублей

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

Дата Автор 22 комментария 3 422 просмотров

Есть много причин использовать 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 на месяц и потестировать его работу. Бонусами можно воспользоваться уже потом, если устроит качество услуг.

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

Как создать свой VPN-сервер для обхода блокировок за 99 рублей

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

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

Как создать свой VPN-сервер для обхода блокировок за 99 рублей

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

Как создать свой VPN-сервер для обхода блокировок за 99 рублей

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

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

Как создать свой VPN-сервер для обхода блокировок за 99 рублей

Сразу же обновляем все пакеты:

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-соединения соответственно:

Как создать свой VPN-сервер для обхода блокировок за 99 рублей

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

sudo sh vpnsetup.sh

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

Как создать свой VPN-сервер для обхода блокировок за 99 рублей

Эти файлы потребуются для настройки 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 порт:

http://ip-адрес-vps:8181

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

Как создать свой VPN-сервер для обхода блокировок за 99 рублей
Для настройки подключения необходимо скачать файл 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, а в качестве локации — Нидерланды:

Как создать свой VPN-сервер для обхода блокировок за 99 рублей

Заключение

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

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

22 комментария на «Собственный VPN-сервер за 10 минут»

  1. Спасибо за статью!
    А можно ли как-то настроить IKEv2 VPN клиент на RouterOS чтобы можно было раздавать VPN всем устройствам в локальной сети с помощью роутера Mikrotik?

    • Точно можно, но вот конкретную последовательность действий не подскажу, т.к. не разбираюсь в настройке Микротиков.

    • Да, можно. Только я не всем устройства пускаю в впн канал, а использую адрес листы (antifilter).
      Но иногда все таки пускаю тв или тв-приставки полностью в впн канал, хотя бы для того,чтобы HDvideo box работал без проблем ))

  2. Вы пишете: «После завершения процесса создания VPS подключаемся к серверу по SSH, используя доступы из админ-панели хостинга», как найти эту панель? (Наверное глупый вопрос), просто начинающий пользователь:)

    • Так в этой админ-панели вы и создаете VPS. Сайт my.aeza.net, дальше кликнуть на название сервера либо на главной странице, либо на странице «Услуги» в левом меню.

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

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

    • Можно арендовать VPS с размещением в российском дата-центре (у Beget, например, есть тарифы от 7 рублей в день, их оборудование физически находится в Санкт-Петербурге).

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

  4. Спасибо! Сделал по вашей инструкции 1 в 1.
    Только с двух ноутов когда параллельно подключаюсь, на другом в момент подключения отваливается и больше не подключается.
    Может что-то нужно прописать, чтобы такого не было?
    Делал на VPS бегета для российского ip.

    • Попробуйте создать отдельные доступы для разных устройств.
      На VPS надо выполнить команду:

      sudo ikev2.sh

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

    • Добрый день!всё просто:
      из корневой диреутории скачиваете файл vpnclient.sswan.
      далее устанавливаете StrongSwan VPN client.
      После установки нажимаете на «добавить VPN профиль» три точки, появится меню, там выбираете «импортировать профиль». Выбираете скачанный файл vpnclient.sswan.
      Далее в открывшемся окне жмете
      IMPORT CERTIFICATE FROM VPN PROFILE, и всякие там «далее»,»разрешить».
      Появится окошко «Choose certificate» выбираете галкой сертификат и нажимаете IMPORT.
      На этом все. должно присоединится

  5. Привет ,глупый вопрос но я нуб..а как скачать файлы то для андройд vpnclient.sswan и виндовс ))Я реально не понял куда вводить python3 -m http.server 8181))

    • Привет. Так в терминале вводить, как и все предыдущие команды. А после запуска http-сервера этой командой — обратиться к нему в браузере и скачать файлы.

  6. Здравствуйте, сделал все по инструкции MacOS, но не понимаю как настроить трафик через впн(у меня айпи не меняется на нидерландский).

    • Могу предложить удалить установленные настройки соединения и создать их заново, но ситуация странная.
      Если б это было L2TP-подключение, то в его настройках была бы необязательная опция «отправлять весь трафик через VPN», без которой IP бы не менялся. Но при использовании IKEv2 такой опции нет, т.е. случайно отключить ее невозможно.

      • А там ip при покупке нидерландского сервака за 99 рублей изначально распознаётся как рф..так что причина в этом видимо

        • Так не меняется после подключения или детектится как РФ? Это разные вещи. Просто в макоси действительно есть возможность подключаясь к VPN не пускать свой http-трафик через VPN — но, как я написал выше, у себя эту опцию я вижу только при установке L2TP-соединений, но не IPSec и не IKEv2.

          Ну и IP этого VPS за 99 рублей у меня изначально определился нидерландским, продолжает определяться таким и сейчас. Актуальный скрин прикладываю:

          • Не знаю как подцепить скрин ,но по поводу ip российского ответа тех поддержки. Ip адреса выдаются в подсети для Нидерланд ,но введена в эксплуатацию недавно ,по этому не все сайты изменили информацию об ip

  7. Все сделал один в один, но когда в трее выбираю vpn и нажимаю подключиться пишет «не удается подключиться, параметр задан неверно»

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

[Хамство, оскорбления и попытки крауд-маркетинга будут удалены]