Время на прочтение5 мин
Количество просмотров194K
Сейчас все вокруг настраивают 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
В macOS поддерживается IKEv2 начиная с версии 10.11 (El Capitan). Создание подключения происходит через меню настроек сети.
Добавляем новое подключение. В качестве имени подключения задаем любое произвольное имя.
Для проверки подлинности сертификата, нужно указать доменное имя. При этом в поле «Server Address» можно указать IP-адрес сервера, а домен только в «Remote ID», тогда для подключения не будет выполняться DNS-резолв, и оно будет происходить чуть быстрее.
Логин и пароль пользователя указываем из файла /etc/ipsec.secrets
Настройка iOS
Настройку 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-клиентом и запускаем скрипт установки:
# запуск автоматической установки сервера IKEv2
wget https://raw.githubusercontent.com/jawj/IKEv2-setup/master/setup.sh
chmod u+x setup.sh
./setup.sh
....
# Введите имя домена направленного на IP-адрес сервера
# используйте сервис sslip.io если у вас нет домена
Hostname for VPN: 123-45-67-89.sslip.io
# Имя пользователя VPN
VPN username: coolguy
# пароль
VPN password (no quotes, please):
....
# скрипт запрос создать нового SSH-пользователя, этот шаг нельзя пропускать.
Шаг 3: Настройка клиента
Введенные реквизиты пользователя VPN теперь нужно использовать для настройки на клиенте. Важно использовать именно то доменное имя, которое вы вводили в Hostname for VPN.
Шаг 4: Добавление новых пользователей
Чтобы добавить нового пользователя в уже созданный сервер, отредактируйте файл /etc/ipsec.secrets.
# nano /etc/ipsec.secrets
123-45-67-89.sslip.io : RSA "privkey.pem"
coolguy : EAP "C00lPassword"
badguy : EAP "bAdP$$word"
После добавления пользователя выполните команду ipsec secrets чтобы Strongswan перечитал конфиг.
Заключение
Мы рассмотрели удобство IKEv2 со стороны пользователя. Администрирование такого сервера не сложнее, а иногда даже проще чем OpenVPN. Если вы только планируете организовать удаленный доступ для своих сотрудников, обязательно посмотрите в сторону IKEv2. Не заставляйте своих пользователей устанавливать лишние программы, если все необходимое уже есть на их компьютере. Это удобнее, безопаснее и намного прогрессивнее.
In this blog we’ll create VPN server wich will be leveraging IPsec Tunnel Mode with Internet Key Exchange version 2 (IKEv2).With the functionality provided by the IKEv2 Mobility and Multihoming protocol (MOBIKE), this tunneling protocol offers inherent advantages in scenarios where the client moves from one IP network to another (for example, from WLAN to WWAN).For example, this permits a user with an active IKEv2 VPN tunnel to disconnect a laptop from a wired connection, walk down the hall to a conference room, connect to a wireless network, and have the IKEv2 VPN tunnel automatically reconnected with no noticeable interruption to the user.
Installing Certificates to VPN server and VPN client
Creating certificate templates
In Certification Authority (CA),from CA console,right click Certificate Templates-Manage
Right-Click IPSec template-Duplicate template
On Request Handling tab click Allow private key to be exported
Click Extension tab-Application Policies-Edit
Remove IP Security IKE intermediate
then click Add and choose Server Authentication
Click Key Usage-Edit
Ensure that Digital signature is selected. If it is, click Cancel. If it is not, select it, and then click OK.
In the security tab-click Object Types-Computers-Add Domain Computers
Make sure Read,Enroll and Auto-Enroll is selected
In General tab give template a name
Now,right click Certification Template-New-Certificate Template to issue
Choose new template
Enrolling certificate on VPN server
On VPN server:start-run-mmc-Add/remove snap-in
Click Certificates-Add-Computer Account
Right click Personal-All tasks-Request New Certificate
Check certificate templates-Properties
Click Subject tab-Subject Name-Common name (from drop-down menu)-FQDN for VPN server-Add
Alternative Name-choose DNS-set FQDN for VPN server-ADD
New certificate should be created
This certificate should be exported and then imported to client machine
Exporting certificate
Right-click certificate-All tasks-Export
Export private key
Set password and specify file in which certificate should be saved.
Copy file to client computer
Importing file on client machine
This certificate should be imported to Trusted Root Certification Authority on client.
Start-run-mmc-add Certificate snap-in-local computer
Right click Trusted Root Certification Authorities-All task-import
Browse to copied file and enter password
Installing Roles
On Server install Network Policy Server and Remote Access roles
Open Routing and Remote Access console-right click server icon-Configure and Enable Routing and Remote Access
Remote access (dial-up or VPN)
Check VPN
Select internet facing interface
Define VPN address pool
We are not using RADIUS,intead we’ll use NPS
Right click Remote Access Logging-Launch NPS
Click Network Access Policies
Right click Connections to Microsoft Routing and Remote Access Server-Properties
Check Grant access
Click Constraints-Select Microsoft:Secured password (EAP-MSCHAP v2)
If it’s not selected add it
Enable user VPN access
In ADUS right click user-Dial-in-Allow access
Client setting
In hosts file add entry for VPN server (name must be equal to one specified in SSL certificate)
Creating VPN client connection
Use my insternet connection (VPN)
I’ll set up an internet connection later
In Internet address type VPN server name
Specify username/password
In Security tab,for Type of VPN select IKEv2-Data encryption-Require encryption-Authentication:Microsoft:Secured password (EAP-MSCHAP v2)
We can see that IKEv2 is used,client got address from our VPN pool (10.10.10.3)
В нашем справочнике есть статья, посвящённая настройке VPN-канала с использованием образа на основе Windows Server 2019, на котором развёрнут VPN-сервер с возможностью доступа к нему с использованием протокола L2TP. Данный образ позволяет организовать VPN-подключение что называется “из коробки”. В настоящем руководстве мы разберём альтернативный способ настройки VPN-канала на основе StrongSwan IKEv2/IPSec и подключения к нему из Windows и Android.
Для создания VPN-сервера необходимо зарегистрироваться в личном кабинете, после чего во вкладке Заказать
выбрать соответствующее расположение дата-центра. В нашем примере мы будем использовать Interxion, Амстердам.
Далее в разделе Конфигурация
укажите необходимые параметры создаваемой системы и затем в строке Шаблон сервера
из списка выберите StrongSwan IKEv2/IPSec - Debian 11
.
После оплаты и завершения процесса установки операционной системы перейдите во вкладку Мои серверы
, где в списке серверов появится новый VPS. Там вы сможете увидеть учётные данные для подключения к нему: IP-адрес, логин и пароль администратора системы. Та же информация поступит в виде сообщения на электронную почту, используемую вами для регистрации на хостинге.
Затем на своём локальном компьютере откройте браузер и в его адресной строке перейдите по адресу вида https://your-server-ip:5000
, где your-server-ip
– IP-адрес вашего сервера. При этом в открывшемся окне система попросит ввести соответствующие логин и пароль для подключения.
После успешной авторизации вы получите доступ к веб-интерфейсу VPN-сервера. Здесь для завершения его настройки кликните на ссылку произвести инициализацию
. В результате VPN-сервер применит текущую конфигурацию и создаст сертификат для подключения.
Подключение к VPN из Windows
Для подключения к созданному VPN-каналу из Windows на подключаемом компьютере установите сгенерированный сертификат. Для этого в веб-интерфейсе VPN-сервера кликните в корневой сертификат crt
, после чего откройте загруженный файл сертификата. В открывшемся окне нажмите Установить сертификат
.
Затем в разделе Расположение хранилища
выберите опцию Локальный компьютер
, после чего нажмите Далее
.
В следующем окне укажите опцию Поместить все сертификаты в следующее хранилище
и при помощи кнопки Обзор
из списка выберите Доверенные корневые центры сертификации
. Для продолжения нажмите Далее
.
Для того, чтобы завершить процесс импорта сертификата, нажмите Готово
.
После завершения работы мастера нажмите ОК
.
Далее в стартовом меню откройте Параметры
и там перейдите Сеть и Интернет
🠒 VPN
.
Здесь в разделе Подключения VPN
нажмите Добавить VPN
.
В открывшемся окне заполните следующие поля:
Имя подключения
– название создаваемого подключения (может быть любым);Имя или адрес сервера
– IP-адрес виртуального сервера;Тип VPN
– необходимо выбрать IKEv2;Тип данных для входа
– выберитеИмя пользователя и пароль
;Имя пользователя
– указано в разделеЛогин и пароль для доступа (EAP)
веб-интерфейса VPN-сервера;Пароль
– также указан в разделеЛогин и пароль для доступа (EAP)
веб-интерфейса VPN-сервера.
После чего нажмите Сохранить
.
Таким образом, новое VPN-подключение готово к использованию. Для его активации нажмите Подключиться
в строке, соответствующей созданному подключению.
Подключение к VPN из Android
Для подключения Android-устройства к VPN-серверу необходимо загрузить и установить на гаджет клиентское приложение StrongSwan.
Найти его можно воспользовавшись либо поиском в Google Play, либо ссылкой из веб-интерфейса VPN-сервера.
После установки StrongSwan перейдите в веб-интерфейс VPN-сервера и скачайте конфигурацию sswan для дальнейшей загрузки её в клиентское приложение.
В клиенте StrongSwan перейдите в главное меню и выберите Import VPN profile
.
Затем укажите приложению загруженный ранее файл конфигурации, введите логин, указанный в веб-интерфейсе VPN-сервера, и нажмите IMPORT
.
Теперь для подключения к VPN кликните в добавленный профиль, введите пароль и нажмите СОЕДИНИТЬ
.
В результате ваш гаджет подключиться к VPN-серверу.
Создание дополнительного пользователя
При инициализации сервера StrongSwan сервис создаёт пользователя, при помощи которого происходит авторизация во время подключения к VPN-каналу. Имя этого пользователя и его пароль указаны в веб-интерфейсе вашего сервера.
При этом, StrongSwan не допускает использование одного и того же пользователя при двух и более подключениях единовременно. Другими словами, подключение со второго узла произойдёт, и даже ранее установленное соединение останется активным, но трафик по первому подключению идти не будет. Исходя из этого, для использования VPN-канала с нескольких устройств одновременно необходимо создать учётные записи для каждого из этих клиентов.
Чтобы добавить в StrongSwan дополнительного пользователя, подключитесь к виртуальной машине по SSH и перейдите в каталог /etc
. Здесь откройте для редактирования файл ipsec.secrets
.
# cd /etc
# nano ipsec.secrets
И в этот файл дополнительной строкой добавьте нового пользователя, например youruser : EAP "Password1"
. В данном случае замените youruser
на имя создаваемого пользователя, а Password1
– на его пароль.
После чего закройте файл с сохранением внесённых изменений и перезапустите службу StrongSwan.
# systemctl restart strongswan-starter.service
После чего проверьте корректность добавления учётной записи, обновив страницу веб-интерфейса.
С этого момента вы сможете использовать нового пользователя для подключения к своему VPN-каналу.
Ссылки
https://interface31.ru/tech_it/2020/04/nastraivaem-ikev2-vpn-server-na-routerah-mikrotik.html
Настройка
Настройка Mikrotik IKEv2 VPN Server
Настройка сертификатов на VPN-Сервере Mikrotik
При создании сертификатов с использованием доменного имени подключиться с клиента по IP-адресу будет невозможно
Сервер IKEv2-VPN для подключения по внешнему IP-адресу сделать можно, но при изменении внешнего IP на микротике использовать этот VPN сервер будет невозможно
cloud.cless.pro — доменное имя, привязанное к внешнему IP-адресу микротика-впн-сервера, к которому будут подключаться VPN-клиенты
Создадим корневой центр сертификации
/certificate add name=ikev2_ca common-name=ikev2_ca days-valid=3650 key-usage=crl-sign,key-cert-sign key-size=2048
Подписываем корневой центр сертификации
192.168.17.8 — локальный адрес микрота как идентификатор
/certificate sign ikev2_ca ca-crl-host=192.168.17.8
Выпустим и подпишем сертификат сервера
/certificate add name=cloud.cless.pro common-name="cloud.cless.pro" subject-alt-name=DNS:"cloud.cless.pro" key-size=2048 days-valid=3650 key-usage=tls-server
/certificate sign cloud.cless.pro ca=ikev2_ca
Выпустим и подпишем сертификат клиента (пользователя VPN)
/certificate add name=SmirnovaMV common-name="SmirnovaMV" key-size=2048 days-valid=3650 key-usage=tls-client
/certificate sign SmirnovaMV ca=ikev2_ca
Экспортируем сертификат клиента в файл ОБЯЗАТЕЛЬНО С ПАРОЛЕМ
При экспорте сертификата без пароля ошибок не будет, при импорте файла сертификата без пароля в Windows ошибок тоже не будет, НО VPN-клиент на Windows при подключении будет выдавать ошибку
/certificate export-certificate SmirnovaMV type=pkcs12 export-passphrase=12345678
Получили файл сертификата «cert_export_SmirnovaMV.p12», который будем использовать далее на Windows машине для создания VPN-туннеля
Настройка Firewall Для разрешения трафика IPSec на VPN-Сервере Mikrotik
Разрешаем порты IPSEC udp/500,4500 на INPUT с внешнего интерфейса
/ip firewall filter add action=accept chain=input comment=IPSEC-IKEV2 dst-port=500,4500 in-interface=ether3-wan1 ipsec-policy=in,ipsec protocol=udp
Настройка IP-POOL для клиентов VPN на VPN-Сервере Mikrotik
Пул IP для клиентов VPN, подключающихся с Windows-машин
/ip pool add name=vpn_from_out ranges=172.16.17.10-172.16.17.254
Настройка IPSEC+IKEv2 на VPN-Сервере Mikrotik
/ip ipsec profile add dh-group=modp2048,modp1024 dpd-interval=2m dpd-maximum-failures=5 enc-algorithm=aes-128,3des hash-algorithm=sha1 lifetime=1d name=ikev2 nat-traversal=yes proposal-check=obey
/ip ipsec proposal add auth-algorithms=sha1 disabled=no enc-algorithms=aes-256-cbc,aes-192-cbc,aes-128-cbc lifetime=30m name=ikev2 pfs-group=none
vpn_from_out — пул IP для клиентов VPN, подключающихся с Windows-машин
split-include=192.168.17.0/24 — подсеть офиса за микротом с VPN-сервером, маршрут до этой сети появится на клиенте для доступа к сети за микротиком-впн-сервером
/ip ipsec mode-config add address-pool=vpn_from_out address-prefix-length=32 name=ikev2-cfg split-include=192.168.17.0/24 system-dns=yes
/ip ipsec policy group add name=ikev2-policies
/ip ipsec peer add disabled=no exchange-mode=ike2 name=ikev2-peer passive=yes profile=ikev2 send-initial-contact=yes
172.16.17.0/24 — подсеть для клиентов впн, подключающихся с Windows-машин
/ip ipsec policy add disabled=no dst-address=172.16.17.0/24 group=ikev2-policies proposal=ikev2 protocol=all src-address=0.0.0.0/0 template=yes
cloud.cless.pro — сертификат сервера
/ip ipsec identity add auth-method=digital-signature certificate=cloud.cless.pro disabled=no generate-policy=port-strict mode-config=ikev2-cfg peer=ikev2-peer policy-template-group=ikev2-policies
Настройка Windows 10 IKEv2 VPN Client
Копируем файл сертификата «cert_export_SmirnovaMV.p12» из микрота на Windows машину
Настраиваем клиент VPN
Статус подключения на Mikrotik VPN сервере
После успешного подключения с Windows смотрим статус пира на микроте
/ip ipsec active-peers print
... # ID STATE UPTIME PH2-TOTAL REMOTE-ADDRESS DYNAMIC-ADDRESS 0 RN SmirnovaMV established 1m23s 1 78.132.136.195 172.16.17.13 ...
Нерешенные проблемы
Клиенту на Windows отдается маршрут до внутренней подсети за микротиком 192.168.17.0/24, с клиента 17 подсеть пингуется норм,
НО с микротика-впн-сервера IP адрес клиента на Windows из пула (например, 172.16.17.13) не пингуется.
Пробовал создать бридж с адресом сервера 172.16.17.1 — безрезультатно.
Возможно проблема из-за того, что клиенту выдается адрес с префиксом маски /32:
IPv4-адрес. . . . . . . . . . . . : 172.16.17.13
Маска подсети . . . . . . . . . . : 255.255.255.255
Не нашел как отдать префикс /24 клиенту из настроек IPsec на микроте.
Разобраться.
Provide feedback
Saved searches
Use saved searches to filter your results more quickly
Sign up