クイックスタート: Azure PowerShell を使用して Azure DNS Private Resolver を作成する
この記事では、Azure PowerShell を使用して最初のプライベート DNS ゾーンとレコードを作成する手順について説明します。 好みに応じて、Azure portal を使用してこのクイックスタートを実行することもできます。
注意
Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を開始するには、「Azure PowerShell のインストール」を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。
Azure DNS Private Resolver は、VM ベースの DNS サーバーをデプロイすることなく、オンプレミス環境から Azure DNS プライベート ゾーンに対して (またはその逆方向に) クエリを実行できる、新しいサービスです。 利点、機能、リージョン別の提供状況など、詳細については、「Azure DNS Private Resolver とは」を参照してください。
次の図は、この記事で使用する設定をまとめたものです。
前提条件
Azure サブスクリプションがない場合は、開始する前に無料アカウントを作成してください。
この記事では、Az Azure PowerShell モジュールをインストールしてあるものとします。
Az.DnsResolver PowerShell モジュールをインストールする
注意
プライベート プレビュー中に評価用として Az.DnsResolver モジュールをインストールしたことがある場合は、作成されたローカル PSRepository の登録を解除して削除できます。 その後、この記事で紹介されている手順を使用して、Az.DnsResolver モジュールの最新バージョンをインストールしてください。
Az.DnsResolver モジュールをインストールします。
Install-Module Az.DnsResolver
Az.DnsResolver モジュールがインストールされたことを確認します。 このモジュールの現在のバージョンは 0.2.1 です。
Get-InstalledModule -Name Az.DnsResolver
Azure PowerShell でサブスクリプション コンテキストを設定する
PowerShell を Azure クラウドに接続します。
Connect-AzAccount -Environment AzureCloud
複数のサブスクリプションが存在する場合は、最初のサブスクリプション ID が使用されます。 別のサブスクリプション ID を指定するには、次のコマンドを使用します。
Select-AzSubscription -SubscriptionObject (Get-AzSubscription -SubscriptionId <your-sub-id>)
アカウントの Microsoft.Network プロバイダー名前空間を登録する
Azure サブスクリプションで Microsoft.Network サービスを使用する前に、Microsoft.Network 名前空間を登録する必要があります。
次のコマンドを使用して、Microsoft.Network 名前空間を登録します。
Register-AzResourceProvider -ProviderNamespace Microsoft.Network
DNS リゾルバー インスタンスを作成する
重要
リソースが正常に作成されたことを検証または確認するステップは、省略できません。 このようなステップをスキップしないでください。 ステップを実行すると、後の手順で使用できる変数が設定されます。
リソースをホストするリソース グループを作成します。 このリソース グループは、サポートされているリージョンに存在する必要があります。 この例では、場所は westcentralus です。
New-AzResourceGroup -Name myresourcegroup -Location westcentralus
作成したリソース グループに仮想ネットワークを作成します。
New-AzVirtualNetwork -Name myvnet -ResourceGroupName myresourcegroup -Location westcentralus -AddressPrefix "10.0.0.0/8"
作成した仮想ネットワークに DNS リゾルバーを作成します。
New-AzDnsResolver -Name mydnsresolver -ResourceGroupName myresourcegroup -Location westcentralus -VirtualNetworkId "/subscriptions/<your subs id>/resourceGroups/myresourcegroup/providers/Microsoft.Network/virtualNetworks/myvnet"
DNS リゾルバーが正常に作成され、状態が接続済みであることを確認します (省略可能)。 出力では、dnsResolverState は Connected です。
$dnsResolver = Get-AzDnsResolver -Name mydnsresolver -ResourceGroupName myresourcegroup
$dnsResolver.ToJsonString()
DNS リゾルバーの受信エンドポイントを作成する
仮想ネットワークのサブネットを作成する
前に割り当てた IP アドレス空間から、仮想ネットワーク内のサブネット (Microsoft.Network/virtualNetworks/subnets) を作成します。 サブネットのサイズは、少なくとも /28 (16 個の IP アドレス) である必要があります。
$virtualNetwork = Get-AzVirtualNetwork -Name myvnet -ResourceGroupName myresourcegroup
Add-AzVirtualNetworkSubnetConfig -Name snet-inbound -VirtualNetwork $virtualNetwork -AddressPrefix "10.0.0.0/28"
$virtualNetwork | Set-AzVirtualNetwork
受信エンドポイントを作成する
プライベート仮想ネットワーク アドレス空間の一部である IP アドレスを使用して、オンプレミスまたは別のプライベートの場所からの名前解決を有効にするための受信エンドポイントを作成します。
ヒント
PowerShell を使用して、受信エンドポイントの IP アドレスを動的または静的に指定できます。
エンドポイント IP アドレスが動的として指定されている場合、エンドポイントが削除されて再プロビジョニングされない限り、アドレスは変化しません。 通常、再プロビジョニング中に同じ IP アドレスが再び割り当てられます。
エンドポイント IP アドレスが静的な場合は、エンドポイントを再プロビジョニングする場合に指定して再利用できます。 選択する IP アドレスは、サブネット内の予約済み IP アドレスにすることはできません。
次のコマンドは、動的 IP アドレスをプロビジョニングします。
$ipconfig = New-AzDnsResolverIPConfigurationObject -PrivateIPAllocationMethod Dynamic -SubnetId /subscriptions/<your sub id>/resourceGroups/myresourcegroup/providers/Microsoft.Network/virtualNetworks/myvnet/subnets/snet-inbound
New-AzDnsResolverInboundEndpoint -DnsResolverName mydnsresolver -Name myinboundendpoint -ResourceGroupName myresourcegroup -Location westcentralus -IpConfiguration $ipconfig
次のコマンドを使用して静的 IP アドレスを指定します。 動的セットと静的セットの両方のコマンドを使用しないでください。
以前に作成したサブネット内の IP アドレスを指定する必要があります。 選択する IP アドレスは、サブネット内の予約済み IP アドレスにすることはできません。
次のコマンドは、静的 IP アドレスをプロビジョニングします。
$ipconfig = New-AzDnsResolverIPConfigurationObject -PrivateIPAddress 10.0.0.4 -PrivateIPAllocationMethod Static -SubnetId /subscriptions/<your sub id>/resourceGroups/myresourcegroup/providers/Microsoft.Network/virtualNetworks/myvnet/subnets/snet-inbound
New-AzDnsResolverInboundEndpoint -DnsResolverName mydnsresolver -Name myinboundendpoint -ResourceGroupName myresourcegroup -Location westcentralus -IpConfiguration $ipconfig
受信エンドポイントを確認する
受信エンドポイントが作成され、割り当てられたサブネット内に IP アドレスが割り当てられていることを確認します。
$inboundEndpoint = Get-AzDnsResolverInboundEndpoint -Name myinboundendpoint -DnsResolverName mydnsresolver -ResourceGroupName myresourcegroup
$inboundEndpoint.ToJsonString()
DNS リゾルバーの送信エンドポイントを作成する
仮想ネットワークのサブネットを作成する
前に割り当てた IP アドレス空間から、仮想ネットワーク内のサブネット (Microsoft.Network/virtualNetworks/subnets) を作成します。これは、受信サブネット (snet-inbound) とは別のものです。 また、送信サブネットのサイズは少なくとも /28 (16 個の IP アドレス) である必要があります。
$virtualNetwork = Get-AzVirtualNetwork -Name myvnet -ResourceGroupName myresourcegroup
Add-AzVirtualNetworkSubnetConfig -Name snet-outbound -VirtualNetwork $virtualNetwork -AddressPrefix "10.1.1.0/28"
$virtualNetwork | Set-AzVirtualNetwork
送信エンドポイントを作成する
送信エンドポイントを使用すると、Azure から外部 DNS サーバーへの名前解決を条件付きで転送できます。
New-AzDnsResolverOutboundEndpoint -DnsResolverName mydnsresolver -Name myoutboundendpoint -ResourceGroupName myresourcegroup -Location westcentralus -SubnetId /subscriptions/<your sub id>/resourceGroups/myresourcegroup/providers/Microsoft.Network/virtualNetworks/myvnet/subnets/snet-outbound
送信エンドポイントを確認する
送信エンドポイントが作成され、割り当てられたサブネット内に IP アドレスが割り当てられていることを確認します。
$outboundEndpoint = Get-AzDnsResolverOutboundEndpoint -Name myoutboundendpoint -DnsResolverName mydnsresolver -ResourceGroupName myresourcegroup
$outboundEndpoint.ToJsonString()
DNS リゾルバーの転送ルール セットを作成する
作成した送信エンドポイントの DNS 転送ルール セットを作成します。
New-AzDnsForwardingRuleset -Name myruleset -ResourceGroupName myresourcegroup -DnsResolverOutboundEndpoint $outboundendpoint -Location westcentralus
DNS 転送ルール セットを確認する
転送ルール セットが作成されたことを確認します。
$dnsForwardingRuleset = Get-AzDnsForwardingRuleset -Name myruleset -ResourceGroupName myresourcegroup
$dnsForwardingRuleset.ToJsonString()
DNS 転送ルール セットへの仮想ネットワーク リンクを作成する
仮想ネットワーク リンクを使用すると、DNS 転送ルールセットが設定された送信エンドポイントにリンクされている仮想ネットワークの名前解決が有効になります。
$vnet = Get-AzVirtualNetwork -Name myvnet -ResourceGroupName myresourcegroup
$vnetlink = New-AzDnsForwardingRulesetVirtualNetworkLink -DnsForwardingRulesetName $dnsForwardingRuleset.Name -ResourceGroupName myresourcegroup -VirtualNetworkLinkName "vnetlink" -VirtualNetworkId $vnet.Id -SubscriptionId <your sub id>
仮想ネットワーク リンクを確認する
仮想ネットワーク リンクが作成されたことを確認します。
$virtualNetworkLink = Get-AzDnsForwardingRulesetVirtualNetworkLink -DnsForwardingRulesetName $dnsForwardingRuleset.Name -ResourceGroupName myresourcegroup
$virtualNetworkLink.ToJsonString()
2 番目の仮想ネットワークを作成し、DNS 転送ルール セットにリンクする
オンプレミスまたはその他の環境をシミュレートする 2 番目の仮想ネットワークを作成します。
$vnet2 = New-AzVirtualNetwork -Name myvnet2 -ResourceGroupName myresourcegroup -Location westcentralus -AddressPrefix "12.0.0.0/8"
$vnetlink2 = New-AzDnsForwardingRulesetVirtualNetworkLink -DnsForwardingRulesetName $dnsForwardingRuleset.Name -ResourceGroupName myresourcegroup -VirtualNetworkLinkName "vnetlink2" -VirtualNetworkId $vnet2.Id -SubscriptionId <your sub id>
2 番目の仮想ネットワークを確認する
2 番目の仮想ネットワークが作成されたことを確認します。
$virtualNetworkLink2 = Get-AzDnsForwardingRulesetVirtualNetworkLink -DnsForwardingRulesetName $dnsForwardingRuleset.Name -ResourceGroupName myresourcegroup
$virtualNetworkLink2.ToJsonString()
転送ルールの作成
1 つ以上のターゲット DNS サーバーに対する、ルール セットの転送ルールを作成します。 完全修飾ドメイン名 (FQDN) を末尾のドット付きで指定する必要があります。 New-AzDnsResolverTargetDnsServerObject コマンドレットでは、既定のポートが 53 に設定されますが、一意のポートを指定することもできます。
$targetDNS1 = New-AzDnsResolverTargetDnsServerObject -IPAddress 192.168.1.2 -Port 53
$targetDNS2 = New-AzDnsResolverTargetDnsServerObject -IPAddress 192.168.1.3 -Port 53
$targetDNS3 = New-AzDnsResolverTargetDnsServerObject -IPAddress 10.0.0.4 -Port 53
$targetDNS4 = New-AzDnsResolverTargetDnsServerObject -IPAddress 10.5.5.5 -Port 53
$forwardingrule = New-AzDnsForwardingRulesetForwardingRule -ResourceGroupName myresourcegroup -DnsForwardingRulesetName myruleset -Name "Internal" -DomainName "internal.contoso.com." -ForwardingRuleState "Enabled" -TargetDnsServer @($targetDNS1,$targetDNS2)
$forwardingrule = New-AzDnsForwardingRulesetForwardingRule -ResourceGroupName myresourcegroup -DnsForwardingRulesetName myruleset -Name "AzurePrivate" -DomainName "azure.contoso.com" -ForwardingRuleState "Enabled" -TargetDnsServer $targetDNS3
$forwardingrule = New-AzDnsForwardingRulesetForwardingRule -ResourceGroupName myresourcegroup -DnsForwardingRulesetName myruleset -Name "Wildcard" -DomainName "." -ForwardingRuleState "Enabled" -TargetDnsServer $targetDNS4
次の点に注意してください。
- 10.0.0.4 はリゾルバーの受信エンドポイントです。
- 192.168.1.2 と 192.168.1.3 はオンプレミスの DNS サーバーです。
- 10.5.5.5 は保護 DNS サービスです。
重要
このクイックスタートに示すルールは、特定のシナリオで使用できるルールの例です。 この記事で説明する転送ルールはどれも必要ありません。 転送ルールをテストし、ルールによって DNS 解決の問題が発生しないように注意してください。
ルールセットにワイルドカード ルールを含める場合は、ターゲット DNS サービスがパブリック DNS 名を解決できることを確認します。 一部の Azure サービスは、パブリック名前解決に依存しています。
プライベート リゾルバーをテストする
DNS トラフィックを DNS リゾルバーに送信し、次のような転送ルールセットに基づいてレコードを解決できるようになりました。
- リゾルバーがデプロイされる仮想ネットワークにリンクされる Azure DNS Private Zones。
- パブリック インターネット DNS 名前空間内の DNS ゾーン。
- オンプレミスでホストされるプライベート DNS ゾーン。
DNS リゾルバーを削除する
DNS リゾルバーを削除するには、リゾルバー内に作成されたリソース受信エンドポイントを最初に削除する必要があります。 受信エンドポイントが削除されたら、親 DNS リゾルバーを削除できます。
受信エンドポイントを削除する
Remove-AzDnsResolverInboundEndpoint -Name myinboundendpoint -DnsResolverName mydnsresolver -ResourceGroupName myresourcegroup
仮想ネットワーク リンクを削除する
Remove-AzDnsForwardingRulesetVirtualNetworkLink -DnsForwardingRulesetName $dnsForwardingRuleset.Name -Name vnetlink -ResourceGroupName myresourcegroup
DNS 転送ルールセットを削除する
Remove-AzDnsForwardingRuleset -Name $dnsForwardingRuleset.Name -ResourceGroupName myresourcegroup
送信エンドポイントを削除する
Remove-AzDnsResolverOutboundEndpoint -DnsResolverName mydnsresolver -ResourceGroupName myresourcegroup -Name myoutboundendpoint
DNS リゾルバーを削除する
Remove-AzDnsResolver -Name mydnsresolver -ResourceGroupName myresourcegroup