Linux network manager ikev2

Настройка IKEv2 VPN соединения на Ubuntu 17

Эта инструкция подходит только для операционной системы Ubuntu 17.

Ubuntu 16 содержит устаревшие пакеты, которые работают не корректно.
Рекомендуем настроить OpenVPN подключение на Ubuntu 16.

Зайдите в раздел Все программы.

Введите в строку поиска: terminal и запустите Терминал.

Введите команду. Возможно потребуется ввод пароля.

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

Зайдите в VPN Settings.

Нажмите на знак +.

Выберите IPSec/IKEv2 (strongswan).

В разделе Подписки посмотрите домен для IKEv2 VPN, а также Логин и Пароль VPN.

Выполните следующие шаги:

  1. Напишите любое название подключения
  2. Домен IKEv2 VPN сервера из раздела Аккаунт
  3. Аутентификация EAP
  4. Логин VPN
  5. Нажмите на иконку пользователя для сохранения пароля
  6. Пароль VPN
  7. Поставьте галку
  8. Поставьте галку
  9. Нажмите Add

Подключитесь к IKEv2 VPN на Ubuntu 17.

IKEv2 VPN подключение успешно установлено.

Также можно подключиться к IKEv2 VPN через верхнее меню.

Источник

Linux network manager ikev2

Table of contents

A Bash script that takes Ubuntu Server 20.04 LTS or 18.04 LTS from clean install to production-ready IKEv2 VPN with strongSwan. Comments and pull requests welcome. It may still work on 17.10, 17.04 or 16.10 if you remove the version check, but these are not tested.

The VPN server identifies itself with a Let’s Encrypt certificate, so there’s no need for clients to install private certificates — they can simply authenticate with username and strong password (EAP-MSCHAPv2).

The only cipher set implemented is CNSA/RFC 6379 Suite B with confidentiality/encryption.

The box is firewalled with iptables and configured for unattended security upgrades, and the Let’s Encrypt certificate is set up to auto-renew, so it could be safe to forget about it all until 18.04 reaches end-of-life in 2023. (Note that iptables setup includes basic rate-limiting, dropping new connections if there have been 60+ connection attempts in the last 5 minutes).

The VPN is tested working with:

  • macOS 10.12 – 10.15, iOS 10 – 13 — Built-in clients. A .mobileconfig profile is generated for Mac and iOS, to set up secure ciphers and enable Connect on demand support.
  • Windows 10 Pro — Built-in client. PowerShell commands are generated to configure the VPN and secure ciphers.
  • Ubuntu (17.04 and presumably others) — Using strongSwan. A Bash script is generated to set this up.
  • Android — Using the official strongSwan app.

Configuration files, scripts and instructions are sent by email. They are also dropped in the newly-created non-root user’s home directory on the server (this point may be important, because VPS providers sometimes block traffic on port 25 by default and, even if successfully sent, conscientious email hosts will sometimes mark the email as spam).

  • There’s no IPv6 support — and, in fact, IPv6 networking is disabled — because supporting IPv6 prevents the use of forceencaps , and honestly also because I haven’t got to grips with the security implications ( ip6tables rules and so on).
  • The script won’t work as-is on 16.04 LTS because the certbot package is outdated, found under the name letsencrypt , and doesn’t renew certificates automatically.
  • Don’t use this unmodified on a server you use for anything else: it does as it sees fit with various wider settings that may conflict with what you’re doing.
  1. Pick a domain name for the VPN server and ensure that it already resolves to the correct IP by creating the appropriate A record in the DNS and making sure it has propagated. Let’s Encrypt needs this in order to create your server certificate.

Don’t want to use your own domain name here? You could try using the reverse DNS name provided by your server host, or an automatic IP/DNS alias service such as sslip.io, xip.io, nip.io, s.test.cab, or xip.lhjmmc.cn (earlier versions of this script used an sslip.io address by default). However, both of these options may fall foul of Let’s Encrypt’s per-domain rate limit of 50 certificates per week. Note that ephemeral AWS domain names like ec2-34-267-212-76.compute-1.amazonaws.com are not accepted by Let’s Encrypt.

Start with a clean Ubuntu 20.04 or 18.04 Server installation. The cheapest VPSs offered by Linode, OVH, vps.ag, Google, Hetzner and Vultr, and Scaleway’s ARM64-2GB, have all been tested working. On Scaleway, unblock SMTP ports in the admin panel and hard reboot the server first, or your configuration email will not be delivered. On Vultr, port 25 may also be blocked, but you won’t know, and the only way to fix it is to open a support ticket.

Читайте также:  Uefi driver windows 10

Optionally, set up key-based SSH authentication (alternatively, this may have been handled automatically by your server provider, or you may choose to stick with password-based authentication). This may require you to run some or all of the following commands, with appropriate substitutions, on the machine you’re going to be logging in from:

On your new server installation, become root , download the script, give it execute permissions, and run it:

You’ll be prompted to enter all the necessary details after the software updates and installations complete. If you are not using key-based SSH authentication, you must pick a really strong password for the login user when prompted, or your server will be compromised.

The part of your session where the script asks you questions should look something like this:

Once you’re up and running, use these commands for some insight into what’s going on:

If you ran this script before 13 September 2021, and used the generated PowerShell commands to set up Windows 10 clients, those clients may be unable to connect owing to a bug in Windows 10. If this is the case, see issue #126 and, if necessary, retrieve and run win10fix.sh .

Otherwise, if things don’t work out right away .

On the client: make sure you created the connection using the newly emailed .mobileconfig file or PowerShell commands. Setting it up manually via the OS GUI will not work, since it will default to insecure ciphers which the server has not been configured to support. Also note that .mobileconfig files generated with earlier iterations of this script may no longer be compatible, since the configured ciphers have changed from time to time.

On the server: check that network ingress for UDP on ports 500 and 4500 is enabled (on some cloud platforms you’ll have to add appropriate firewall rules to your virtual network). Also check that packet forwarding is enabled (on some cloud platforms this is controlled by a configuration setting that’s off by default).

Check the server logs on strongSwan startup and when you try to connect, and the client logs when you try to connect.

On the server: Log in via SSH, then sudo tail -f /var/log/syslog . To see startup logs, log in to another session and sudo ipsec restart there, then switch back. To see what’s logged during a connection attempt, try to connect from a client.

On the client: On a Mac, open Console.app in /Applications/Utilities. If connecting from an iPhone, plug the iPhone into the Mac. Pick the relevant device (in the bar down the left), filter the output (in the box at top right) to nesession , and try to connect. (On Windows or Linux I don’t know where you find the logs — if you know, feel free to write the explanation and send a pull request).

The setup script is now more or less idempotent — you should be able to run it repeatedly with no ill effects — so, when you’ve fixed any issues, simply run it again.

Читайте также:  Linux что такое trashbox

If you have a tricky question about strongSwan, it’s probably better to raise it with the strongSwan team than file an issue here.

To add or change VPN users, it’s:

Edit usernames and passwords as you see fit (but don’t touch the first line, which specifies the server certificate). The line format for each user is:

To exit nano it’s Ctrl + O then Ctrl + X , and to have strongSwan pick up the changes it’s:

If you’re on a pre-18.04 version of Ubuntu, it’s probably easiest to make a record of any changes to ipsec.secrets , blow the whole thing away and reinstall, then reinstate ipsec.secrets .

Note that you may also need to delete and recreate all your client connection settings using the updated PowerShell commands or .mobileconfig file, since there have been a few cipher changes over time.

Your traffic is not logged on the server, but if you’re feeling especially paranoid there are various things you could do to reduce logging further. A simple and somewhat drastic option (once you’ve got everything working) is:

We use a similar setup as a corporate VPN at PSYT. And I use this to bounce my personal web browsing via Europe, in the hope of giving Theresa May’s Investigatory Powers Bill the finger.

  • Fair security
  • Built-in clients for latest iOS, Mac and Windows (+ trustworthy free install on Android)
  • Connect on demand support on iOS and Mac
  • Robust to connection switching and interruptions via MOBIKE

Feel free to use Algo instead. It has similar aims, and now configures WireGuard too. However, it has many more moving parts, and requires several local installation steps before you even start setting up your VPN. This script is intended to be much simpler.

About

Set up Ubuntu Server 20.04 (or 18.04) as an IKEv2 VPN server

Источник

Почему я люблю 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 происходит из системного меню.

Читайте также:  Mac os mavericks для amd

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

  • Домен — для 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.

Клиент устанавливает защищенный 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. Не заставляйте своих пользователей устанавливать лишние программы, если все необходимое уже есть на их компьютере. Это удобнее, безопаснее и намного прогрессивнее.

Источник

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