Поднимаем свой VPN-server с протоколом IKEv2 с помощью docker

Это пошаговая инструкция, которая требует минимального понимания, что происходит, просто по шагам выполняйте команды в консоли и скорее всего у вас все получится.

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

С помощью докера установим VPN-server, а также установим aapanel для просмотра загруженности сервера.

Я арендовал сервер в Германии, вы можете где считаете нужным, здесь вам придется разобраться самостоятельно. Операционная система Ubuntu 20.04

Подключаемся по SSH, тут, я думаю, вы сами разберетесь.

Приведу установку от сюда

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

sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
sudo apt update
apt-cache policy docker-ce
sudo apt install docker-ce

Проверяем статус докера

sudo systemctl status docker

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

Output
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2020-05-19 17:00:41 UTC; 17s ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 24321 (dockerd)
      Tasks: 8
     Memory: 46.4M
     CGroup: /system.slice/docker.service
             └─24321 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Установка ВПН-сервера

Нужно создать файл /root/vpn.env

Информация от сюда и от сюда

cd /root
touch vpn.env
nano vpn.env

вставляем следующий текст

VPN_IPSEC_PSK=sjf3hjhsdfshbgtYTg4VdsdshGytrDffffshbgtYTg4Vdsdsh
VPN_USER=user1
VPN_PASSWORD=password45word65
ctrl+x и сохранить файл

где

VPN_IPSEC_PSK -секретная фраза IPsec, должна состоять из 20 или более символов. 
VPN_USER  и VPN_PASSWORD - логин и пароль от VPN сервера.

Запускаем наш докер контенер с нашим окружением:
docker run \
    --name ipsec-vpn-server \
    --env-file ./vpn.env \
    --restart=always \
    -v ikev2-vpn-data:/etc/ipsec.d \
    -v /lib/modules:/lib/modules:ro \
    -p 500:500/udp \
    -p 4500:4500/udp \
    -d --privileged \
    hwdsl2/ipsec-vpn-server

Проверяем

docker ps -a

Должен быть вывод что-то вроде

CONTAINER ID        IMAGE                     COMMAND             CREATED             STATUS              PORTS                                          NAMES
0f32ea96490f        hwdsl2/ipsec-vpn-server   "/opt/src/run.sh"   8 seconds ago       Up 7 seconds        0.0.0.0:500->500/udp, 0.0.0.0:4500->4500/udp   ipsec-vpn-server

Теперь по адресу

/var/lib/docker/volumes/ikev2-vpn-data/_data

лежат файлы, среди которых

vpnclient.p12 (for Windows & Linux)

vpnclient.sswan (for Android)

vpnclient.mobileconfig (for iOS & macOS)

необходимые для vpn-клиента. Ваша задача их скачать, можете использовать ftp-клиент (я использовал filezilla), можете через админка провайдера, как вам угодно. Инструкция для filezilla

Добавляем и удаляем пользователей

Вы можете управлять клиентами IKEv2 с помощью вспомогательного скрипта.

# Добавить нового клиента (используя параметры по умолчанию)
docker exec -it ipsec-vpn-server ikev2.sh --addclient [client name]
# Экспорт конфигурации для существующего клиента
docker exec -it ipsec-vpn-server ikev2.sh --exportclient [client name]
# Список существующих клиентов
docker exec -it ipsec-vpn-server ikev2.sh --listclients
# Посмотреть инструкцию
docker exec -it ipsec-vpn-server ikev2.sh -h

Я вас поздравляю!

Мы подняли впн-сервер и скачали файлы необходимые для впн-клиента вашего устройства.

Теперь сами погуглите, как подружить ваше устройство и эти файлы

Установка сертификата на устройство

MacOS

Запускаете файл .mobileconfig, затем заходите системные настройки -> профили, там устанавливаете появившийся профиль. Затем системные настройки -> сеть, там находите появившееся vpn-подключение и нажимаете кнопку подключить.

Пример на видео

IOS

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

Android

Инструкция здесь

Windows

Здесь

Linux

Если вы сидите на линукс, я вообще не понимаю, почему вы читаете такую профанскую статью

ВСЁ!!!

Установка aapanel (необязательно)

Зачем это нужно? Aapanel — это оболочка для управления веб-сервером, нам она нужна для файлового менеджера и для оценки нагруженности сервера.

Инстукция отсюда

docker run -d -p 8886:8888 -p 443:443 -p 80:80 -p 889:888 --restart=always -v ~/website_data:/www/wwwroot -v ~/mysql_data:/www/server/data -v ~/vhost:/www/server/panel/vhost -v /var/lib/docker/volumes/ikev2-vpn-data/_data:/ikev2-vpn-data aapanel/aapanel:lib 

Ваша панель будет доступна по адресу

http://youripaddress:8886/aapanel

username:aapanel
password:aapanel123

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

Все настройки стандартные, хотя бы смените пароль settings->Panel password

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

Что в этой панели нам надо?

В меню Monitor смотрим мониторинг сервера

В меню Files в каталоге /ikev2-vpn-data лежат наши файлы конфигурации vpn