使用 RADIUS 驗證設定 VNet 的點對站連線:PowerShell

本文顯示如何建立具有點對站 (P2S) 連線 (使用 RADIUS 驗證) 的 VNet。 此組態只適用於 Resource Manager 部署模型。 您可以使用 PowerShell 或 Azure 入口網站建立此設定。

點對站 VPN 閘道可讓您建立從個別用戶端電腦到您的虛擬網路的安全連線。 當您想要從遠端位置 (例如當您從住家或會議進行遠距工作) 連線到您的 VNet 時,P2S VPN 連線很實用。 當您只有少數用戶端必須連線至 VNet 時,P2S VPN 也是很實用的方案 (而不是使用站對站 VPN)。

P2S VPN 連線會從 Windows 和 Mac 裝置啟動。 本文協助您設定使用 RADIUS 伺服器進行驗證的 P2S 設定。 如果您想要使用不同的方法來驗證,請參閱下列文章:

P2S 連線不需要 VPN 裝置或公眾對應 IP 位址即可運作。 P2S 會建立透過 SSTP (安全通訊端通道通訊協定) 、OpenVPN 或 IKEv2 的 VPN 連線。

  • SSTP 是僅在 Windows 用戶端平台上支援的 TLS 型 VPN 通道。 它可以穿透防火牆,這是從任何地方將 Windows 裝置連線到 Azure 的理想選項。 在伺服器端,我們僅支援 TLS 1.2 版。 為了改善效能、擴充性和安全性,請考慮改用 OpenVPN 通訊協定。

  • OpenVPN® 通訊協定,這是以 SSL/TLS 為基礎的 VPN 通訊協定。 TLS VPN 解決方案可以穿透防火牆,因為大部分防火牆都會開啟 TLS 使用的輸出 TCP 連接埠 443。 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 中。 您也可以設定兩部 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 站對站連線。

除了 Active Directory,RADIUS 伺服器也可以與其他外部身分識別系統整合。 這會開啟許多 P2S VPN 的驗證選項,包括 MFA 選項。 查閱 RADIUS 伺服器廠商文件,以取得與其整合的身分識別系統清單。

Diagram of RADIUS authentication P2S connection.

重要

只有站對站 VPN 連線可用來連線到內部部署環境中的 RADIUS 伺服器。 無法使用 ExpressRoute 連線。

開始之前

驗證您有 Azure 訂用帳戶。 如果您還沒有 Azure 訂用帳戶,則可以啟用 MSDN 訂戶權益或註冊免費帳戶

使用 Azure PowerShell

本文使用 PowerShell Cmdlet。 若要執行 Cmdlet,您可以使用 Azure Cloud Shell。 Cloud Shell 是免費的互動式殼層,可讓您用來執行本文中的步驟。 它具有預先安裝和設定的共用 Azure 工具,可與您的帳戶搭配使用。

若要開啟 Cloud Shell,只要選取程式碼區塊右上角的 [開啟 Cloudshell] 即可。 您也可以移至 https://shell.azure.com/powershell,在個別的瀏覽器索引標籤上開啟 Cloud Shell。 選取 [複製] 以複製程式碼區塊、將它們貼上到 Cloud Shell 中,然後選取 Enter 鍵以執行它們。

您也可以在本機電腦上安裝並執行 Azure PowerShell Cmdlet。 PowerShell Cmdlet 會經常更新。 如果您尚未安裝最新版本,指示中指定的值可能會失敗。 若要尋找電腦上安裝的 Azure PowerShell 版本,請使用 Get-Module -ListAvailable Az Cmdlet。 若要安裝或更新,請參閱安裝 Azure PowerShell 模組

範例值

您可以使用範例值來建立測試環境,或參考這些值來進一步了解本文中的範例。 您可以使用這些步驟做為逐步解說並使用未經變更的值,或變更這些值以反映您的環境。

  • 名稱:VNet1
  • 位址空間:10.1.0.0/1610.254.0.0/16
    在此範例中,我們使用一個以上的位址空間來說明此組態可以與多個位址空間搭配使用。 不過,此組態不需要多個位址空間。
  • 子網路名稱:FrontEnd
    • 子網路位址範圍:10.1.0.0/24
  • 子網路名稱:BackEnd
    • 子網路位址範圍:10.254.1.0/24
  • 子網路名稱:GatewaySubnet
    子網路名稱 GatewaySubnet 是 VPN 閘道能夠運作的必要項目。
    • 閘道子網路位址範圍:10.1.255.0/27
  • VPN 用戶端位址集區:172.16.201.0/24
    使用這個 P2S 連線來連線到 VNet 的 VPN 用戶端,會收到來自 VPN 用戶端位址集區的 IP 位址。
  • 訂用帳戶:如果您有一個以上的訂用帳戶,請確認您使用正確的訂用帳戶。
  • 資源群組︰TestRG1
  • 位置:美國東部
  • DNS 伺服器:您想要用於 VNet 名稱解析的 DNS 伺服器的 IP 位址。 (選用)
  • GW 名稱:Vnet1GW
  • 公用 IP 名稱:VNet1GWPIP
  • VpnType: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 位址

下列步驟會建立一個資源群組,並在此資源群組中建立具有三個子網路的虛擬網路。 替代值時,務必一律將您的閘道子網路特定命名為 GatewaySubnet。 如果您將其命名為其他名稱,閘道建立會失敗。

  1. 建立資源群組。

    New-AzResourceGroup -Name "TestRG1" -Location "East US"
    
  2. 為虛擬網路建立子網路組態,將其命名為 FrontEndBackEnd 和 GatewaySubnet。 這些前置詞必須是您宣告的 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 位址,但這可能不是您 DNS 伺服器的 IP 位址。 請務必使用您自己的值。 您指定的值是由您部署至 VNet 的資源使用,不是由 P2S 連線使用。

    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 位址資源,然後在建立虛擬網路閘道時參考它。 建立 VPN 閘道時,系統會將 IP 位址動態指派給此資源。 VPN 閘道目前僅支援動態公用 IP 位址配置。 您無法要求靜態公用 IP 位址指派。 不過,這不表示 IP 位址在指派給您的 VPN 閘道之後會有變更。 公用 IP 位址只會在刪除或重新建立閘道時變更。 它不會因為重新調整、重設或 VPN 閘道的其他內部維護/升級而變更。

    指定可要求動態指派之公用 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. 將 VPN 閘道設定為 RADIUS 上的 RADIUS 用戶端。 新增此 RADIUS 用戶端時,指定您所建立的虛擬網路 GatewaySubnet。
  3. 設定 RADIUS 伺服器後,請取得 RADIUS 伺服器的 IP 位址和 RADIUS 用戶端應用來與 RADIUS 伺服器通訊的共用祕密。 如果 RADIUS 伺服器位於 Azure VNet 中,請使用 RADIUS 伺服器 VM 的 CA IP。

網路原則伺服器 (NPS) 一文提供有關設定 Windows RADIUS 伺服器 (NPS) 以便進行 AD 網域驗證的指引。

4.建立 VPN 閘道

設定和建立 VNet 的 VPN 閘道。

  • -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 伺服器和用戶端位址集區

  • 可以依名稱或依 IP 位址指定 -RadiusServer。 如果您指定名稱且伺服器位於內部部署環境,則 VPN 閘道可能無法解析此名稱。 如果是這樣,最好是指定伺服器的 IP 位址。
  • -RadiusSecret 應符合 RADIUS 伺服器的設定。
  • -VpnClientAddressPool 是連線 VPN 用戶端時從中接收 IP 位址的範圍。 使用不會重疊的私人 IP 位址範圍搭配您從其連線的內部部署位置,或搭配您要連線至的 VNet。 確定您已設定夠大的位址集區。  
  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
    

    若要指定兩部 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 用戶端設定檔群組態套件包含可協助您設定 VPN 用戶端設定檔以連線至 Azure VNet 的設定。

若要產生 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 的最佳方法是使用其私人 IP 位址 (而不是電腦名稱) 進行連線。 這樣一來,您會測試以查看您是否可以連線,而不是否已正確設定名稱解析。

  1. 找出私人 IP 位址。 在 Azure 入口網站中或使用 PowerShell 查看 VM 的屬性,即可找到 VM 的私人 IP 位址。

    • Azure 入口網站:在 Azure 入口網站中尋找您的 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 的名稱解析

如需 RDP 連線的詳細資訊,請參閱對 VM 的遠端桌面連線進行疑難排解

  • 確認 VPN 用戶端設定套件是在為 VNet 指定 DNS 伺服器 IP 位址之後產生的。 如果您更新了 DNS 伺服器 IP 位址,請產生並安裝新的 VPN 用戶端設定套件。

  • 使用 'ipconfig' 來檢查指派給所連線電腦上乙太網路介面卡的 IPv4 位址。 如果 IP 位址位在您要連線的 VNet 位址範圍內,或在您 VPNClientAddressPool 的位址範圍內,這稱為重疊位址空間。 當您的位址空間以這種方式重疊時,網路流量不會連線到 Azure,它會保留在本機網路上。

常見問題集

如需常見問題資訊,請參閱常見問題的點對站 - RADIUS 驗證一節。

下一步

一旦完成您的連接,就可以將虛擬機器加入您的虛擬網路。 如需詳細資訊,請參閱虛擬機器。 若要了解網路與虛擬機器的詳細資訊,請參閱 Azure 與 Linux VM 網路概觀