Linux ikev2 vpn fedora

Почему я люблю IKEv2 больше других VPN

Сейчас все вокруг настраивают VPN для удаленных сотрудников. Мне больно смотреть, как люди устанавливают монструозные глючные программы, настраивают какие-то сертификаты, устанавливают драйвера TUN/TAP и делают множество сложных операций, в то время как лучшее решение уже встроено в операционную систему.

IKEv2 — это современный протокол VPN, разработанный Microsoft и Cisco. Он используется по умолчанию для новых VPN-подключений в Windows, macOS, iOS. Он быстрее и безопаснее большинства VPN-протоколов и может легко настраиваться на стороне клиента в два клика без использования сторонних программ.

Я считаю, что IPsec IKEv2 отлично подходит не только для соединения серверов, но и для обычных VPN-подключений конечных пользователей. В этом посте я постараюсь убедить вас использовать IPsec IKEv2 для обычных домашних пользователей вместо OpenVPN.

IKEv2 быстрее

При прочих равных условиях, IKEv2 будет всегда быстрее OpenVPN. Это особенно заметно на маломощных системах с медленной памятью, например на роутерах или одноплатных компьютерах.

Дело в том, что IPsec работает в контексте ядра операционной системы, а OpenVPN в контексте пользователя (userspace), и на обработку каждого пакета происходит переключение контекста между процессами ядра и процессами пользователя. Это влияет как на пропускную способность, так и на задержки.


Сравнение задержек для разных протоколов VPN.

Скриншот выше показывает разницу в задержке в два раза между IPsec и OpenVPN. Разумеется, разницу в 1мс невозможно заметить на глаз, но при нагрузке на систему эти значения могут значительно изменяться. Кроме того, реальные показатели сильно зависят от характеристик конкретной системы, поэтому я не буду приводить абсолютные цифры для сравнения двух протоколов. Задержки очень важны при использовании голосовой и видеосвязи через VPN.

По моим субъективным ощущениям IKEv2 на Windows 10 работает заметно отзывчивее чем OpenVPN. Ведь реальное использование десктопного компьютера сильно отличается от синтетических тестов VPN-протоколов. Нагрузка на процессор и память непостоянная, пользователь может запускать ресурсоемкие программы, все это будет влиять на показатели.

IKEv2 проще в настройке

Все современные операционные системы (кроме Android) поддерживают IPsec IKEv2 прямо из коробки. Не нужно устанавливать никакие программы, драйвера виртуальных адаптеров TUN/TAP и прочее. Всё управление VPN происходит из системного меню.

При этом настройку на клиенте можно упростить до трех строчек:

  • Домен — для IPsec домен обязателен, так как для него выпускается SSL-сертификат
  • логин
  • пароль

Не нужно больше передавать клиенту файлы с сертификатами и ключами, заставлять его импортировать корневые сертификаты в системное хранилище. Достаточно логина и пароля, при этом соединение будет так же надежно защищено, как и в OpenVPN при использовании сертификатов, ведь для установки соединения используется такой же x.509 сертификат, как и для веб-сайтов с HTTPS.

Настройка на Windows 10

Мастер настройки VPN вызывается из меню подключения к WiFi. С настройкой одного окна справится пользователь любой квалификации. Созданное подключение активируется из меню со списком WiFi-сетей.


Интерфейс настройки нового IKEv2 подключения в Windows 10

В macOS поддерживается IKEv2 начиная с версии 10.11 (El Capitan). Создание подключения происходит через меню настроек сети.

Добавляем новое подключение. В качестве имени подключения задаем любое произвольное имя.

Для проверки подлинности сертификата, нужно указать доменное имя. При этом в поле «Server Address» можно указать IP-адрес сервера, а домен только в «Remote ID», тогда для подключения не будет выполняться DNS-резолв, и оно будет происходить чуть быстрее.

Логин и пароль пользователя указываем из файла /etc/ipsec.secrets

Настройку iOS можно выполнить вручную через мастер, но намного удобнее использовать профиль автоконфигурации mobileconfig.

Ручная настройка по смыслу аналогична десктопной macOS:

Настройки -> VPN -> Добавить конфигурацию VPN

IKEv2 это безопасно

На предыдущем шаге мы выяснили, что для настройки подключения достаточно логина и пароля. Но как клиенту проверить, что подключение не прослушивается, не подменяются данные и сервер действительно тот, за кого себя выдает? Для этого используются обычные SSL-сертификаты, которые мы привыкли использовать для веб-сайтов и HTTPS.

Читайте также:  Отключение режима полета windows 10

Клиент устанавливает защищенный SSL-тоннель с сервером, и уже внутри него передается логин-пароль. По умолчанию в Windows и macOS для передачи пароля используется алгоритм mschapv2. Таким образом с помощью SSL-сертификата клиент проверяет подлинность сервера, а по логину-паролю сервер проверяет подлинность клиента.

Сервер IKEv2 может использовать один и тот же сертификат вместе с веб-сервером, например от популярного Let’s Encrypt. Это сильно упрощает управлением сертификатами.

Такая же модель используется в OpenVPN, и при желании в нем можно использовать сертификат от Lets Encrypt, однако администратору в любом случае потребуется передать пользователю файл для настройки VPN.

Настраиваем IKEv2 сервер

Развернуть свой IKEv2 сервер можно за пару минут с помощью скриптов автоматической установки или используя готовые контейнеры. Использовать docker не рекомендуется, так как его сетевая подсистема снижает производительность IPsec на дешевых тарифах VPS. Вы также можете настроить IKEv2-сервер вручную, на Хабре есть статьи с примерами настройки сервера Strongswan.

Мы будем использовать один из наиболее удачных вариантов скриптов автонастройки github.com/jawj/IKEv2-setup
Этот скрипт хорош тем, что использует сертификаты от Lets Encrypt и автоматически генерирует валидный сертификат.

Шаг 1: Выбор сервера

Для запуска VPN сервера нам потребуется VDS. Подойдет самая простая конфигурация с одним ядром процессора. Скрипт из нашего примера лучше всего протестирован на Ubuntu 18.04, поэтому при создании сервера выбираем этот образ ОС.

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

Шаг 2: Установка Strongswan

Подключаемся SSH-клиентом и запускаем скрипт установки:

Шаг 3: Настройка клиента

Введенные реквизиты пользователя VPN теперь нужно использовать для настройки на клиенте. Важно использовать именно то доменное имя, которое вы вводили в Hostname for VPN.

Шаг 4: Добавление новых пользователей

Чтобы добавить нового пользователя в уже созданный сервер, отредактируйте файл /etc/ipsec.sectes.

После добавления пользователя выполните команду ipsec secrets чтобы Strongswan перечитал конфиг.

Заключение

Мы рассмотрели удобство IKEv2 со стороны пользователя. Администрирование такого сервера не сложнее, а иногда даже проще чем OpenVPN. Если вы только планируете организовать удаленный доступ для своих сотрудников, обязательно посмотрите в сторону IKEv2. Не заставляйте своих пользователей устанавливать лишние программы, если все необходимое уже есть на их компьютере. Это удобнее, безопаснее и намного прогрессивнее.

Источник

Как настроить IKEv2 VPN в Linux

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

Далее мы покажем, как настроить соединение VPN IKEv2 в Linux Ubuntu 18.04 LTS. В других версиях Linux процесс настройки может незначительно отличаться.

Настроить соединение:

  • Hазвание — название создаваемого подключения, например SecureVPN
  • Address — адрес VPN-сервера. Нажмите для получения списка серверов
  • Authentication — EAP
  • Username — username
  • Password — password

В разделе Options отметить пункты Request an inner IP address и Enforce UDP encapsulation.

Отметить пункт Enable custom proposals и в строке IKE указать aes256-sha256-modp1024.

Источник

How to manually configure IKEv2 for ProtonVPN in Linux

ProtonVPN offers both an official Linux app with graphical user interface and an official Linux CLI. You can also manually configure IKEv2 for ProtonVPN in Linux. In this article, we explain how.

We would like to thank “Sh4dowb,” a member of the Proton community, who was a great help in creating this guide. Use this tutorial if you prefer the connecting to our servers via the IKEv2 protocol.

This setup guide explains how to configure an IKEv2 connection on Mint 18.3 Sylvia.

1. Install the necessary packages by opening up the Terminal (CTRL+T) and entering the commands below. It will prompt you for your root password to allow installation – enter it to proceed.

Note: depending on your Linux distribution, you might not need all the packages. If the Terminal prompts ‘Unable to locate package’, simply continue without the package.

2. Download the ProtonVPN certificate and place it in the appropriate directory.

4. Open /etc/ipsec.conf with your favorite text editor (Nano was used for this demonstration) by entering sudo nano /etc/ipsec.conf

This is what you should see:

Читайте также:  Восстановить windows ноутбуке toshiba

Delete the text up to ‘Add connections here‘, and enter these parameters:

Instead of test, enter a name for your connection that you will use later.

Instead of tester, enter your IKEv2/OpenVPN username.

Instead of it-01.protonvpn.com, choose whatever server you want.

Then, press Ctrl+X to save, Y to confirm, and then hit Enter.

4. Add the credentials to the correct directory

Open /etc/ipsec.secrets with a text editor by entering sudo nano /etc/ipsec.secrets

Then, enter this text:

Note: instead of tester, enter your OpenVPN/IKEv2 username, and instead of test123, enter your OpenVPN/IKEv2 password.

Then, once again, press Ctrl+X, press Y to save and hit Enter.

After that, you will need to restart the IPSEC serivce by entering sudo ipsec restart

5. Setup is now complete. You can try connecting to your created IKEv2 connection.

To connect to the VPN server, enter: sudo ipsec up test

Instead of test, use the name of the connection that you’ve entered in the /etc/ipsec.conf file.

If you correctly set up the connection, this is what you should see:

Congratulations! You connected to ProtonVPN via the IKEv2 protocol. If you want to terminate your connection to the server, enter this command:

(Instead of test use the name of your connection)

Did it! Works for me, following the tutorial.
When you change the config or the secrets file you have to restart ipsec.

checking certificate status of “CN=us-nj-02.protonvpn.com”
certificate status is not available
using trusted ca certificate “C=CH, O=ProtonVPN AG, CN=ProtonVPN Root CA”
checking certificate status of “C=CH, O=ProtonVPN AG, CN=ProtonVPN Intermediate CA 1”
certificate status is not available
reached self-signed root ca with a path length of 1
authentication of ‘us-nj-02.protonvpn.com’ with RSA_EMSA_PKCS1_SHA2_256 successful
server requested EAP_IDENTITY (id 0x00), sending ‘XXXXXXXX’
generating IKE_AUTH request 2 [ EAP/RES/ID ]
sending packet: from 192.168.XXX.XXX[4500] to 67.202.83.122[4500] (96 bytes)
received packet: from 67.202.83.122[4500] to 192.168.XXX.XXX[4500] (96 bytes)
parsed IKE_AUTH response 2 [ EAP/REQ/MD5 ]
server requested EAP_MD5 authentication (id 0x01)
no EAP key found for hosts ‘XXXXXXXX’ – ‘us-nj-02.protonvpn.com’
EAP_MD5 method failed
generating INFORMATIONAL request 3 [ N(AUTH_FAILED) ]
sending packet: from 192.168.XXX.XXX[4500] to 67.202.83.122[4500] (80 bytes)
establishing connection ‘XXXXXXXX’ failed

Hello, we suggest contacting our customer support team with issues like this so we could solve them since we will need more information. https://protonvpn.com/support-form

Tried on a Raspberry Pi using the x86 Stretch – Works without issue.
=HOWEVER=
Linux Mint 19 results after successfully setting up…
————————————————–
initiating IKE_SA xxxxxxxx[2] to 67.202.83.122
generating IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) N(FRAG_SUP) N(HASH_ALG) N(REDIR_SUP) ]
sending packet: from 192.168.x.xxx[500] to 67.202.83.122[500] (880 bytes)
received packet: from 67.202.83.122[500] to 192.168.x.xxx[500] (38 bytes)
parsed IKE_SA_INIT response 0 [ N(INVAL_KE) ]
peer didn’t accept DH group CURVE_25519, it requested MODP_2048
initiating IKE_SA xxxxxxxx[2] to 67.202.83.122
generating IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) N(FRAG_SUP) N(HASH_ALG) N(REDIR_SUP) ]
sending packet: from 192.168.x.xxx[500] to 67.202.83.122[500] (1104 bytes)
received packet: from 67.202.83.122[500] to 192.168.x.xxx[500] (464 bytes)
parsed IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) N(FRAG_SUP) N(HASH_ALG) N(MULT_AUTH) ]
local host is behind NAT, sending keep alives
sending cert request for “C=CH, O=ProtonVPN AG, CN=ProtonVPN Root CA”
no IDi configured, fall back on IP address
establishing CHILD_SA xxxxxxxx<2>
generating IKE_AUTH request 1 [ IDi N(INIT_CONTACT) CERTREQ CPRQ(ADDR DNS) SA TSi TSr N(MOBIKE_SUP) N(NO_ADD_ADDR) N(MULT_AUTH) N(EAP_ONLY) N(MSG_ID_SYN_SUP) ]
sending packet: from 192.168.x.xxx[4500] to 67.202.83.122[4500] (320 bytes)
received packet: from 67.202.83.122[4500] to 192.168.x.xxx[4500] (1236 bytes)
parsed IKE_AUTH response 1 [ EF(1/3) ]
received fragment #1 of 3, waiting for complete IKE message
received packet: from 67.202.83.122[4500] to 192.168.x.xxx[4500] (1236 bytes)
parsed IKE_AUTH response 1 [ EF(2/3) ]
received fragment #2 of 3, waiting for complete IKE message
received packet: from 67.202.83.122[4500] to 192.168.x.xxx[4500] (644 bytes)
parsed IKE_AUTH response 1 [ EF(3/3) ]
received fragment #3 of 3, reassembling fragmented IKE message
parsed IKE_AUTH response 1 [ IDr CERT CERT AUTH EAP/REQ/ID ]
received end entity cert “CN=us-nj-02.protonvpn.com”
received issuer cert “C=CH, O=ProtonVPN AG, CN=ProtonVPN Intermediate CA 1”
using certificate “CN=us-nj-02.protonvpn.com”
using untrusted intermediate certificate “C=CH, O=ProtonVPN AG, CN=ProtonVPN Intermediate CA 1”
checking certificate status of “CN=us-nj-02.protonvpn.com”
certificate status is not available
using trusted ca certificate “C=CH, O=ProtonVPN AG, CN=ProtonVPN Root CA”
checking certificate status of “C=CH, O=ProtonVPN AG, CN=ProtonVPN Intermediate CA 1”
certificate status is not available
reached self-signed root ca with a path length of 1
authentication of ‘us-nj-02.protonvpn.com’ with RSA_EMSA_PKCS1_SHA2_256 successful
server requested EAP_IDENTITY (id 0x00), sending ‘ragnar.household’
generating IKE_AUTH request 2 [ EAP/RES/ID ]
sending packet: from 192.168.x.xxx[4500] to 67.202.83.122[4500] (96 bytes)
received packet: from 67.202.83.122[4500] to 192.168.x.xxx[4500] (96 bytes)
parsed IKE_AUTH response 2 [ EAP/REQ/MD5 ]
server requested EAP_MD5 authentication (id 0x01)
no EAP key found for hosts ‘XXXXXXXX’ – ‘us-nj-02.protonvpn.com’
EAP_MD5 method failed
generating INFORMATIONAL request 3 [ N(AUTH_FAILED) ]
sending packet: from 192.168.x.xxx[4500] to 67.202.83.122[4500] (80 bytes)
establishing connection ‘xxxxxxxx’ failed
————————————————-

Читайте также:  Mac os как отключить заставку

Hello! It would be the best if you contacted our customer support team in the first place! It seems that there is authentication issue or could be something wrong with certificates. Please let our team know here for further troubleshooting https://protonvpn.com/support-form

$ sudo ipsec up name
unable to resolve it-ch-13.protonvpn.com, initiate aborted
tried to checkin and delete nonexisting IKE_SA
establishing connection ‘name’ failed

Hello! Its hard to tell something about your current issue since we need more information, so please contact our customer support team. https://protonvpn.com/support-form

Verbose. No listing of servers. Still too clunky to be user friendly.

Hello, then please try using our Linux client tool. https://protonvpn.com/support/linux-vpn-tool/

It did not work.
sudo ipsec up ZZZZ gave:

generating IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) N(HASH_ALG) ]
sending packet: from 192.168.0.161[500] to 185.159.157.8[500] (1124 bytes)
received packet: from 185.159.157.8[500] to 192.168.0.161[500] (38 bytes)
parsed IKE_SA_INIT response 0 [ N(INVAL_KE) ]
peer didn’t accept DH group MODP_2048, it requested ECP_256

Hello! You seem to have missconfigured while following the guide, could you please retry and if no luck upon connecting, contact our customer support team. https://protonvpn.com/support-form

I just gave it a try because using “openvpn” from the command line was giving me trouble. Everything worked fine but I’m still not sure what the exact benefit is supposed to be vs. other options (client, etc.)…

Hello, This connection method could provide better connection speeds or could connect you if the openvpn ports are blocked on your network.

Ok tried this, on slackware 14.2
I am getting EAP_authentication error.
root@cunted:

# ipsec up PVPN
initiating IKE_SA PVPN[4] to

generating IKE_SA_INIT request 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) N(FRAG_SUP) N(HASH_ALG) N(REDIR_SUP) ]
sending packet: from

[500] (768 bytes)
received packet: from

[500] (264 bytes)
parsed IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) N(FRAG_SUP) N(HASH_ALG) N(MULT_AUTH) ]
local host is behind NAT, sending keep alives
sending cert request for “C=CH, O=ProtonVPN AG, CN=ProtonVPN Root CA”
no IDi configured, fall back on IP address
establishing CHILD_SA PVPN<4>
generating IKE_AUTH request 1 [ IDi N(INIT_CONTACT) CERTREQ CPRQ(ADDR DNS) SA TSi TSr N(MOBIKE_SUP) N(NO_ADD_ADDR) N(MULT_AUTH) N(EAP_ONLY) N(MSG_ID_SYN_SUP) ]
sending packet: from

[4500] (306 bytes)
received packet: from

[4500] (1248 bytes)
parsed IKE_AUTH response 1 [ EF(1/3) ]
received fragment #1 of 3, waiting for complete IKE message
received packet: from

[4500] (1248 bytes)
parsed IKE_AUTH response 1 [ EF(2/3) ]
received fragment #2 of 3, waiting for complete IKE message
received packet: from

[4500] (580 bytes)
parsed IKE_AUTH response 1 [ EF(3/3) ]
received fragment #3 of 3, reassembling fragmented IKE message
parsed IKE_AUTH response 1 [ IDr CERT CERT AUTH EAP/REQ/ID ]
received end entity cert “CN=nl-04.protonvpn.com”
received issuer cert “C=CH, O=ProtonVPN AG, CN=ProtonVPN Intermediate CA 1”
using certificate “CN=nl-04.protonvpn.com”
using untrusted intermediate certificate “C=CH, O=ProtonVPN AG, CN=ProtonVPN Intermediate CA 1”
checking certificate status of “CN=nl-04.protonvpn.com”
certificate status is not available
using trusted ca certificate “C=CH, O=ProtonVPN AG, CN=ProtonVPN Root CA”
checking certificate status of “C=CH, O=ProtonVPN AG, CN=ProtonVPN Intermediate CA 1”
certificate status is not available
reached self-signed root ca with a path length of 1
authentication of ‘nl-04.protonvpn.com’ with RSA_EMSA_PKCS1_SHA2_256 successful
server requested EAP_IDENTITY (id 0x00), sending ‘THISISNTMYREALUSERNAME’
EAP_IDENTITY not supported, sending EAP_NAK
generating IKE_AUTH request 2 [ EAP/RES/NAK ]
sending packet: from

[4500] (67 bytes)
received packet: from

[4500] (65 bytes)
parsed IKE_AUTH response 2 [ EAP/FAIL ]
received EAP_FAILURE, EAP authentication failed
generating INFORMATIONAL request 3 [ N(AUTH_FAILED) ]
sending packet: from

[4500] (65 bytes)
establishing connection ‘PVPN’ failed

Источник

Оцените статью