P2S 証明書認証 IKEv2 接続用の strongSwan VPN を構成する - Linux

この記事では、ユーザーが strongSwan を使用する Ubuntu Linux クライアントから VPN Gateway ポイント対サイト (P2S) VPN と証明書認証を使用して Azure 仮想ネットワーク (VNet) に接続するのを支援します。

開始する前に

開始する前に、正しい記事が表示されていることを確認します。 次の表は、Azure VPN Gateway P2S VPN クライアントで使用できる構成記事を示しています。 手順は、認証の種類、トンネルの種類、クライアント OS によって異なります。

認証 トンネルの種類 クライアントの OS VPN client
証明書
IKEv2、SSTP Windows ネイティブ VPN クライアント
IKEv2 macOS ネイティブ VPN クライアント
IKEv2 Linux strongSwan
OpenVPN Windows Azure VPN クライアント
OpenVPN クライアント バージョン 2.x
OpenVPN クライアント バージョン 3.x
OpenVPN macOS OpenVPN クライアント
OpenVPN iOS OpenVPN クライアント
OpenVPN Linux Azure VPN クライアント
OpenVPN クライアント
Microsoft Entra ID
OpenVPN Windows Azure VPN クライアント
OpenVPN macOS Azure VPN クライアント
OpenVPN Linux Azure VPN クライアント

前提条件

この記事では、次の前提条件が既に実行されていることを前提としています。

接続の要件

strongSwan クライアントと IKEv2 トンネル タイプを介した証明書認証を使用して Azure に接続するには、各接続クライアントに次のものが必要です。

  • 各クライアントが strongSwan を使用するように構成する必要があります。
  • クライアントには、適切な証明書がローカルにインストールされている必要があります。

ワークフロー

この記事のワークフローは次のとおりです。

  1. strongSwan をインストールします。
  2. 生成した VPN クライアント プロファイル構成パッケージに含まれている VPN クライアント プロファイル構成ファイルを表示します。
  3. 必要なクライアント証明書を見つけます。
  4. strongSwan を構成します。
  5. Azure に接続します。

証明書について

証明書認証の場合は、1 つのクライアント証明書を各クライアント コンピューターにインストールする必要があります。 使用するクライアント証明書は秘密キーを含めてエクスポートし、証明書パスにすべての証明書が含まれている必要があります。 さらに、一部の構成では、ルート証明書情報もインストールする必要があります。

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 クライアントに必要なすべての構成設定は、VPN クライアント プロファイル構成 zip ファイルに含まれています。 VPN クライアント プロファイル構成ファイルは、仮想ネットワークの P2S VPN ゲートウェイ構成に特化しています。 ファイルを生成した後に、P2S VPN 構成に変更があった場合は (VPN プロトコルの種類や認証の種類の変更など)、新しい VPN クライアント プロファイル構成ファイルを生成し、接続するすべての VPN クライアントに新しい構成を適用する必要があります。

生成してダウンロードした VPN クライアント プロファイル構成パッケージを見つけて解凍します。 Generic フォルダーには、構成に必要なすべての情報が含まれています。 Azure では、この構成用の mobileconfig ファイルは提供されません。

Generic フォルダーが表示されない場合は、次の項目を確認してから、もう一度 zip ファイルを生成します。

  • 構成のトンネルの種類を確認します。 IKEv2 がトンネルの種類として選択されていない可能性があります。
  • VPN ゲートウェイで、SKU が Basic ではないかを確認します。 VPN Gateway Basic SKU は IKEv2 をサポートしていません。 次に、IKEv2 を選択し、もう一度 zip ファイルを生成して、Generic フォルダーを取得します。

Generic フォルダーには、次のファイルが含まれています。

  • VpnSettings.xml。サーバー アドレスやトンネルの種類など、重要な設定が含まれています。
  • VpnServerRoot.cer。P2S 接続の設定中に Azure VPN Gateway を検証するために必要なルート証明書が含まれています。

VPN クライアントを構成する

VPN クライアント プロファイル ファイルが表示されたら、使用する手順に進みます。

GUI での手順

このセクションでは、strongSwan GUI を使用した構成について説明します。 次の手順は、Ubuntu 18.0.4 上で作成されました。 Ubuntu 16.0.10 は strongSwan GUI をサポートしません。 Ubuntu 16.0.10 を使う場合は、コマンド ラインを使う必要があります。 Linux および strongSwan のバージョンによっては、次に示す例が実際に表示される画面と一致しない可能性があります。

  1. [ターミナル] を起動し、例のコマンドを実行して strongSwan とその Network Manager をインストールします。

    sudo apt install network-manager-strongswan
    
  2. [Settings](設定)[Network](ネットワーク) の順に選択します。 + ボタンを選択して、新しい接続を作成します。

    [ネットワーク接続] ページを示すスクリーンショット。

  3. メニューから [IPsec/IKEv2 (strongswan)] を選び、ダブルクリックします。

    [VPN の追加] ページを示すスクリーンショット。

  4. [VPN の追加] ページで、VPN 接続の名前を追加します。

    接続の種類の選択を示すスクリーンショット。

  5. ダウンロードした VPN クライアント プロファイル構成ファイルに含まれる Generic フォルダーから VpnSettings.xml ファイルを開きます。 VpnServer というタグを検索して、"azuregateway" で始まり ".cloudapp.net" で終わる名前をコピーします。

    データのコピーを示すスクリーンショット。

  6. この名前を、 [ゲートウェイ] セクションの、新しい VPN 接続の [アドレス] フィールドに貼り付けます。 次に、 [証明書] フィールドの最後のフォルダー アイコンを選択して、Generic フォルダーに移動し、VpnServerRoot ファイルを選択します。

  7. 接続の [クライアント] セクションの [認証] で、 [Certificate/private key](証明書/秘密キー) を選びます。 [証明書][秘密キー] で、前に作成した証明書および秘密キーを選びます。 [オプション] で、 [Request an inner IP address](内部 IP アドレスを要求する) をオンにします。 その後、 [追加] を選択します。

    [内部 IP アドレスを要求する] を示すスクリーンショット。

  8. 接続を [On](オン) にします。

    コピーを示すスクリーンショット。

CLI での手順

このセクションでは、strongSwan CLI を使用した構成について説明します。

  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.secrets に追加します。

    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
    

次のステップ

その他の手順については、P2S Azure portal に関する記事に戻ります。