Azure

Azure DNS Private Resolver を利用してDNSプライベートゾーンをProxyする

はじめに

Azure DNS Private Resolverを利用してDNSプライベートゾーンをProxyしてみたいと思います。

Azure DNS Private Resolver とは | Microsoft Learn
Azure DNS Private Resolver とは | Microsoft Learn

この記事では、Azure DNS Private Resolver サービスの概要の説明を開始します。

learn.microsoft.com

これまでAzureではDNSをオンプレミスなどで利用する場合にはDNSプロキシを構築するかFirewallの機能を利用する必要がありました。

Azure FirewallのDNS Proxy機能で実現するシームレスなハイブリッドクラウド環境 - 技術的な何か。
Azure FirewallのDNS Proxy機能で実現するシームレスなハイブリッドクラウド環境 - 技術的な何か。

はじめに ハイブリッドクラウド環境の構築において重要な機能のひとつにDNSがあります。しかし、ひとつ問題としてオンプレにしろクラウドにしろDNSサーバーの運用は行いたくないですね。 そこでAzureに

level69.net

Azure DNS Private Resolverはこれを簡単に解決できるマネージドサービスです。

簡単なシナリオとしてVPNの接続先からAzure DNSプライベートゾーンを参照してサーバーにアクセスしてみたいと思います。

本機能はプレビューです。仕様の変更の可能性もあるので注意してください。

前提条件

今回のシナリオはAzureとAWSをVPNで接続された環境を利用しています。そのためVPNでの双方の接続は完了していることが前提です。AWS側は疑似オンプレです。

接続方法は下記を参考してください。

マネージドサービスだけでAzureとAWSを接続する方法。 - 技術的な何か。
マネージドサービスだけでAzureとAWSを接続する方法。 - 技術的な何か。

はじめに 2019/2/6 AWSでサイト対サイト VPNでIKEv2に対応したニュースが入ってきました。 AWS Site-to-Site VPN Now Supports IKEv2 https:

level69.net

構成

構成はAzure側にWebサーバーを設置し、AWS側にはアクセス元であるクライアントを用意します。

今回、新たに構成するのはDNSプライベートゾーンとAzure DNS Private Resolverです。

DNSプライベートゾーン

DNSプライベートゾーンはWebサーバーをAレコードで指定します。

Azure DNS Private Resolver

Azure DNS Private Resolverを作成します。

基本の項目で名前のリージョン、仮想ネットワークを指定します。

構成で必要なのはinbound endpointです。

ここで注意すべきことがあります。

下記のようなエラーが発生した場合はサブネットの範囲を変更する必要があります。

10.0.1.0/24~10.0.16.0/24は予約のアドレスとして使用できません。

{"code":"DeploymentFailed","message":"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.","details":[{"code":"BadRequest","message":"The specified subnet '/subscriptions/fa4dc6d1-abc7-4363-8d47-36340ae168e2/resourceGroups/aws/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1' could not be used to provision the inbound endpoint. Please make sure you use a subnet of at least /28 and at most /24 size, which is not currently in use by any other DNS resolver endpoint or any other Azure service workloads, and does not collide with the reserved subnet spaces of '10.0.1.0/24;10.0.2.0/24;10.0.3.0/24;10.0.4.0/24;10.0.5.0/24;10.0.6.0/24;10.0.7.0/24;10.0.8.0/24;10.0.9.0/24;10.0.10.0/24;10.0.11.0/24;10.0.12.0/24;10.0.13.0/24;10.0.14.0/24;10.0.15.0/24;10.0.16.0/24'."}]}

 

かぶる場合などはサブネットを/28~/24で上記のアドレスにかぶらないように作成する必要があります。

 

inbound endpointを指定したら作成します。outbound endopointは必要ありません。

作成後はAzure DNS Private ResolverのIPを確認します。これがAWS側(疑似オンプレ)から指定するIPになります。

名前解決

AWS側(疑似オンプレ)から名前解決できるか確認します。

Azure DNS Private Resolverを指定しない場合

名前が解決できていないがわかります。外部のDNSを参照しようとしています。

ubuntu@ip-172-16-4-226:~$ dig server1.contoso.com

; <<>> DiG 9.18.1-1ubuntu1.1-Ubuntu <<>> server1.contoso.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 46260
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;server1.contoso.com.           IN      A

;; AUTHORITY SECTION:
contoso.com.            300     IN      SOA     ns1-205.azure-dns.com. azuredns-hostmaster.microsoft.com. 1 3600 300 2419200 300

;; Query time: 32 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Tue Sep 20 12:58:03 UTC 2022
;; MSG SIZE  rcvd: 132

Azure DNS Private Resolverを指定する場合

確認したAzure DNS Private ResolverのIPを指定して名前解決します。

解決できることが確認できます。

ubuntu@ip-172-16-4-226:~$ dig @10.0.253.4 server1.contoso.com

; <<>> DiG 9.18.1-1ubuntu1.1-Ubuntu <<>> @10.0.253.4 server1.contoso.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1181
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;server1.contoso.com.           IN      A

;; ANSWER SECTION:
server1.contoso.com.    1800    IN      A       10.0.0.4

;; Query time: 164 msec
;; SERVER: 10.0.253.4#53(10.0.253.4) (UDP)
;; WHEN: Tue Sep 20 12:58:13 UTC 2022
;; MSG SIZE  rcvd: 53

以上のようにAzure DNS Private Resolverを利用するとAWS側(疑似オンプレ)からもDNSプライベートゾーンを利用できるようになります。

Webのアクセスも問題ないです。

AWSのDHCPオプションセットでDNSを指定する

おまけです。AWSに限った話でDHCPオプションセットでDNSを指定することで、VPC内のDNSをAzure側に指定することができます。

 

結果

ubuntu@ip-172-16-4-226:~$ dig server1.contoso.com

; <<>> DiG 9.18.1-1ubuntu1.1-Ubuntu <<>> server1.contoso.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9374
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;server1.contoso.com.           IN      A

;; ANSWER SECTION:
server1.contoso.com.    1800    IN      A       10.0.0.4

;; Query time: 174 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Tue Sep 20 13:07:43 UTC 2022
;; MSG SIZE  rcvd: 64
ubuntu@ip-172-16-4-226:~$ ip r
default via 172.16.0.1 dev eth0 proto dhcp src 172.16.4.226 metric 100
10.0.253.4 via 172.16.0.1 dev eth0 proto dhcp src 172.16.4.226 metric 100
172.16.0.0/20 dev eth0 proto kernel scope link src 172.16.4.226 metric 100
172.16.0.1 dev eth0 proto dhcp scope link src 172.16.4.226 metric 100

 

まとめ

Azure DNS Private Resolverは簡単にDNSプロキシとして利用することができます。ほかにも様々な機能がまとまったマネージドのサービスです。

オンプレでDNSを運用したくない場合は本機能を利用してみてはいかがでしょうか。

 

-Azure
-