Cегодня создадим свой VPN сервер IPsec / L2TP.
Выберем протокол для VPN.
Мне известны эти: OpenVPN, PPTP, IPsec L2TP и IKEv2. Ещё набирает большую популярность WireGuard, но его рассматривать в этой статье я не буду (возможно напишу как-нибуть отдельную статью).
OpenVPN — считается самым простым и популярным вариантом, у которого скорость, защита и надежность на высоком уровне, но требует установки клиентского приложения, что не всегда удобно.
По самостоятельной настройке OpenVPN продвинутым пользователям я рекомендую эту статью. В этом руководстве предполагается, что центр сертификации находится на отдельном сервере Ubuntu 20.04, и как его сделать там тоже сказано, а Oracle нам как раз даёт две VPS. Хотя технически возможно использовать сервер OpenVPN на той же машине — компьютере в качестве центра сертификации, это не рекомендуется, поскольку это открывает вашу VPN для некоторых уязвимостей безопасности. Согласно официальной документации OpenVPN , вы должны разместить свой CA на автономном компьютере, который предназначен для импорта и подписи запросов на сертификаты.
L2TP/IPSec — собственно, именно этот протокол мы будем использовать в этой статье, т.к. найденный на github сценарий автоматической установки и настройки мне показался самым простым для новичков и «чайников» + подойдёт для установки не только на Ubuntu но и на Debian и CentOS. Недостаток этого протокола, пожалуй в том, что он считается медленным и стандартные порты может закрыть ваш интернет-провайдер или сетевой администратор.
С VPN L2TP/IPSec, который мы установим, на устройстве нам нужно будет только ввести:
— IP адрес своего VPS сервера Oracle;
— 20-и значный ключ IPSec;
— Логин (имя пользователя) и пароль
PPTP — устаревший протокол, у которого конечно же достойная скорость подключения, но в плане защиты и конфиденциальности он на самом низком уровне и использовать его в проектах «Умного дома», я точно не рекомендую!
IKEv2 — считается протоколом с самой высокой степенью безопасности, стабильно подключается после разрыва соединения, быстрее, чем L2TP, но не очень простой в плане самостоятельной установки на сервер.
Я даже начал написание своего поста с него, адаптируя эту инструкцию под VPS сервер от Oracle:
но в итоге она мне показалось сложной для новичков и «чайников», удалил её и решил оставить просто эту ссылку на оригинал, для продвинутых пользователей 😉
На самом деле инструкций по ручной и автоматической установке VPN — сервера по любому протоколу в интернете существует +100500 и ещё столько же, поэтому напомню про свой disclaimer )))
Ну и наконец переходим к самому главному:
Установим свой VPN сервер
Особенности сервера, который мы будем устанавливать:
— Быстрее IPsec/XAuth («Cisco IPsec») и поддерживается режим IKEv2;
— Доступен предварительно созданный Docker-образ VPN-сервера; — Полностью автоматизированная настройка IPsec VPN-сервера;
— Инкапсулирует весь трафик VPN в UDP — протокол ESP не нужен;
— Протестировано с Ubuntu, Debian, CentOS / RHEL и Amazon Linux 2
Вся наша установка сводится к запуску сценария автоматической настройки с githab, мы лишь подготовим систему, пропишем 20-и значный ключ IPSec, логин и пароль для VPN + откроем порты для VPN в VPS от Oracle.
Другие варианты установки + дополнительная настройка IKEv2 (рекомендуется) смотрите в документации автора скрипта. Для параноиков — это «open source», исходный код скрипта смотрим там же 🙂
Подключаемся через PuTTy по SSH к своему серверу (Как? В конце предыдущего поста мы это уже делали.)
1) Для получения списка новых пактов, выполните:
sudo apt-get update
2) Для выполнения обновления пакетов, выполните:
sudo apt-get upgrade
Не забываем нажать «»Y» — «Enter» ))
3) Скачиваем скрипт командой:
wget https://git.io/vpnsetup -O vpnsetup.sh
4) После завершения, открываем vpnsetup.sh для редактирования:
sudo nano -w vpnsetup.sh
В котором в одинарных кавычках указываем свои значения:
YOUR_IPSEC_PSK='Защищенный PSK IPsec должен состоять мин из 20 случайных символов.' YOUR_USERNAME='Ваш логин для VPN' YOUR_PASSWORD='Ваш пароль для VPN'
5) Сохраняем и закрываем файл, нажав CTRL + X, Y, а затем ENTER.
6) Запускаем скрипт и идём на пару минут пить кофе ))
sudo sh vpnsetup.sh
Ф С Ё !!! Готово !!! )))
В случае с нашим бесплатном VPS сервером от Oracle конечно ещё не всё )))
Нужно ещё открыть порты UDP 500 и 4500 для VPN на VPS от Oracle.
Для этого открываем ссылку в письме, которая пришла после регистрации в Oracle, вводим логин и пароль и попадаем в свою учетку, где следуем по пути:Сети — Виртуальные облачные сети — vcn- (ВАШ) — Сведения о списках безопасности
Альтернативный способ попасть туда из главного окна: «Настроить сеть с помощью мастера», «Запуск мастера VNC» нужно нажать «отмена», кликаем на свой «VNC-номер», далее в «ресурсах» нажимаем на «Списки безопасности» и кликаем на «Default Security List for vcn-номер»
где добавляем правила для входящего трафика:
Если не знаете, как настроит клиентов IPsec / L2TP VPN, то можете почитать например — ЗДЕСЬ.
Скорость этого VPN соединения (локальная 80 МБ/сек) с сервером в Амстердаме у меня получилась такая (спустя пару дней до 40-50 Мб/с):
UPD: На всякий случай настройки (открыть порты для этой VPN) для файрволла IPTABLES (мне не потребовалось):
sudo iptables --policy INPUT ACCEPT sudo iptables -F sudo iptables -A INPUT -p udp --dport 500 -m state --state NEW -j ACCEPT sudo iptables -A INPUT -p udp --dport 4500 -m state --state NEW -j ACCEPT sudo netfilter-persistent save sudo ufw disable
UPD2: Исправляем проблему подключения к L2TP/IPSec VPN серверу за NAT
привет, подскажи пожалуйста, как можно провести резервное копирование сервера oracle, и восстановиться до состояния резервной копии? средствами oracle cloud, я так понял, можно из резервной копии только создать новый инстанс, что неосуществимо в бесплатном режиме..
Приветствую! В личном кабинете («Вычислить» — «Экземпляры» — «Резервные копии загрузочного тома») написано так: «Вы можете бесплатно сохранить до 5 резервных копий томов в своем домашнем регионе. В настоящее время у вас есть резервная копия 1 тома. Если вы создадите дополнительные резервные копии томов сверх 5 и не обновите их по истечении срока действия бесплатной пробной версии, ваши данные будут удалены.» Меня смутила последняя фраза и полагаться на резервные копии от Оракл я не стал)) Планирую реализовать копии нужных мне разделов UBUNTU средствами LINUX — rsync и/или rclone, пока не доходят до этого руки. Напишу может статью на эту тему в будущем, а пока гугл))
Расскажу, как у меня было)
Увидел возможность бэкапа в панели, почитал, решил попробовать, создал бэкап действующей машины а как развернуть его на текущую машину не нашел.
Есть только вариант сделать из бэкапа загрузочный диск. ну, была -небыла, прожал загрузочный диск, появился у меня третий накопитель, и на него сразу упала плашка «бесплатно всегда».
Но вот проблема, нельзя заменить загрузочный диск на уже созданном и работающем инстансе. Кастомный загрузочный диск можно выбрать только при создании нового инстанса.
В итоге меня оказалось два инстанса с плашкой «бесплатно», но у загрузочного диска последнего инстанса пропала бесплатность, её автоматически перенесли на новый загрузочный диск.
Удаление бэкапного диска не привело к переносу плашки, у меня так и остался инстанс с диском, который удалится с приходом 30 дней.
Саппорт, спустя пару часов общения мне искренне соболезнует и говорит, что ничего сделать не может, такова политика триала, и у них нет физической возможности изменить статус накопителя на фри, тк все автоматизировано.
Пришлось удалять инстанс, и создавать новый, чтобы плашка «бесплатен всегда» упала и на машину и на диск. Такие вот дела…
После этого стал искать варианты бэкапа из под ос, без lvm. Но в основном попадаются варианты просто копирования файлов, когда на деле требуется не просто наложить архив сверху на тукущую фс, но и удалить невостребованные файлы, созданные после бэкапа, дабы не случилось мешанины и кучи не актуальных файлов.
Так же я не могу понять, как будет происходить замена файлов, которые будут активны на момент развертывания бекапа, службы, демоны… все очень сложно. для человека, который не очень разбирается в этих всех штуках, навроде меня))
Поэтому я подожду Вашего поста, надеюсь, Вы победите оракл 🙂
Спасибо за обзор — попробовал и все нормально получилось, но возник вопрос — как-то можно сделать чтобы два пользователя одновременно заходили?
Добрый день, столкнулся с проблемой. Настроил на сервере VPN IKEv2, по мануалу выше, но послу подключения к нему пропадает инет на клиенте (win10). При этом ssh сессия еще некоторое время висит, т.е. я при значке отсутствующего инета могу выполнить sudo ipsec status и увидеть, что
Security Associations (1 up, 0 connecting):
ikev2-vpn[1]: ESTABLISHED 42 seconds ago
ikev2-vpn{1}: INSTALLED, TUNNEL, reqid 1, ESP in UDP SPIs: c3ada259_i 61f18cbe_o
ikev2-vpn{1}: 0.0.0.0/0 === 10.10.10.1/32
Как с этим бороться?