ikev2_vpn_в_ubuntu_22.04

Настройка сервера IKEv2 VPN в Ubuntu 22.04

Internet Key Exchange v2 или IKEv2 – это протокол, который позволяет создавать прямые туннели IPSec между сервером и клиентом. IPSec обеспечивает шифрование сетевого трафика в виртуальных частных сетях IKEv2. IKEv2 изначально поддерживается на ряде платформ (OS X 10.11+, iOS 9.1+, Windows 10) без дополнительных приложений и легко решает проблемы с подключением клиентов.

Документация strongSwan

Для данного руководства потребуется следующее:

  • Один сервер Ubuntu 22.04;
  • пользователем без прав root с привилегиями sudo;
  • брандмауэр.

Вначале установим StrongSwan, демона IPSec с открытым исходным кодом, а затем настроим его как сервер VPN. Также, установим компонент инфраструктуры открытых ключей (PKI), чтобы создать центр сертификации (СА), который будет предоставлять учетные данные для нашей инфраструктуры.

sudo apt update
sudo apt install strongswan strongswan-pki libcharon-extra-plugins libcharon-extauth-plugins libstrongswan-extra-plugins

Пакет libcharon-extauth-plugins используется для обеспечения возможности аутентификации различных клиентов на сервере, с помощью имени пользователя и кодовой фразы.

После завершения установки, перейдем к созданию сертификатов.

Для идентификации на клиентских системах серверу IKEv2 требуется сертификат. Для упрощения формирования требуемого сертификата, пакет strongswan-pki включает утилиту pki, которая может сгенерировать центр сертификации и сертификаты сервера.

Для начала создадим несколько директорий для хранения всех активов, с которыми будем работать. Структура каталогов соответствует некоторым каталогам в /etc/ipsec.d, куда постепенно переместим все создаваемые элементы:

mkdir -p ~/pki/{cacerts,certs,private}

Затем заблокируем разрешения, чтобы другие пользователи не могли видеть приватные файлы:

chmod 700 ~/pki

Теперь, когда в нашем расположении есть структурой каталогов для хранения всех элементов, можно сгенерировать ключ root. Это будет 4096-битный ключ RSA, который будет использоваться для подписи корневого центра сертификации.

сгенерируем ключ:

pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/ca-key.pem

Если в процессе генерации получаем сообщение TPM 2.0 - could not load «libtss2-tcti-tabrmd.so.0», то следует установить следующий пакет:

sudo apt install libtss2-tcti-tabrmd0 -y

После этого, можно переходить к созданию корневого центра сертификации, используя ключ, который только что сгенерировали для подписания корневого сертификата:

pki --self --ca --lifetime 3650 --in ~/pki/private/ca-key.pem \
    --type rsa --dn "CN=VPN root CA" --outform pem > ~/pki/cacerts/ca-cert.pem

Флаг --lifetime 3650 используется для обеспечения действительности корневого сертификата центра сертификации на протяжении 10 лет. Корневой сертификат центра обычно не меняется, поскольку его необходимо перераспределять на каждый использующий его сервер и клиент. Исходя из этого, 10 лет – вполне безопасный срок действия по умолчанию.

Также можно изменить значение различимого имени distinguished name (DN) на любое другое имя по своему желанию. Обычное имя (поле CN) здесь используется только как индикатор, поэтому оно необязательно должно совпадать с чем-либо в инфраструктуре.

Теперь, когда имеется корневой центр сертификации, можно создать сертификат, который будет использовать VPN-сервер.

Теперь создадим сертификат и ключ для сервера VPN. Этот сертификат позволит клиентам проверять подлинность сервера, используя только что сгенерированный сертификат CA.

Вначале создаем закрытый ключ сервера VPN:

pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/server-key.pem

Затем создадим и подпишем сертификат сервера VPN, используя ключ центра сертификации, созданный на предыдущем шаге. Запустите следующую команду, но измените поля Common Name (CN) и Subject Alternate Name (SAN) на имя DNS или IP-адрес своего сервера VPN:

pki --pub --in ~/pki/private/server-key.pem --type rsa \
    | pki --issue --lifetime 1825 \
        --cacert ~/pki/cacerts/ca-cert.pem \
        --cakey ~/pki/private/ca-key.pem \
        --dn "CN=server_domain_or_IP" --san server_domain_or_IP \
        --flag serverAuth --flag ikeIntermediate --outform pem \
    >  ~/pki/certs/server-cert.pem

Указать DNS имя предпочтительнее, так как в случае изменения ip, придется перевыпускать ключ сервера и сертификаты клиентов.

Nota Bene! Если вместо имени DNS используете IP-адрес, потребуется указать несколько входов --san. Строка в предыдущем блоке команд, где вы указываете distinguished name (--dn …), должна быть дополнена еще одной строкой, например следующей:

--dn "CN=IP address --san @IP_address --san IP_address \

Причина появления дополнительной записи --san @IP_address заключается в том, что некоторые клиенты проверяют, есть ли в сертификате TLS запись DNS и запись IP-адреса для сервера, когда они проверяют его подлинность.

Опции:

  • --flag serverAuth – используется для указания того, что сертификат будет использоваться для аутентификации сервера, прежде чем будет установлен зашифрованный туннель.
  • --flag ikeIntermediate – используется для поддержки более старых клиентов macOS.

Теперь, когда сгенерированы все файлы TLS/SSL, необходимые StrongSwan, можно переместить их в каталог /etc/ipsec.d:

sudo cp -r ~/pki/* /etc/ipsec.d/

На этом шаге мы создали пару сертификатов, которые будут использоваться для защиты связи между клиентом и сервером. Также мы подписали сертификаты ключом CA, и теперь клиент сможет проверять подлинность сервера VPN, используя сертификат CA. После подготовки всех этих сертификатов мы переходим к настройке программного обеспечения.

Итак, подведем промежуточный итог. Была создана пара сертификатов, которые будут использоваться для защиты связи между клиентом и сервером. Также, сертификаты были подписали ключом ЦС, поэтому клиент сможет проверить подлинность VPN-сервера с помощью сертификата ЦС. Когда все сертификаты готовы, можно переходить к настройке SrongSwan.

StrongSwan имеет файл конфигурации по умолчанию с несколькими примерами, но большинство настроек нужно будет установить самостоятельно. Прежде чем начинать, создадим резервную копию файла для справки:

sudo mv /etc/ipsec.conf{,.original}

Создайте и откройте новый пустой файл конфигурации /etc/ipsec.conf

Nota Bene!: По мере работы с этим разделом по настройке серверной части VPN, мы столкнемся с настройками, которые относятся к левой и правой сторонам соединения. При работе с IPSec VPN левая сторона, по общему правилу, относится к локальной системе, которую мы настраиваем, в данном случае к серверу. Директивы правой стороны в этих настройках относятся к удаленным клиентам, таким как телефоны и другие хосты.

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

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

config setup
    charondebug="ike 1, knl 1, cfg 0"
    uniqueids=no

Затем создадим раздел конфигурации для сервера VPN. В нем укажем StrongSwan создать туннели IKEv2 VPN и автоматически загружать этот раздел конфигурации при запуске:

conn ikev2-vpn
    auto=add
    compress=no
    type=tunnel
    keyexchange=ikev2
    fragmentation=yes
    forceencaps=yes

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

. . .
conn ikev2-vpn
    . . .
    dpdaction=clear
    dpddelay=300s
    rekey=no

Затем настроим параметры IPSec левой стороны сервера. Каждый из следующих параметров гарантирует, что сервер настроен на прием соединений от клиентов и правильную идентификацию. Прежде чем, добавим настройки в файл /etc/ipsec.conf, дадим детальное описание каждой директивы:

  • left=%any – Значение %any гарантирует, что сервер будет использовать сетевой интерфейс, через который он получает входящие соединения, для последующего взаимодействия с клиентами. Например, если клиент, подключается через частную сеть, сервер будет использовать частный IP-адрес, с которого он получает трафик, до конца соединения.
  • leftid=@server_domain_or_IP – Этот параметр управляет именем, которое сервер представляет клиентам. В сочетании с параметром leftcert, параметр leftid гарантирует, что настроенное имя сервера и отличительное имя (DN), содержащееся в публичном сертификате, совпадают.
  • leftcert=server-cert.pem – Этот параметр – путь к публичному сертификату для сервера, который мы настроили в разделе Генерирование сертификата для сервера VPN. Без него сервер не сможет аутентифицировать себя с клиентами или завершить переговоры по настройке IKEv2.
  • leftsendcert=always – Значение always гарантирует, что любой клиент, подключающийся к серверу, всегда будет получать копию публичного сертификата сервера как часть начальной установки соединения.
  • leftsubnet=0.0.0.0/0 – Последняя опция левой стороны, которую мы добавим, сообщает клиентам о подсетях, доступных за сервером. В данном случае 0.0.0.0/0 используется для представления всего набора адресов IPv4, что означает, что сервер будет говорить клиентам отправлять весь их трафик через VPN по умолчанию.

Теперь, после знакомства, с каждой из опций «слева», добавьте их в файл:

. . .
conn ikev2-vpn
    . . .
    left=%any
    leftid=@server_domain_or_IP
    leftcert=server-cert.pem
    leftsendcert=always
    leftsubnet=0.0.0.0/0

Nota Bene! При настройке идентификатора сервера (leftid) символ @ нужно указывать только в случае, если ваш сервер VPN будет идентифицироваться по доменному имени:

leftid=@vpn.example.com

Если сервер будет идентифицироваться по IP-адресу, просто указываем IP-адрес:

leftid=your_server_ip

Далее, настроим параметры IPSec «правой» стороны клиента. Каждый из следующих параметров указывает серверу, как принимать соединения от клиентов, как клиенты должны аутентифицироваться на сервере, а также диапазоны частных IP-адресов и DNS-серверов, которые будут использовать клиенты. Прежде чем добавлять параметры в /etc/ipsec.conf, детально их опишем:

  • right=%any – Параметр %any для правой части соединения дает серверу указание принимать входящие соединения от любого удаленного клиента.
  • rightid=%any – Эта опция гарантирует, что сервер не будет отклонять соединения от клиентов, которые предоставляют идентификатор до создания зашифрованного туннеля.
  • rightauth=eap-mschapv2 – Эта опция настраивает метод аутентификации, который клиенты будут использовать для аутентификации на сервере. eap-mschapv2 используется для широкой поддержки совместимости клиентов, таких как Windows, macOS и устройства Android.
  • rightsourceip=10.10.10.0/24 – Этот параметр, предписывает серверу назначать частные IP-адреса клиентам из указанного пула 10.10.10.0/24.
  • rightdns=8.8.8.8,8.8.4.4 – Эти IP, являются публичными DNS-резолверами Google. Их можно изменить, чтобы использовать другие публичные резолверы, резолверы VPN-сервера или любые другие резолверы, к которым могут обращаться клиенты.
  • rightsendcert=never – Эта опция указывает серверу, что клиентам не нужно отправлять сертификат для аутентификации.

Добавим опции правой стороны в конфигуратор:

conn ikev2-vpn
    . . .
    right=%any
    rightid=%any
    rightauth=eap-mschapv2
    rightsourceip=10.10.14.0/24
    rightdns=8.8.8.8,8.8.4.4
    rightsendcert=never

Далее, укажем StrongSwan, запрашивать у клиента учетные данные пользователя при подключении:

. . .
conn ikev2-vpn
    . . .
    eap_identity=%identity

И наконец, добавим следующие строки для поддержки клиентов на базе Linux, Windows, macOS, iOS и Android. Эти строки определяют различные алгоритмы обмена ключами, хеширования, аутентификации и шифрования (еще их называют набор шифров), которые StrongSwan разрешит использовать разным клиентам:

. . .
conn ikev2-vpn
    . . .
    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

Каждый поддерживаемый набор шифров отделяется от других запятой. Например, chacha20poly1305-sha512-curve25519-prfsha512 – это один набор, а aes256gcm16-sha384-prfsha384-ecp384 – другой. Перечисленные здесь наборы шифров выбраны для обеспечения максимально широкой совместимости с клиентами Windows, macOS, iOS, Android и Linux.

Полный файл конфигурации должен выглядеть следующим образом:

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.14.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!

Теперь, когда имеется настроенный VPN сервер, можно приступить к созданию учетных записей.

Теперь, когда VPN-сервер настроен на прием клиентских соединений, но учетные данные еще не настроены. Нам нужно настроить несколько параметров в специальном файле конфигурации ipsec.secrets:

  • Нужно указать StrongSwan, где можно найти закрытый ключ для сертификата сервера, чтобы сервер мог пройти аутентификацию на стороне клиента;
  • Также потребуется список пользователей, которым будет разрешено подключаться к VPN.

Редактируем /etc/ipsec.secrets: Вначале, укажем StrongSwan, где можно найти закрытый ключ:

: RSA "server-key.pem"

В данном файле очень важен синтаксис. Убедимся, что строка начинается с символа : и что после него стоит пробел, вся строка читалась как – : RSA "server-key.pem".

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

your_username : EAP "your_password"

На этом, настройка параметров VPN завершена и теперь можем перезапустить службу VPN, чтобы применить новую конфигурацию:

sudo systemctl restart strongswan-starter

Итак, мы полностью настроили параметры сервера и учетные данные пользователя на сервере VPN. И теперь самое время перейти к самой важной части: настройке брандмауэра.

После завершения настройки StrongSwan, нужно настроить брандмауэр, чтобы разрешить прохождение и перенаправление трафика VPN.

Настраиваем ufw. Для начала:

sudo ufw allow OpenSSH
sudo ufw enable

Теперь добавьте правило, которое будет разрешать трафик UDP на стандартных портах IPSec 500 и 4500:

sudo ufw allow 500,4500/udp

Затем отредактируем один из файлов конфигурации UFW, чтобы добавить несколько политик нижнего уровня для маршрутизации и перенаправления пакетов IPSec. Но прежде чем мы сможем сделать это, нам нужно определить, какой сетевой интерфейс на нашем сервере используется для доступа в Интернет. Определите этот интерфейс с помощью запроса устройства, связанного с маршрутом по умолчанию:

ip route show default

Публичный интерфейс должен содержать слово dev. Например, в этом результате показан интерфейс с именем eth0:

# Output
default via 192.168.113.1 dev eth0 proto static

Когда у нас есть общедоступный сетевой интерфейс, отредактируем файл /etc/ufw/before.rules: Правила из этого файла добавляются в брандмауэр перед остальными правилами ввода и вывода. Они используются для настройки перевода сетевых адресов (NAT), чтобы сервер мог корректно настраивать соединения между клиентами и сетью Интернет.

Добавим в верхнюю часть файла (перед строкой *filter) следующий блок конфигурации: Изменим каждый экземпляр eth0 в конфигурации выше для соответствия имени интерфейса, которое определили с помощью ip route. Строки *nat создают правила, благодаря которым, брандмауэр может обеспечивать маршрутизацию и управление трафиком между клиентами VPN и интернетом. Строка *mangle позволяет настроить максимальный размер сегмента пакета, чтобы предотвратить возможные проблемы с некоторыми клиентами VPN:

*nat
-A POSTROUTING -s 10.10.14.0/24 -o eth0 -m policy --pol ipsec --dir out -j ACCEPT
-A POSTROUTING -s 10.10.14.0/24 -o eth0 -j MASQUERADE
COMMIT
 
*mangle
-A FORWARD --match policy --pol ipsec --dir in -s 10.10.14.0/24 -o eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360
COMMIT
 
*filter
:ufw-before-input - [0:0]
:ufw-before-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-not-local - [0:0]
. . .

После строки *filter и строк определения цепочки нужно добавить еще один блок конфигурации:

. . .
*filter
:ufw-before-input - [0:0]
:ufw-before-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-not-local - [0:0]
 
-A ufw-before-forward --match policy --pol ipsec --dir in --proto esp -s 10.10.14.0/24 -j ACCEPT
-A ufw-before-forward --match policy --pol ipsec --dir out --proto esp -d 10.10.14.0/24 -j ACCEPT

Эти строки указывают брандмауэру перенаправлять трафик ESP (Encapsulating Security Payload защищенная инкапсуляция полезной нагрузки), чтобы дать клиентам VPN возможность подключения. ESP обеспечивает дополнительную защиту пакетов VPN, когда они проходят через ненадежные сети.

Прежде чем перезапустить брандмауэр, нам нужно изменить некоторые параметры ядра сети, чтобы разрешить маршрутизацию с одного интерфейса на другой. Файл, который контролирует эти настройки – /etc/ufw/sysctl.conf.

Для начала необходимо активировать перенаправление пакетов IPv4, чтобы трафик мог перемещаться между VPN и публичными сетями на сервере. Далее мы отключим обнаружение путей MTU, чтобы предотвратить проблемы с фрагментацией пакетов. И наконец, запретим перенаправление ICMP и отправку перенаправлений ICMP, чтобы предотвратить man-in-the-middle атаки.

Итак, редактируем /etc/ufw/sysctl.conf добавьте следующею настройку в конце файла, чтобы активировать перенаправление пакетов между интерфейсами:

...
net/ipv4/ip_forward=1

Далее заблокируем отправку и получение пакетов перенаправления ICMP:

...
net/ipv4/conf/all/accept_redirects=0
net/ipv4/conf/all/send_redirects=0

И наконец, отключим обнаружение путей MTU, добавив следующую строку в конец файла:

...
net/ipv4/ip_no_pmtu_disc=1

Принимаем изменения:

sudo sysctl -p

Теперь можем активировать все изменения путем отключения и повторного подключения брандмауэра, поскольку UFW применяет эти настройки во время каждой перезагрузки.

sudo ufw disable
sudo ufw enable

Мы завершили подготовку, и пришло время для тестирования. Вначале нужно скопировать созданный нами сертификат CA и установить его на клиентские устройства, которые будут подключаться к VPN. Для этого удобнее всего вывести содержимое файла сертификата:

cat /etc/ipsec.d/cacerts/ca-cert.pem

Скопируем вывод, включая строки -----BEGIN CERTIFICATE----- и -----END CERTIFICATE-----, и сохраним их в файл с понятным именем, например, ca-cert.pem. Созданный файл должен иметь расширение .pem.

Любым удобным способом, передадим ca-cert.pem клиенту.

Существует множество способов импорта корневого сертификата и настройки Windows для подключения к VPN. Первый метод использует графические инструменты для каждого шага. Второй метод использует команды PowerShell, которые могут выполняться с помощью скриптов и меняться в зависимости от конфигурации VPN.

Эта инструкция протестированы на установках Windows 10, использующих версии 1903 и 1909.

Настройка Windows с помощью графических инструментов

Вначале импортировать сертификат root, выполнив следующие шаги:

  1. Нажимаем WINDOWS+R, чтобы открыть диалоговое окно Выполнить, и вводим mmc.exe, чтобы открыть консоль управления Windows.
  2. Из меню Файл перейдите в раздел Добавить или удалить оснастку, выберите Сертификаты из списка доступных оснасток и нажмите Добавить.
  3. Чтобы разрешить VPN работать для любых пользователей, выберите Учетная запись компьютера и нажмите Далее.
  4. Поскольку мы выполняем настройку на локальном компьютере, выберите пункт Локальный компьютер и нажмите Готово.
  5. Под узлом Корень консоли откройте запись Сертификаты (локальный компьютер), раскройте Доверенные корневые центры сертификации и выберите запись Сертификаты.
  6. В меню Действие выберите пункт Все задачи и нажмите Импорт, чтобы открыть мастер импорта сертификатов. Нажмите Далее, чтобы пролистать вводное окно.
  7. На экране Импортируемый файл нажмите кнопку Обзор, убедитесь, что вы изменили тип файла с X.509 Certificate (.cer;.crt) на All Files (.) и выберите сохраненный ранее файл ca-cert.pem. Затем нажимаем Далее.
  8. Убедитесь, что Хранилище сертификатов имеет значение Доверенные корневые центры сертификации и намаем Далее.
  9. Нажимаем Готово, чтобы импортировать сертификат.

Настройка Windows с помощью PowerShell
Для импорта корневого сертификата СА с помощью PowerShell сначала откройте командную строку PowerShell с правами администратора.

Затем импортируем сертификат, используя командлет PowerShell Import-Certificate. В следующей команде первый аргумент -CertStoreLocation гарантирует, что сертификат импортируется в хранилище доверенных корневых центров сертификации компьютера, чтобы все программы и пользователи могли проверить сертификат сервера VPN. Аргумент -FilePath должен указать расположение, куда скопируем сертификат. В следующем примере путь – C:\Users\UserName\Documents\ca-cert.pem

Import-Certificate `
    -CertStoreLocation cert:\LocalMachine\Root\ `
    -FilePath C:\users\UserName\Documents\ca-cert.pem

Вывод будет примерно такой:

Output
   PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\Root
 
Thumbprint                                Subject
----------                                -------
DB00813B4087E9367861E8463A60CEA0ADC5F002  CN=VPN root CA

Теперь настроим VPN с помощью PowerShell. Подставляем имя DNS или IP-адрес сервера в строку -ServerAddress. Различные флаги обеспечат корректную настройку Windows с необходимыми параметрами безопасности, которые соответствуют опциям, заданным в /etc/ipsec.conf:

Add-VpnConnection -Name "VPN Connection" `
    -ServerAddress "server_domain_or_IP" `
    -TunnelType "IKEv2" `
    -AuthenticationMethod "EAP" `
    -EncryptionLevel "Maximum" `
    -RememberCredential

Если команда выполнена успешно, никакого вывода не увидим. Чтобы убедиться, что VPN настроен корректно, используем командлет Get-VPNConnection:

Name                  : VPN Connection
ServerAddress         : server_ip
AllUserConnection     : False
Guid                  : {B055A1AB-175C-4028-B4A8-D34309A2B20E}
TunnelType            : Ikev2
AuthenticationMethod  : {Eap}
EncryptionLevel       : Maximum
L2tpIPsecAuth         :
UseWinlogonCredential : False
EapConfigXmlStream    : #document
ConnectionStatus      : Disconnected
RememberCredential    : True
SplitTunneling        : False
DnsSuffix             :
IdleDisconnectSeconds : 0

По умолчанию Windows выбирает более старые и медленные алгоритмы. Запустим командлет Set-VpnConnectionIPsecConfiguration для обновления параметров шифрования, которые будет использовать Windows для обмена ключами IKEv2, а также, чтобы провести шифрование пакетов:

Set-VpnConnectionIPsecConfiguration -Name "VPN Connection" `
    -AuthenticationTransformConstants GCMAES256 `
    -CipherTransformConstants GCMAES256 `
    -DHGroup ECP384 `
    -IntegrityCheckMethod SHA384 `
    -PfsGroup ECP384 `
    -EncryptionMethod GCMAES256

Если хотим удалить соединение VPN и перенастроить его с другими опциями, запустим командлет </html>Remove-VpnConnection</html>

Remove-VpnConnection -Name "VPN Connection" -Force

С помощью флага -Force можно пропустить предложение подтвердить удаление.

Чтобы подключиться с компьютера под управлением Ubuntu, можно настроить и управлять StrongSwan как службой или использовать разовую команду при каждой попытке подключения. Далее приводятся инструкции для обоих случаев.

Управление StrongSwan как службой

sudo apt update
sudo apt install strongswan libcharon-extra-plugins

Теперь нам потребуется копия сертификата СА в директории /etc/ipsec.d/cacerts, чтобы клиент мог проверить подлинность сервера. Запустите следующую команду, чтобы скопировать файл ca-cert.pem в каталог:

sudo cp /tmp/ca-cert.pem /etc/ipsec.d/cacerts

Чтобы VPN запускалась только по требованию, используем systemctl, чтобы отключить автоматический запуск StrongSwan:

sudo systemctl disable --now strongswan-starter

Затем укажем имя пользователя и пароль, которые будут использоваться для аутентификации на сервере VPN. Редактируем /etc/ipsec.secrets:

your_username : EAP "your_password"

Наконец, отредактируем файл /etc/ipsec.conf, чтобы настроить клиент в соответствии с конфигурацией сервера:

config setup
 
conn ikev2-rw
    right=server_domain_or_IP
    # This should match the `leftid` value on your server's configuration
    rightid=server_domain_or_IP
    rightsubnet=0.0.0.0/0
    rightauth=pubkey
    leftsourceip=%config
    leftid=username
    leftauth=eap-mschapv2
    eap_identity=%identity
    auto=start

Ну и управляем подключением:

sudo systemctl start strongswan-starter
sudo systemctl stop strongswan-starter


Использование клиента charon-cmd для одноразовых подключений

Необходимо установить плагины для аутентификации:

sudo apt install strongswan libcharon-extra-plugins

Также, потребуется копия сертификата СА в директории /etc/ipsec.d/cacerts, чтобы клиент мог проверить подлинность сервера. Запустите следующую команду, чтобы скопировать файл ca-cert.pem в каталог:

sudo cp /tmp/ca-cert.pem /etc/ipsec.d/cacerts

На этом этапе, уже можно подключиться к серверу VPN с помощью charon-cmd, используя сертификат СА сервера, IP-адрес сервера VPN и настроенное имя пользователя:

sudo charon-cmd --cert ca-cert.pem --host vpn_domain_or_IP --identity your_username

При запросе указываем пароль пользователя. После этого, подключаемся к VPN. Чтобы отключиться, намаем CTRL+C ждем, пока соединение не будет закрыто.

Посмотреть статус активных сессий

sudo ipsec status
  • ikev2_vpn_в_ubuntu_22.04.txt
  • Последнее изменение: 2022/05/19 21:51
  • admin