プライベート リンク サービスを、プライベートにルーティング可能な任意の宛先 IP アドレスに接続できるようになりました。
Azure Private Link サービスを使用すると、サービス プロバイダーはアプリケーションを標準ロード バランサーの背後に配置することで、顧客がプライベートかつ安全にアプリケーションを使用できるようになります。 Private Link サービス Direct Connect は、この機能を拡張し、プライベート リンク サービスをプライベートにルーティング可能な任意の宛先 IP アドレスに直接接続できるようにします。 この構成は、データベース接続やカスタム アプリケーションなど、直接 IP ベースのルーティングを必要とするアプリケーションにプライベート接続を提供するシナリオに特に役立ちます。
この記事では、Private Link サービス Direct Connect と、Azure PowerShell、Azure CLI、または Terraform を使用して作成する方法について説明します。
注
この機能はパブリック プレビュー段階であり、一部のリージョンで利用できます。 サブスクリプションに対して有効にする前に、すべての考慮事項を確認してください。
注
ポータルのサポートは、ポータルで機能をアクティブ化するプレビュー リンク (aka.ms/PortalPLSDirectConnect) を介して利用できます。 機能にアクセスするためのプレビュー リンクを使用しない完全なポータル サポートは保留中です。
[前提条件]
- アクティブなサブスクリプションを持つ Azure アカウント。
- ローカルにインストールされている Azure PowerShell、または Azure Cloud Shell を使用します。 詳しくは、Azure PowerShell のインストールに関する記事をご覧ください。
- Azure CLI がローカルにインストールされているか、Azure Cloud Shell を使用します。 詳細については、「 Azure CLI のインストール」を参照してください。
- Terraform の場合: Terraform をインストールして構成します。
- サブスクリプションで機能フラグ Microsoft.Network/AllowPrivateLinkserviceUDR を有効にします。 Azure CLI または PowerShell を使用して登録する手順に従います。 Azure プレビュー機能を有効にします。
- サブネットを持つ仮想ネットワーク。
- 宛先 IP アドレスとして設定するルーティング可能な IP アドレス。
Private Link サービスの直接接続とは
Private Link サービス (PLS) 直接接続を使用すると、次のことができます。
- 仮想ネットワーク内のプライベートにルーティング可能な特定の宛先 IP アドレスにトラフィックを直接ルーティングします。
- 直接 IP 接続が必要なシナリオでは、ロード バランサーの要件をバイパスします。
- トラフィックの送信先を正確に制御する必要があるカスタム ルーティング シナリオをサポートします。
- オンプレミス のリソース、サード パーティの SaaS、仮想アプライアンスへのセキュリティで保護されたアクセスなど、拡張されたシナリオを構成します。
一般的なユース ケース
- 静的 IP 接続を必要とするアプリケーションのデータベースに直接接続する
- ロード バランサーの転送で機能しないカスタム アプリケーション シナリオをサポートする
- 直接 IP ベースのルーティングが必要なレガシ アプリケーションを有効にする
- Private Link を使用してユーザー定義ルーティング (UDR) を必要とするシナリオ
- オンプレミスの接続を提供する
主な要件
- 少なくとも 2 つの IP 構成を指定します。この機能では、高可用性のために少なくとも 2 つの IP 構成が 2 つの倍数で必要です。
- 静的宛先 IP アドレスを指定する: ターゲット IP は、仮想ネットワーク内で到達可能である必要があります。
- サブネットで privateLinkServiceNetworkPolicies プロパティを無効にします。このプロパティは、この機能には必要ありません。
制限事項
Private Link サービス Direct Connect を使用する場合は、次の制限事項に注意してください。
- 2 つ以上の IP 構成が必要です。PLS 直接接続をデプロイするには、少なくとも 2 つの IP 構成、または 2 の倍数 (最大 8 個の制限 ) が必要です。
- サブスクリプションあたり最大 10 PLS: サブスクリプションごとにリージョンあたり 10 PLS のハードウェア制限があります。
- 帯域幅の制限: 各 PLS 直接接続では、最大 10 Gbps の帯域幅をサポートできます。
- 静的 IP 要件: 宛先 IP はプライベート、静的、直接到達可能である必要があり、動的に変更される IP はサポートされていません。
- リージョン間の制限: ソース プライベート エンドポイント、プライベート リンク サービス、およびクライアント VM は、同じリージョンに存在する必要があります。 この制限は、機能が一般公開されている場合に削除されます。
- リージョンの可用性: この機能は、限られたリージョン (米国中北部、米国東部 2、米国中部、米国中南部、米国西部、米国西部 2、米国西部 3、アジア南東部、オーストラリア東部、スペイン中部) で利用できます。
考慮事項
- 移行のサポートなし: この機能をデプロイするには、新しい Private Link サービスが必要です。 既存のプライベート リンク サービスの移行はサポートされていません。
- 使用可能なクライアント サポート: PowerShell、CLI、または Terraform を使用して、この新しい Private Link サービスをデプロイします。 ポータルのサポートは、ポータルで機能をアクティブにするプレビュー リンク (aka.ms/PortalPLSDirectConnect) を介して利用できます。 機能を構成するためのプレビュー リンクを使用しない完全なポータル サポートは保留中です。
- IP 転送が有効になっている: サブスクリプションに IP 転送を無効にするポリシーがある場合は、ポリシーを無効にして適切な構成を許可する必要があります。
Private Link サービス Direct Connect を作成する
Azure PowerShell を使用して Private Link サービス Direct Connect を作成するには、次のスクリプトを使用します。
# Define variables
$resourceGroupName = "rg-pls-directconnect"
$___location = "westus"
$vnetName = "pls-vnet"
$subnetName = "pls-subnet"
$plsName = "pls-directconnect"
$destinationIP = "10.0.1.100"
# Create resource group
New-AzResourceGroup -Name $resourceGroupName -Location $___location
# Create virtual network (corrected parameter name)
$subnet = New-AzVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix "10.0.1.0/24" -privateLinkServiceNetworkPoliciesFlag "Disabled"
$vnet = New-AzVirtualNetwork -Name $vnetName -ResourceGroupName $resourceGroupName -Location $___location -AddressPrefix "10.0.0.0/16" -Subnet $subnet
# Get subnet reference
$subnet = Get-AzVirtualNetworkSubnetConfig -VirtualNetwork $vnet -Name $subnetName
# Create IP configurations for Private Link service (minimum 2 or in multiples of 2 required)
$ipConfig1 = @{
Name = "ipconfig1"
PrivateIpAllocationMethod = "Dynamic"
Subnet = $subnet
Primary = $true
}
$ipConfig2 = @{
Name = "ipconfig2"
PrivateIpAllocationMethod = "Dynamic"
Subnet = $subnet
Primary = $false
}
# Create Private Link service Direct Connect
$pls = New-AzPrivateLinkservice `
-Name $plsName `
-ResourceGroupName $resourceGroupName `
-Location $___location `
-IpConfiguration @($ipConfig1, $ipConfig2) `
-DestinationIPAddress $destinationIP
Write-Output "Private Link service created successfully!"
Write-Output "Private Link service ID: $($pls.Id)"
Write-Output "Destination IP Address: $destinationIP"
接続をテストするためのプライベート エンドポイントを作成する
Private Link サービス Direct Connect を作成した後、プライベート エンドポイントを作成して接続をテストします。
# Variables for Private Endpoint
$peResourceGroupName = "rg-pe-test"
$peVnetName = "pe-vnet"
$peSubnetName = "pe-subnet"
$privateEndpointName = "pe-to-pls"
$privateLinkserviceId = "/subscriptions/your-subscription-id/resourceGroups/rg-pls-destinationip/providers/Microsoft.Network/privateLinkservices/pls-directconnect"
# Create resource group for PE
New-AzResourceGroup -Name $peResourceGroupName -Location $___location
# Create VNet for Private Endpoint
$peSubnet = New-AzVirtualNetworkSubnetConfig -Name $peSubnetName -AddressPrefix "10.1.1.0/24" -PrivateEndpointNetworkPoliciesFlag "Disabled"
$peVnet = New-AzVirtualNetwork -Name $peVnetName -ResourceGroupName $peResourceGroupName -Location $___location -AddressPrefix "10.1.0.0/16" -Subnet $peSubnet
# Get subnet reference for Private Endpoint
$peSubnet = Get-AzVirtualNetworkSubnetConfig -VirtualNetwork $peVnet -Name $peSubnetName
# Create Private Endpoint
$privateLinkserviceConnection = @{
Name = "connection-to-pls"
PrivateLinkserviceId = $privateLinkserviceId
}
$privateEndpoint = New-AzPrivateEndpoint -Name $privateEndpointName -ResourceGroupName $peResourceGroupName -Location $___location -Subnet $peSubnet -PrivateLinkserviceConnection $privateLinkserviceConnection
Write-Output "Private Endpoint created: $($privateEndpoint.Name)"
構成を確認する
Private Link サービスとプライベート エンドポイントの両方を作成した後、構成を確認します。
Private Link サービスの状態を確認する
# Get Private Link service details
$pls = Get-AzPrivateLinkservice -Name $plsName -ResourceGroupName $resourceGroupName
Write-Output "Private Link service: $($pls.Name)"
Write-Output "Provisioning State: $($pls.ProvisioningState)"
Write-Output "Destination IP: $($pls.DestinationIPAddress)"
Write-Output "IP Configurations: $($pls.IpConfigurations.Count)"
# Check Private Endpoint connections
$connections = $pls.PrivateEndpointConnections
foreach ($connection in $connections) {
Write-Output "PE Connection: $($connection.Name) - Status: $($connection.PrivateLinkserviceConnectionState.Status)"
}
トラブルシューティング
一般的な問題と解決策
問題: "2 の倍数に少なくとも 2 つの IP 構成を含める必要があります"
解決策: PLS 直接接続を構成するときは、少なくとも 2 つの IP 構成を構成してください。
問題: "宛先 IP アドレスに到達できません"
解決策: 次のことを確認します。
- 宛先 IP は仮想ネットワーク内で到達可能です
- PLS と宛先 IP の間に IP 転送または NAT がない
- 必要なトラフィックを許可するネットワーク セキュリティ グループ
リソースをクリーンアップする
テスト後、継続的な料金を回避するためにリソースをクリーンアップします。
# Remove resource groups (this deletes all resources within them)
Remove-AzResourceGroup -Name $resourceGroupName -Force
Remove-AzResourceGroup -Name $peResourceGroupName -Force
FAQs
機能フラグはポータルに表示されません。 この機能に登録するにはどうすればよいですか?
- Azure CLI または PowerShell を使用して機能フラグ Microsoft.Network/AllowPrivateLinkserviceUDR を登録します。詳しい手順については、Azure サブスクリプションでプレビュー機能を設定する - Azure Resource Manager | Microsoft Learn を参照してください。
プロパティ privateLinkServiceNetworkPolicies は、GA のようなケースで True に設定する必要があることはありますか?
- この機能には privateLinkServiceNetworkPolicies プロパティは必要ないため、false に設定します。