はじめに
Azure DNS Private Resolverを利用してDNSプライベートゾーンをProxyしてみたいと思います。
-
Azure DNS Private Resolver とは | Microsoft Learn
この記事では、Azure DNS Private Resolver サービスの概要の説明を開始します。
learn.microsoft.com
これまでAzureではDNSをオンプレミスなどで利用する場合にはDNSプロキシを構築するかFirewallの機能を利用する必要がありました。
-
Azure FirewallのDNS Proxy機能で実現するシームレスなハイブリッドクラウド環境 - 技術的な何か。
はじめに ハイブリッドクラウド環境の構築において重要な機能のひとつにDNSがあります。しかし、ひとつ問題としてオンプレにしろクラウドにしろDNSサーバーの運用は行いたくないですね。 そこでAzureに
level69.net
Azure DNS Private Resolverはこれを簡単に解決できるマネージドサービスです。
簡単なシナリオとしてVPNの接続先からAzure DNSプライベートゾーンを参照してサーバーにアクセスしてみたいと思います。
本機能はプレビューです。仕様の変更の可能性もあるので注意してください。
前提条件
今回のシナリオはAzureとAWSをVPNで接続された環境を利用しています。そのためVPNでの双方の接続は完了していることが前提です。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を運用したくない場合は本機能を利用してみてはいかがでしょうか。