Прежде всего, дам ссылку на первоисточник, на основе которого и будет произведена вся работа. — тынц Сразу скажу, что я, будучи еще вообще зеленым новичком в Linux, смог пройти весь описанный там путь от начала до конца, и все успешно работало. Но меня всегда смущало, как такое подключить любимой девушке, сестре, etc. Знакомый подсказал другой путь, который и был взят за основу.
Предполагается что у вас уже есть настроенная впс на основе ubuntu 20.04, я проверял на ней неоднократно, — все стабильно работает.
1. Установка Strongswan
sudo apt update
sudo apt install strongswan strongswan-pki libcharon-extra-plugins libcharon-extauth-plugins
2. Создание домена
Идем на сайт вроде ydns.io делаем там себе регу, переходим на вкладку Host> New host
вводим там свое будущее красивое (или нет) доменное имя и привязываем его к ip-адресу своей VPS.
и жмем Create Host
Готово, вы восхитительны. У вас есть доменное имя типа mysuperpupervpn.ydns.eu по которому и будет в дальнейшем идти авторизация к вашему ikev2 vpn-серверу.
Для создания своей собственной доменной зоны могу еще посоветовать www.cloudns.net там до 500000 бесплатных днс запросов в месяц, чего более чем достаточно в любительских целях.
3. Настройка Strongswan.
Необязательный шаг — создаем копию файла настроек
sudo mv /etc/ipsec.conf{,.original}
Открываем в редакторе файл настроек
sudo nano /etc/ipsec.conf
Приводим его к следующему виду:
config setup
charondebug="ike 1, knl 1, cfg 0»
uniqueids=no
conn ikev2-vpn
auto=add
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
dpdaction=clear
dpddelay=300s
rekey=no
left=%any
leftid=@server_domain_or_IP
leftcert=server-cert.pem
leftsendcert=always
leftsubnet=0.0.0.0/0
right=%any
rightid=%any
rightauth=eap-mschapv2
rightsourceip=10.10.10.0/24
rightdns=8.8.8.8,8.8.4.4
rightsendcert=never
eap_identity=%identity
ike=chacha20poly1305-sha512-curve25519-prfsha512,aes256gcm16-sha384-prfsha384-ecp384,aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024! esp=chacha20poly1305-sha512,aes256gcm16-ecp384,aes256-sha256,aes256-sha1,3des-sha1!
ВАЖНОЕ — leftid=@server_domain_or_IP — подставляем наше доменное имя после @
leftcert =fullchain.pem — Это будет файл от бесплатного центра сертификации Let's Encrypt
Можете еще сменить гугловские днс на какие-то свои другие, это не принципиально
Сохраняем файл Ctrl +O, Enter, Ctrl +X
P. S. Полностью конченная табуляция и форматирование текста, так что скопируйте лучше в блокнот с сайта digitalocean и замените строки как показано в ВАЖНОЕ
4. Настройка аутентификации нашего VPN
sudo nano /etc/ipsec.secrets
Приводим к такому виду:
# This file holds shared secrets or RSA private keys for authentication.# RSA private key for this host, authenticating it to any other host# which knows the public part.
: RSA «privkey.pem»
ADMIN: EAP «очень сложный пароль не менее 10 знаков»
ADMIN, как совершенно нетрудно догадаться, —будущий логин подключения к вашему Ikev2 vpn'у
Все дальнейшие пароли добавлять сюда, по такому же шаблону с сохранением синтаксиса. Из минусов- надо будет перезапускать сервис.
Сохраняем файл Ctrl +O, Enter, Ctrl +X и перезапустим впн
sudo systemctl restart strongswan-starter
5. Устанавливаем бесплатный certboot
С его помощью мы будем управлять SSL-сертификатами от Let's Encrypt.
sudo apt install certbot
и сразу привязываем сертификат к своему доменному имени
sudo certbot certonly --standalone --agree-tos -m ваш е-mail -d ваш домен
порты 80,443/tcp на сервере должны быть открыты, иначе каменный цветок не выйдет.
После этого в домашней директории создаем файл renew.sh c вот таким кодом.
touch renew.sh
sudo nano renew.sh
#! /bin/sh certbot certonly --standalone --agree-tos -m ваш email -d ваш домен
sudo cp /etc/letsencrypt/live/ваш домен /fullchain.pem /etc/ipsec.d/certs/fullchain.pem
sudo cp /etc/letsencrypt/live/ваш домен /privkey.pem /etc/ipsec.d/private/privkey.pem
sudo cp /etc/letsencrypt/live/ваш домен /chain.pem /etc/ipsec.d/cacerts/chain.pem
systemctl restart ipsec.service
Сохраняем файл Ctrl +O, Enter, Ctrl +X
Данный файл понадобится для обновления сертификата, если по каким-то причинам он не обновится автоматически, простым запуском *renew.sh, сделав его сейчас исполняемым командой:
sudo chmod u+x renew.sh
6. Выполняем весь 6-й пункт из основной справки по Ikev2
Перезапускаем сервис командой
sudo systemctl restart strongswan-starter
можно заодно и глянуть его статус
sudo systemctl restart strongswan-starter
Собственно, на этом и все. Сервис запущен. С форматированием на данном сайте как-то не алле, и я не нашел куда прятать код как на форумах, например. Как всегда в линуксах, важно делать все вплоть до запятой, ибо это ж блин, юзерфрендли (сарказм). Я на начальном этапе из-за этого испытывал много боли и страданий). Вроде ничего не забыл.
Процесс подключения на основных платформах описан у меня на сайте.