RADIUS 認証を使用して VNet へのポイント対サイト接続を構成する: PowerShell

この記事では、RADIUS 認証を使用するポイント対サイト (P2P) 接続を備えた VNet を作成する方法について説明します。 この構成は、Resource Manager デプロイ モデルについてのみ使用できます。 この構成は、PowerShell または Azure Portal を使用して作成できます。

ポイント対サイト VPN ゲートウェイでは、個々のクライアント コンピューターから仮想ネットワークへの、セキュリティで保護された接続を作成することができます。 P2P VPN 接続は、自宅や会議室でのテレワークなど、リモートの場所から VNet に接続する場合に便利です。 P2S VPN は、VNet への接続が必要なクライアントがごく少ない場合に、サイト対サイト VPN の代わりに使用するソリューションとしても便利です。

P2S VPN 接続は、Windows デバイスと Mac デバイスから開始されます。 この記事は、認証に RADIUS サーバーを使用して P2S 構成を設定する際に役立ちます。 別の方法を使用して認証する場合は、次の記事を参照してください。

P2S 接続に VPN デバイスや公開 IP アドレスは必要ありません。 P2S では、SSTP (Secure Socket トンネリング プロトコル)、OpenVPN、または IKEv2 経由の VPN 接続が作成されます。

  • SSTP は、Windows クライアント プラットフォームでのみサポートされる TLS ベースの VPN トンネルです。 ファイアウォールを通過できるため、接続元の場所を問わず Windows デバイスを Azure に接続する際の理想的なオプションとなっています。 サーバー側では、TLS バージョン 1.2 のみをサポートしています。 パフォーマンス、スケーラビリティ、セキュリティを向上させるには、代わりに OpenVPN プロトコルの使用を検討してください。

  • SSL/TLS ベースの VPN プロトコルである OpenVPN® プロトコル。 ほとんどのファイアウォールは、TLS で使用されるアウトバウンド TCP ポート 443 を開いているため、TLS VPN ソリューションはファイアウォールを通過できます。 OpenVPN は、Android、iOS (バージョン 11.0 以上)、Windows、Linux、および Mac デバイス (macOS バージョン 10.13 以上) から接続する際に使用できます。

  • IKEv2 VPN。これは、標準ベースの IPsec VPN ソリューションです。 IKEv2 VPN は、Windows、Linux、および Mac デバイス (macOS バージョン 10.11 以上) から接続するために使用できます。

この構成では、接続には次のものが必要です。

  • RouteBased VPN ゲートウェイ。
  • ユーザー認証を処理する RADIUS サーバー。 RADIUS サーバーは、オンプレミスまたは Azure VNet にデプロイできます。 また、高可用性のために 2 つの RADIUS サーバーを構成することもできます。
  • VPN クライアント プロファイル構成パッケージ。 VPN クライアント プロファイル構成パッケージは、生成するパッケージです。 VPN クライアントが P2S を介して接続するために必要な設定が含まれています。

P2S VPN の Active Directory (AD) ドメイン認証について

AD ドメイン認証では、ユーザーは組織のドメイン資格情報を使用して Azure にサインインできます。 これには AD サーバーと統合する RADIUS サーバーが必要です。 また、組織は既存の RADIUS デプロイを利用することもできます。

RADIUS サーバーは、オンプレミスまたは Azure VNet に配置できます。 認証が行われる間、VPN ゲートウェイがパススルーとして機能し、接続するデバイスと RADIUS サーバーの間で認証メッセージを転送します。 重要なのは、VPN ゲートウェイが RADIUS サーバーにアクセスできることです。 RADIUS サーバーがオンプレミスに存在する場合、Azure からオンプレミス サイトへの VPN サイト間接続が必要になります。

RADIUS サーバーは、Active Directory とは別に、その他の外部 ID システムとも統合できます。 これにより、MFA のオプションなど、P2S VPN 向けの多数の認証オプションを利用できるようになります。 RADIUS サーバーと統合される ID システムの一覧を取得するには、そのベンダーのドキュメントをご確認ください。

Diagram of RADIUS authentication P2S connection.

重要

オンプレミスの RADIUS サーバーへの接続に使用できるのは、VPN サイト間接続のみです。 ExpressRoute 接続は使用できません。

作業を開始する前に

Azure サブスクリプションを持っていることを確認します。 Azure サブスクリプションをまだお持ちでない場合は、MSDN サブスクライバーの特典を有効にするか、無料アカウントにサインアップしてください。

Azure PowerShell を使用する

この記事では、PowerShell コマンドレットを使用します。 コマンドレットを実行するには、Azure Cloud Shell を使用できます。 Cloud Shell は無料のインタラクティブ シェルです。この記事の手順は、Azure Cloud Shell を使って実行することができます。 一般的な Azure ツールが事前にインストールされており、アカウントで使用できるように構成されています。

Cloud Shell を開くには、コード ブロックの右上の隅にある [Cloudshell を開く] を選択するだけです。 https://shell.azure.com/powershell に移動して、別のブラウザー タブで Cloud Shell を開くこともできます。 [コピー] を選択してコードのブロックをコピーし、Cloud Shell に貼り付けてから、Enter キーを押して実行します。

Azure PowerShell コマンドレットは、ローカルのコンピューターにインストールして実行することもできます。 PowerShell コマンドレットは、頻繁に更新されます。 最新バージョンをインストールしていないと、手順で指定されている値は失敗する場合があります。 コンピューターにインストールされている Azure PowerShell のバージョンを確認するには、Get-Module -ListAvailable Az コマンドレットを使用します。 インストールまたは更新するには、「Install the Azure PowerShell module (Azure PowerShell モジュールのインストール)」を参照してください。

値の例

値の例を使用して、テスト環境を作成できます。また、この値を参考にしながら、この記事の例を確認していくこともできます。 手順をチュートリアルとして利用して値を変更せずに使用することも、実際の環境に合わせて値を変更することもできます。

  • 名前:VNet1
  • アドレス空間: 192.168.0.0/1610.254.0.0/16
    この例では、この構成が複数のアドレス空間で機能することを示すために、複数のアドレス空間を使用します。 ただし、この構成で複数のアドレス空間は必須ではありません。
  • サブネット名:FrontEnd
    • サブネットのアドレス範囲: 12.2.0.0/24
  • サブネット名: BackEnd
    • サブネットのアドレス範囲: 10.254.1.0/24
  • サブネット名: GatewaySubnet
    VPN ゲートウェイが機能するには、サブネット名 GatewaySubnet が必須となります。
    • GatewaySubnet のアドレス範囲 = 192.168.255.0/27
  • VPN クライアント アドレス プール: 172.16.201.0/24
    この P2S 接続を利用して VNet に接続する VPN クライアントは、この VPN クライアント アドレス プールから IP アドレスを受け取ります。
  • サブスクリプション: サブスクリプションが複数ある場合は、適切なものを使用していることを確認します。
  • リソース グループ: TestRG1
  • 場所:米国東部
  • DNS サーバー: VNet の名前解決に利用する DNS サーバーの IP アドレス。 (省略可能)
  • GW 名: Vnet1GW
  • パブリック IP 名: VNet1GWPIP
  • VPN の種類:RouteBased

1. 変数を設定する

使用する変数を宣言します。 次のサンプルを使用し、必要に応じて独自の値で置き換えます。 演習中の任意の時点で PowerShell セッションまたは Cloud Shell セッションを閉じた場合に変数を再宣言するには、値をもう一度コピーして貼り付けます。

$VNetName  = "VNet1"
$FESubName = "FrontEnd"
$BESubName = "Backend"
$GWSubName = "GatewaySubnet"
$VNetPrefix1 = "10.1.0.0/16"
$VNetPrefix2 = "10.254.0.0/16"
$FESubPrefix = "10.1.0.0/24"
$BESubPrefix = "10.254.1.0/24"
$GWSubPrefix = "10.1.255.0/27"
$VPNClientAddressPool = "172.16.201.0/24"
$RG = "TestRG1"
$Location = "East US"
$GWName = "VNet1GW"
$GWIPName = "VNet1GWPIP"
$GWIPconfName = "gwipconf1"

2.リソース グループ、VNet、パブリック IP アドレスの作成

次の手順では、1 つのリソース グループを作成し、3 つのサブネットと共に仮想ネットワークをそのリソース グループに作成します。 値を代入する場合は、ゲートウェイ サブネットの名前を必ず "GatewaySubnet" にすることが重要です。 別の名前にすると、ゲートウェイの作成は失敗します。

  1. リソース グループを作成します。

    New-AzResourceGroup -Name "TestRG1" -Location "East US"
    
  2. 仮想ネットワークのサブネット構成を作成し、FrontEndBackEndGatewaySubnet いう名前を付けます。 これらのプレフィックスは、宣言した VNet アドレス空間に含まれている必要があります。

    $fesub = New-AzVirtualNetworkSubnetConfig -Name "FrontEnd" -AddressPrefix "10.1.0.0/24"  
    $besub = New-AzVirtualNetworkSubnetConfig -Name "Backend" -AddressPrefix "10.254.1.0/24"  
    $gwsub = New-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet" -AddressPrefix "10.1.255.0/27"
    
  3. 仮想ネットワークを作成します。

    この例では、-DnsServer サーバー パラメーターはオプションです。 値を指定しても新しい DNS サーバーは作成されません。 指定する DNS サーバーの IP アドレスは、VNet から接続するリソースの名前を解決できる DNS サーバーの IP アドレスである必要があります。 この例ではプライベート IP アドレスを使用していますが、これはおそらく実際の DNS サーバーの IP アドレスと一致しません。 実際には独自の値を使用してください。 指定された値は、P2S 接続ではなく、VNet にデプロイするリソースが使用します。

    New-AzVirtualNetwork -Name "VNet1" -ResourceGroupName "TestRG1" -Location "East US" -AddressPrefix "10.1.0.0/16","10.254.0.0/16" -Subnet $fesub, $besub, $gwsub -DnsServer 10.2.1.3
    
  4. VPN ゲートウェイには、パブリック IP アドレスが必要です。 これにはまず IP アドレスのリソースを要求したうえで、仮想ネットワーク ゲートウェイの作成時にそのリソースを参照する必要があります。 IP アドレスは、VPN ゲートウェイの作成時にリソースに対して動的に割り当てられます。 VPN Gateway では現在、パブリック IP アドレスの "動的" 割り当てのみサポートしています。 静的パブリック IP アドレスの割り当てを要求することはできません。 ただし、これは IP アドレスがご使用の VPN ゲートウェイに割り当てられた後に変更されるという意味ではありません。 パブリック IP アドレスが変わるのは、ゲートウェイが削除され、再度作成されたときのみです。 VPN ゲートウェイのサイズ変更、リセット、その他の内部メンテナンス/アップグレードでは、IP アドレスは変わりません。

    動的に割り当てられたパブリック IP アドレスを要求する変数を指定します。

    $vnet = Get-AzVirtualNetwork -Name "VNet1" -ResourceGroupName "TestRG1"  
    $subnet = Get-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet" -VirtualNetwork $vnet 
    $pip = New-AzPublicIpAddress -Name "VNet1GWPIP" -ResourceGroupName "TestRG1" -Location "East US" -AllocationMethod Dynamic 
    $ipconf = New-AzVirtualNetworkGatewayIpConfig -Name "gwipconf1" -Subnet $subnet -PublicIpAddress $pip
    

3.RADIUS サーバーの設定

仮想ネットワーク ゲートウェイを作成して構成する前に、RADIUS サーバーを認証用に正しく構成しておく必要があります。

  1. RADIUS サーバーをデプロイしていない場合はデプロイします。 デプロイ手順については、RADIUS ベンダーから提供されたセットアップ ガイドを参照してください。  
  2. RADIUS で VPN ゲートウェイを RADIUS クライアントとして構成します。 この RADIUS クライアントを追加する際に、作成した仮想ネットワーク GatewaySubnet を指定します。
  3. RADIUS サーバーの設定が完了したら、RADIUS クライアントが RADIUS サーバーとの通信に使用する RADIUS サーバーの IP アドレスと共有シークレットを取得します。 RADIUS サーバーが Azure VNet 内にある場合、RADIUS サーバー VM の CA IP を使用します。

記事「ネットワーク ポリシー サーバー (NPS)」では、AD ドメイン認証用に Windows RADIUS サーバー (NPS) を構成する方法についてのガイダンスが示されています。

4.VPN ゲートウェイの作成

VPN ゲートウェイを VNet 用に構成して作成します。

  • -GatewayType は Vpn、-VpnType は RouteBased にする必要があります。
  • 選択するゲートウェイ SKU によっては、VPN ゲートウェイの作成が完了するまでに 45 分以上かかる場合があります。
New-AzVirtualNetworkGateway -Name $GWName -ResourceGroupName $RG `
-Location $Location -IpConfigurations $ipconf -GatewayType Vpn `
-VpnType RouteBased -EnableBgp $false -GatewaySku VpnGw1

5.RADIUS サーバーおよびクライアント アドレス プールの追加

  • -RadiusServer は名前または IP アドレスで指定できます。 サーバーがオンプレミスに存在する場合に名前を指定すると、VPN ゲートウェイはその名前を解決できない可能性があります。 この場合、サーバーの IP アドレスを指定することをお勧めします。
  • -RadiusSecret は、RADIUS サーバーで構成したものと一致している必要があります。
  • -VpnClientAddressPool は、接続する VPN クライアントが受け取る IP アドレスの範囲です。 接続元であるオンプレミスの場所、または接続先とする VNet と重複しないプライベート IP アドレス範囲を使用してください。 また、構成するアドレス プールには十分な広さを確保してください。  
  1. RADIUS シークレットのセキュリティで保護された文字列を作成します。

    $Secure_Secret=Read-Host -AsSecureString -Prompt "RadiusSecret"
    
  2. RADIUS シークレットを入力するように求められます。 入力した文字は表示されず、"*" 文字に置き換えられます。

    RadiusSecret:***
    
  3. VPN クライアント アドレス プールと RADIUS サーバー情報を追加します。

    SSTP 構成の場合:

    $Gateway = Get-AzVirtualNetworkGateway -ResourceGroupName $RG -Name $GWName
    Set-AzVirtualNetworkGateway -VirtualNetworkGateway $Gateway `
    -VpnClientAddressPool "172.16.201.0/24" -VpnClientProtocol "SSTP" `
    -RadiusServerAddress "10.51.0.15" -RadiusServerSecret $Secure_Secret
    

    OpenVPN® 構成の場合:

    $Gateway = Get-AzVirtualNetworkGateway -ResourceGroupName $RG -Name $GWName
    Set-AzVirtualNetworkGateway -VirtualNetworkGateway $Gateway -VpnClientRootCertificates @()
    Set-AzVirtualNetworkGateway -VirtualNetworkGateway $Gateway `
    -VpnClientAddressPool "172.16.201.0/24" -VpnClientProtocol "OpenVPN" `
    -RadiusServerAddress "10.51.0.15" -RadiusServerSecret $Secure_Secret
    

    IKEv2 構成の場合:

    $Gateway = Get-AzVirtualNetworkGateway -ResourceGroupName $RG -Name $GWName
    Set-AzVirtualNetworkGateway -VirtualNetworkGateway $Gateway `
    -VpnClientAddressPool "172.16.201.0/24" -VpnClientProtocol "IKEv2" `
    -RadiusServerAddress "10.51.0.15" -RadiusServerSecret $Secure_Secret
    

    SSTP と IKEv2 の場合:

    $Gateway = Get-AzVirtualNetworkGateway -ResourceGroupName $RG -Name $GWName
    Set-AzVirtualNetworkGateway -VirtualNetworkGateway $Gateway `
    -VpnClientAddressPool "172.16.201.0/24" -VpnClientProtocol @( "SSTP", "IkeV2" ) `
    -RadiusServerAddress "10.51.0.15" -RadiusServerSecret $Secure_Secret
    

    2 つの RADIUS サーバーを指定するには、次の構文を使用します。 必要に応じて -VpnClientProtocol の値を変更します

    $radiusServer1 = New-AzRadiusServer -RadiusServerAddress 10.1.0.15 -RadiusServerSecret $radiuspd -RadiusServerScore 30
    $radiusServer2 = New-AzRadiusServer -RadiusServerAddress 10.1.0.16 -RadiusServerSecret $radiuspd -RadiusServerScore 1
    
    $radiusServers = @( $radiusServer1, $radiusServer2 )
    
    Set-AzVirtualNetworkGateway -VirtualNetworkGateway $actual -VpnClientAddressPool 201.169.0.0/16 -VpnClientProtocol "IkeV2" -RadiusServerList $radiusServers
    

6. VPN クライアントと接続を構成する

VPN クライアント プロファイル構成パッケージには、Azure VNet への接続用に VPN クライアント プロファイルを構成するのに役立つ設定が含まれています。

VPN クライアント構成パッケージを生成して VPN クライアントを構成するには、次のいずれかの記事を参照してください。

VPN クライアントを構成したら、Azure に接続します。

接続を確認するには

  1. VPN 接続がアクティブであることを確認するには、管理者特権でのコマンド プロンプトを開いて、 ipconfig/allを実行します。

  2. 結果を表示します。 受信した IP アドレスが、構成で指定した P2S VPN クライアント アドレス プール内のアドレスのいずれかであることに注意してください。 結果は次の例のようになります。

    PPP adapter VNet1:
       Connection-specific DNS Suffix .:
       Description.....................: VNet1
       Physical Address................:
       DHCP Enabled....................: No
       Autoconfiguration Enabled.......: Yes
       IPv4 Address....................: 172.16.201.3(Preferred)
       Subnet Mask.....................: 255.255.255.255
       Default Gateway.................:
       NetBIOS over Tcpip..............: Enabled
    

P2S 接続のトラブルシューティングについては、「トラブルシューティング: Azure ポイント対サイト接続の問題」をご覧ください。

仮想マシンに接続するには:

VM へのリモート デスクトップ接続を作成すると、仮想ネットワークにデプロイされている VM に接続できます。 VM に接続できるかどうかを初めて確認する際に最も良い方法は、その VM のコンピューター名ではなく、プライベート IP アドレスを使って接続してみることです。 この方法であれば、名前の解決が適切に構成されているかではなく、VM に接続できるかどうかをテストすることができます。

  1. プライベート IP アドレスを特定します。 VM のプライベート IP アドレスは、Azure portal で VM のプロパティを表示するか、PowerShell を使うと確認できます。

    • Azure portal: Azure portal で VM を見つけます。 VM のプロパティを表示すると、 プライベート IP アドレスが表示されます。

    • PowerShell: この例を使って、リソース グループの VM とプライベート IP アドレスの一覧を表示します。 このコマンドは、使用前に変更を加える必要はありません。

      $VMs = Get-AzVM
      $Nics = Get-AzNetworkInterface | Where-Object VirtualMachine -ne $null
      
      foreach ($Nic in $Nics) {
      $VM = $VMs | Where-Object -Property Id -eq $Nic.VirtualMachine.Id
      $Prv = $Nic.IpConfigurations | Select-Object -ExpandProperty PrivateIpAddress
      $Alloc = $Nic.IpConfigurations | Select-Object -ExpandProperty PrivateIpAllocationMethod
      Write-Output "$($VM.Name): $Prv,$Alloc"
      }
      
  2. 仮想ネットワークに接続されていることを確認します。

  3. タスク バーの検索ボックスに「RDP」または「リモート デスクトップ接続」と入力して、リモート デスクトップ接続を開きます。 次に、[リモート デスクトップ接続] を選びます。 このほか、PowerShell で mstsc コマンドを使ってリモート デスクトップ接続を開くこともできます。

  4. リモート デスクトップ接続で、VM のプライベート IP アドレスを入力します。 [オプションの表示] を選んでその他の設定を調整してから、接続できます。

VPN 接続を使って VM に接続する際に問題が発生した場合には、次の点を確認してください。

  • VPN 接続が成功したことを確認します。
  • VM のプライベート IP アドレスに接続していることを確認します。
  • プライベート IP アドレスを使って VM に接続できるものの、コンピューター名では接続できない場合には、DNS が正しく構成されているかどうかを確認します。 VM の名前解決のしくみについては、VM の名前解決に関するページを参照してください。

詳細については、VM に対するリモート デスクトップ接続のトラブルシューティングに関するページを参照してください。

  • VNet に対して DNS サーバーの IP アドレスが指定された後に VPN クライアント構成パッケージが生成されたことを確認します。 DNS サーバーの IP アドレスを更新した場合は、新しい VPN クライアント構成パッケージを生成してインストールしてください。

  • 接続元のコンピューターのイーサネット アダプターに割り当てられている IPv4 アドレスを 'ipconfig' を使用して確認します。 その IP アドレスが、接続先の VNet のアドレス範囲内または VPNClientAddressPool のアドレス範囲内にある場合、これを "アドレス空間の重複" といいます。 アドレス空間がこのように重複していると、ネットワーク トラフィックが Azure に到達せずローカル ネットワーク上に留まることになります。

よくあるご質問

FAQ 情報については、よくある質問の 「ポイント対サイト - RADIUS 認証」セクションを参照してください。

次のステップ

接続が完成したら、仮想ネットワークに仮想マシンを追加することができます。 詳細については、Virtual Machines に関するページを参照してください。 ネットワークと仮想マシンの詳細については、「Azure と Linux の VM ネットワークの概要」を参照してください。