Поделиться через


Настройка VPN strongSwan для подключений IKEv2 для проверки подлинности сертификата P2S — Linux

В этой статье показано, как подключиться к виртуальной сети Azure с помощью VPN-подключения типа VPN-шлюз "точка — сеть" (P2S) и проверки подлинности сертификатов из клиента Ubuntu Linux с помощью strongSwan.

Подготовка к работе

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

Проверка подлинности Тип туннеля ОС клиента VPN-клиент
Сертификат
IKEv2, SSTP Windows Собственный VPN-клиент
IKEv2 macOS Собственный VPN-клиент
IKEv2 Linux strongSwan
OpenVPN Windows VPN-клиент Azure
Клиент OpenVPN версии 2.x
Клиент OpenVPN версии 3.x
OpenVPN macOS Клиент OpenVPN
OpenVPN iOS Клиент OpenVPN
OpenVPN Linux VPN-клиент Azure
Клиент OpenVPN
Microsoft Entra ID
OpenVPN Windows VPN-клиент Azure
OpenVPN macOS VPN-клиент Azure
OpenVPN Linux VPN-клиент Azure

Необходимые компоненты

В этой статье предполагается, что вы уже выполнили следующие предварительные требования:

Требования к подключению

Чтобы подключиться к Azure с помощью клиента strongSwan и проверки подлинности сертификата через тип туннеля IKEv2, каждому клиенту, подключающимся, требуются следующие элементы:

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

Рабочий процесс

Рабочий процесс для этой статьи:

  1. Установите strongSwan.
  2. Просмотрите файлы конфигурации профиля VPN-клиента, содержащиеся в созданном пакете конфигурации профиля VPN-клиента.
  3. Найдите все необходимые сертификаты клиента.
  4. Настройка strongSwan.
  5. Подключитесь к Azure.

Сведения о сертификатах

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

Дополнительные сведения о сертификатах для Linux см. в следующих статьях:

Установка strongSwan

Следующая конфигурация использовалась при указании команд:

  • Компьютер: Ubuntu Server 18.04
  • Зависимости: strongSwan

Чтобы установить необходимую конфигурацию strongSwan, используйте следующие команды:

sudo apt-get update
sudo apt-get upgrade
sudo apt install strongswan
sudo apt install strongswan-pki
sudo apt install libstrongswan-extra-plugins
sudo apt install libtss2-tcti-tabrmd0

Просмотр файлов конфигурации профиля VPN-клиента

При создании пакета конфигурации профиля VPN-клиента все необходимые параметры конфигурации для VPN-клиентов содержатся в ZIP-файле конфигурации профиля VPN-клиента. Файлы конфигурации профиля VPN-клиента относятся к конфигурации VPN-шлюза P2S для виртуальной сети. Если после создания файлов есть какие-либо изменения в конфигурации VPN P2S, например изменения типа VPN-протокола или типа проверки подлинности, необходимо создать новые файлы конфигурации профиля VPN-клиента и применить новую конфигурацию ко всем VPN-клиентам, которые требуется подключить.

Найдите и распакуйте созданный и скачанный пакет конфигурации профиля VPN-клиента. В папке Generic можно найти все необходимые для конфигурации сведения. Azure не предоставляет файл mobileconfig для этой конфигурации.

Если вы не видите папку Generic, проверьте следующие элементы, а затем создайте ZIP-файл еще раз.

  • Проверьте тип туннеля для вашей конфигурации. Скорее всего, вы не выбрали IKEv2 в качестве типа туннеля.
  • В VPN-шлюзе убедитесь в том, что номер SKU отличается от базового. VPN-шлюз со SKU "Базовый" не поддерживает IKEv2. Затем выберите IKEv2 и создайте ZIP-файл еще раз для получения папки Generic.

Эта папка содержит следующие файлы:

  • Файл VpnSettings.xml — содержит такие важные параметры, как адрес сервера и тип туннеля.
  • Файл VpnServerRoot.cer содержит корневой сертификат, который требуется для проверки VPN-шлюза Azure при настройке подключения типа "точка — сеть".

Настройка VPN-клиента

После просмотра файлов профилей VPN-клиента перейдите к инструкциям, которые вы хотите использовать:

Шаги GUI

В этом разделе описана конфигурация с помощью графического интерфейса strongSwan. Приведенные ниже инструкции были созданы в Ubuntu 18.0.4. Ubuntu 16.0.10 не поддерживает графический пользовательский интерфейс strongSwan. Использовать Ubuntu 16.0.10 можно только с помощью командной строки. Следующие примеры могут не соответствовать отображаемым экранам в зависимости от версии Linux и strongSwan.

  1. Откройте приложение Terminal, чтобы установить strongSwan и его Network Manager, выполнив команду из примера.

    sudo apt install network-manager-strongswan
    
  2. Выберите Settings (Параметры), а затем — Network (Сеть). Нажмите кнопку +, чтобы создать подключение.

    Снимок экрана, на котором показана страница сетевых подключений.

  3. В меню выберите IPSec/IKEv2 (strongSwan) и дважды щелкните.

    Снимок экрана, на котором показана страница добавления VPN.

  4. На странице Add VPN (Добавление VPN) добавьте имя VPN-подключения.

    Снимок экрана, на котором показан выбор типа подключения.

  5. Откройте файл VpnSettings.xml из папки Generic в загруженных файлах конфигурации профиля VPN-клиента. Найдите тег VpnServer и скопируйте имя, начиная с azuregateway и заканчивая .cloudapp.net.

    Снимок экрана, на котором показан интерфейс копирования данных.

  6. Вставьте это имя в поле Address (Адрес) нового VPN-подключения в разделе Gateway (Шлюз). Затем щелкните значок папки в конце поля Certificate (Сертификат), перейдите в папку Generic и выберите файл VpnServerRoot.

  7. В разделе Client (Клиент) подключения для параметра Authentication (Аутентификация) выберите Certificate/private key (Сертификат/закрытый ключ). Для параметров Certificate (Сертификат ) и Private key (Закрытый ключ) выберите созданные ранее сертификат и закрытый ключ. В разделе Options (Параметры) выберите Request an inner IP address (Запросить внутренний IP-адрес). а затем щелкните Добавить.

    Снимок экрана, на котором показан интерфейс запроса внутреннего IP-адреса.

  8. Включите подключение.

    Снимок экрана, на котором показано копирование.

Шаги CLI

В этом разделе описана конфигурация с помощью интерфейса командной строки strongSwan.

  1. Из файлов конфигурации профиля VPN-клиента Generic копируйте или переместите файл VpnServerRoot.cer в папку /etc/ipsec.d/cacerts.

  2. Скопируйте или переместите файлы, созданные в /etc/ipsec.d/certs и /etc/ipsec.d/private/ соответственно. Эти файлы являются сертификатом клиента и закрытым ключом, они должны находиться в соответствующих каталогах. Используйте следующие команды:

    sudo cp ${USERNAME}Cert.pem /etc/ipsec.d/certs/
    sudo cp ${USERNAME}Key.pem /etc/ipsec.d/private/
    sudo chmod -R go-rwx /etc/ipsec.d/private /etc/ipsec.d/certs
    
  3. Выполните следующую команду, чтобы заметить имя узла. Это значение потребуется вам на следующем шаге.

    hostnamectl --static
    
  4. Откройте файл VpnSettings.xml и скопируйте значение <VpnServer>. Это значение потребуется вам на следующем шаге.

  5. Измените значения в приведенном ниже примере, а затем добавьте этот код в файл конфигурации /etc/ipsec.conf.

    conn azure
          keyexchange=ikev2
          type=tunnel
          leftfirewall=yes
          left=%any
          # Replace ${USERNAME}Cert.pem with the key filename inside /etc/ipsec.d/certs  directory. 
          leftcert=${USERNAME}Cert.pem
          leftauth=pubkey
          leftid=%client # use the hostname of your machine with % character prepended. Example: %client
          right= #Azure VPN gateway address. Example: azuregateway-xxx-xxx.vpn.azure.com
          rightid=% #Azure VPN gateway FQDN with % character prepended. Example: %azuregateway-xxx-xxx.vpn.azure.com
          rightsubnet=0.0.0.0/0
          leftsourceip=%config
          auto=add
          esp=aes256gcm16
    
  6. Добавьте значения секрета в /etc/ipsec.secret.

    Имя PEM-файла должно соответствовать тому, что использовалось ранее в качестве файла ключа клиента.

    : RSA ${USERNAME}Key.pem  # Replace ${USERNAME}Key.pem with the key filename inside /etc/ipsec.d/private directory. 
    
  7. Выполните следующие команды:

    sudo ipsec restart
    sudo ipsec up azure
    

Следующие шаги

Дополнительные действия см. в статье портал Azure P2S.