Azure FirewallのDNSプロキシ機能を試してみた(後編 ～Azure Firewall DNSプロキシ動作確認～)

みなさまおはようございます。
はやりの朝活第3回目です。
1回目は一昨日の[Azure FirewallのDNSプロキシ機能を試してみた(前編 ～Azure Private EndpointとAzure DNS Private Zone～)](https://qiita.com/hidekko/items/c8251d4605c48bab429b)こちらの記事です。
2回目は昨日の[Azure FirewallのDNSプロキシ機能を試してみた(中編 ～Azure Firewall構築～)](https://qiita.com/hidekko/items/c2de3495c30f4a55e7e6)こちらの記事です。
今は7時15分、寝坊しました。今日こそ記事を書ききれるでしょうか？

#それでは実際に動作するか検証しましょう！

実は昨日の[Azure FirewallのDNSプロキシ機能を試してみた(中編 ～Azure Firewall構築～)](https://qiita.com/hidekko/items/c2de3495c30f4a55e7e6)で殆どの構築は終わっています。
集中線をつけた設定値、[ファイアウォールポリシー]内の[DNS]の項目、こちらの以下のように設定します。
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/ed758e79-7e7f-ce01-c108-3c077e671251.png)
大事なのは最後の[DNS Proxy]を[enable]にする部分です。
これでAzure FirewallのDNSプロキシ機能が有効になりますので、最後に[Apply]をクリックします。
これにてAzure FirewallのDNSプロキシ設定は完了です。
続いて動作確認をしていきましょう。

#動作確認
Azure Private EndpointのリソースはAzure Storage ServiceのAzure Filesにしました。
Azure Private Endpointの設定方法や概念の説明は別の記事に譲るとし、接続、動作確認を行っていきます。
まずはAzure Files宛の通信がAzure FirewallのDNSプロキシ機能を利用していない状態、つまり通常の状態でPublic IPアドレスが返ってくるか確認します。
構築したAzure Filesはこちらです。
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/d05f4444-98c7-4f96-df9e-403501c5aebf.png)
まぁ可もなく不可もなくって感じですね。
Public IPアドレスはAzure Portal上から確認する術はないので、Azure Private Endpointの設定がなされているか確認します。

##Private IPアドレス設定確認
該当のストレージアカウント内の[ネットワーク]をクリックし、[プライベートエンドポイント接続]のタブをクリックすると、接続の項目があります。
これがあればAzure Private Endpointの設定がされていることになります。
![03_赤枠.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/51197db8-d00c-475c-1caf-e6b46c8cb181.png)
ここから更に[プライベート エンドポイント]の項目にある[pe-stadfdnstest01]をクリックします。
![03_赤枠02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/f88084a3-dc16-76e1-4950-67894ba21ddb.png)
すると今度はプライベート エンドポイント接続の画面が開きますので[概要]画面内の[ターゲットサブリソース]が[file]になっていることを確認しつつ[DNSの構成]をクリックします。
![04_赤枠.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/068a942e-4672-2fe2-100b-f0cbc9283711.png)
Azure FilesにAzure Private Endpointの設定で割り当てられたNICの設定画面が出てきますので、割り振られているPrivate IPアドレスを確認します。
![05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/22d2bfda-6cd1-fe7f-3cf1-49e4bc10f1e7.png)
今回は[172.16.102.132]が割り当てられていますね。
続いてAzure FilesのエンドポイントURLも併せて確認します。
再度Azure Storage Account、今回のリソース名[stafdnstest01]の画面に戻り、[エンドポイント]の設定項目を開きます。
![06_赤枠.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/ac53ef3b-498a-5a67-6db9-7e8ba13a724f.png)
Azure FilesのエンドポイントURLは[https://(対象のStorage Account名).file.core.windows.net]になります。
ここまででAzure Portal側で確認できる設定は以上になります。

続いてオンプレミス側にある手元のWindows 10で確認作業を行います。

##オンプレミス側のWindows 10からのDNS確認
もうここからはわかりきった作業ですが、念のため画像を交えて確認します。
コマンドプロンプトを開いて先ほど調べたAzure Filesのエンドポイント宛にPingでも打ってみましょう。
![07_赤枠.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/40b710bb-4aba-eab2-fdc0-c1b4c42978a5.png)
はい。
正しくPublic IPアドレスが返ってきていますね。
想定通りの動作です。
Azure Filesのエンドポイント、Public IPアドレス宛にPingを打っても返ってこないのはAzureの標準仕様です。

##オンプレミス側のルーターの参照先DNSにAzure FirewallのPrivate IPアドレスを追加する。
弊社ではYAMAHA RTX1210を使っていますので、以下のような設定を追加します。
![19_赤枠.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/c04a593e-513c-adea-2166-5ccaf68e7ab9.png)
[dns server 172.16.102.4]の部分ですね。
昨日の[Azure FirewallのDNSプロキシ機能を試してみた(中編 ～Azure Firewall構築～)](https://qiita.com/hidekko/items/c2de3495c30f4a55e7e6)を見返してみるとAzure FirewallのPrivate IPアドレスを確認していなかったのでこちらで捕捉します。
![07_赤枠.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/609ffd93-080d-5e36-bc0a-acd7ec16d1c6.png)
Azure Portalから該当のAzure Firewallを選択し、[概要画面]内の[ファイアウォールのプライベートIP]です。
まんまですね。

##再度オンプレミス側のWindows 10からのDNS確認
今度はPingではなくnslookupで確認します。
なぜ今度はICMPではなくnslookupなのかというと、Windowsの持つ[DNS Cache]という機能に惑わされないためです。
ICMP通信だとこのDSN Cacheを見てしまい、DNSを参照せずに名前解決を行ってしまう場合があります。
ですのでこういった標準機能に惑わされないためにもDNSサーバに直接名前解決を行うnslookupをここでは使います。
![08_赤枠.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/ab537f90-c982-2b41-52ee-c12e7cfbbebc.png)
前半はDNSクエリが通っておらずタイムアウトしていますが、最後にちゃんと前の手順で調べたAzure Private Endpointで設定されたPrivate IPアドレスを返してくれています。
<font color="red">素晴らしいですね！</font>
<font color="red">Azure、始まってますね！</font>
これで今回の記事の本旨である、「Azure FirewallのDNSプロキシ機能」の基本的な確認は終わりなのですが、ついでなのでこのPrivate IPアドレスのままAzure FilesをWindows 10の一ディレクトリとしてネットワークマウントできるか確認します。
これができればAzure Filesという便利なPaaSをVPN内にパケットを閉じ込めて安全に利用することができます。
[Azure FirewallのDNSプロキシ機能を試してみた(前編 ～Azure Private EndpointとAzure DNS Private Zone～)](https://qiita.com/hidekko/items/c8251d4605c48bab429b)こちらの記事で書いていた
<font color="red">「社内のデータをインターネット経由で保存するなど、けしからん！」</font>という意見に対する技術的回答になりますからね。

##Azure FilesがPrivate IPアドレスでマウントできるか確認する
再度Azure Portalに戻り、該当のAzure FilesのリソースからAzure Filesの共有ポイントを作成します。
[ファイル共有]から[+ファイル共有]のボタンをクリックし、適当に名前を付けて[作成]をクリックします。
![10_赤枠.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/cf1b4d99-22da-d7f6-328c-45e7f4b285be.png)
デプロイが確認出来たら作成した共有ポイントの右端にある[･･･]をクリックし、[接続]をクリックします。(この機能便利なんですが探し辛いです・・・)
![11_赤枠.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/72f73d83-47d4-2f0b-0362-363fc54be124.png)
接続対象が[Windows]になっていることを確認し、ドライブ文字を任意で選択し、[認証方法]は[ストレージ アカウント キー]を選択します。
大きな赤枠内にPowerShellでマウントする用のコマンドを自動生成してくれるので、これをコピーします。
![12_赤枠.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/da67c0f1-7c46-f788-9112-da669358a084.png)
実はこの大きな赤枠内にストレージアカウントのストレージアカウントキーというアクセスパスワードが平文で書かれているので、これもQiitaにそのまま晒すのは良くないのですが、このリソースはAzure Firewallも含めて全て削除済みなので問題ないです。
<font color="red">読者のみなさまが業務でお使いになるときはくれぐれも注意が必要です。</font>

それではPowerShellを実行しましょう。
PowerShellを管理者権限で開き、コマンドをコピーして実行たところ・・・

![14_赤枠_集中線.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/4f537dd4-0d60-2e7f-0e96-928fbc9ebafb.png)
はい。
見てください。
<font color="red">素晴らしいですね！</font>
<font color="red">ちゃんとPrivate IPアドレスで名前解決されています！</font>
コマンドが正しく実行されると
![15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/6f9ed574-99e3-a023-47a6-3a31c63ee06c.png)
こんな感じでZドライブでマウントされます。
エクスプローラーを開いて確認すると・・・
![18_赤枠.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643392/56c9d476-dc88-31af-b4b2-dbbd3df16499.png)
ちゃんとマウントされています！
<font color="red">完璧ですね！</font>
<font color="red">素晴らしいですね！</font>
<font color="red">Azure、始まってますね！</font>

本日何回目かわからない、素晴らしいですね！、ですがホントに素晴らしいです。
三日にわたる本記事もこれにて無事書き終えました。
Azure Firewallが毎月10万円かかるのですが、機能的には申し分ないので、このDNSプロキシ機能もAzure Firewallの導入の一助になれば良いなと思います。

本日はここまで。