App Service における DNS の構成と名前解決のいくつかの改善について
※本記事は Azure App Service ブログ Improvements to DNS configuration and name resolution in App Service の日本語抄訳版です。
Azure App Service の DNS 設定と名前解決の改善に向けた取り組みを1年以上前に開始しました。その取り組みでは、下記いくつかの領域での改善を目指しています。
- ドキュメントの改善
- Windows と Linux の挙動の一致
- サイトプロパティを使用した構成
- Azure ポータルでの構成
- ロギング機能
このブログ投稿では、私たちが構築しているものの詳細と、各項目の現在の進捗状況について共有いたします。
ドキュメントの改善
DNS 設定と名前解決については、公開ドキュメントに独自の記事があります。そのドキュメントでは、名前解決の仕組みや設定オプションについて詳しく説明しています。まだこの記事を読んでいない場合は、この投稿の理解の前提のために、まずそちらを読むことをお勧めします。
Windows と Linux の挙動の一致
App Service でアプリケーション設定やサイトプロパティを使用して DNS サーバーを明示的に設定する場合、Windows と Linux が設定されたサーバーを処理する方法に違いはありませんでした。ただし、仮想ネットワークで設定された DNS サーバーを使用する場合、Windows アプリには、DNS サーバーのリストを並べ替え、名前解決に使用する最初の2つの DNS サーバー IP アドレスのみを選択する動作がありました。これは、2つ以上のサーバーが設定されている場合や、サーバーの順序が重要な場合に、名前解決の動作に影響を与える可能性があります。
約 1 年前、Linux と同様に最大5つのサーバーを使用できるようにし、並べ替えを削除しました。意図的または意図せずに並べ替えに依存していた顧客に対して変更を防ぐために、新規作成されたサイトのデフォルト動作として「並べ替えなし」を設定し、既存のサイトに対してはオプトインオプションとしました。ほとんどの顧客にとっては影響はありません。仮想ネットワークから DNS サーバーを使用し、2つ以上の DNS サーバーが設定され、順序が影響を与える組み合わせは非常にまれです。
ご利用の環境がまさしくこのシナリオの状況にある場合は、次のコマンドを呼び出して、サイトがまだ DNS サーバーの並べ替えを使用しているかどうかを確認できます。
az rest --method GET --uri /subscriptions/<sub-id>/resourceGroups/<resource group>/providers/Microsoft.Web/sites/<site name>?api-version=2022-03-01 --query 'properties.dnsConfiguration'
次のプロパティを探します。
{
"dnsLegacySortOrder": true
}
プロパティが返された場合は、次のコマンドを呼び出して、新しい「並べ替えなし」の動作にオプトインできます。
az rest --method POST --uri /subscriptions/<sub-id>/resourceGroups/<resource group>/providers/Microsoft.Web/sites/<site name>/disableVirtualNetworkDnsSorting?api-version=2022-03-01
Windows と Linux のもう1つの違いは、名前解決のデフォルト動作でした。リトライタイムアウト、リトライカウント、キャッシュタイムアウトを設定できますが、すべてにデフォルト値があります。現在の値はドキュメントで確認できますが、現在デフォルト値を揃える変更を展開しています。現在の更新が展開されると、デフォルトは次のセクションに記載されているものになります。
サイトプロパティを使用した構成
現在、DNS 設定を構成する最も一般的な方法は、アプリケーション設定を使用することです。ただし、アプリケーション設定には、次のような欠点があります。
- スペルミスをしてしまう場合もあり、また、API レベルの検証がありません。
- Azure ポリシーを使用して制御/監査することができません。
- 値を読み取るには書き込み権限が必要です(アプリケーション設定にはしばしばシークレットが含まれるため、その場合は追加のセキュリティ層を設けることもあります)。
これらの課題に対応するために、すべての DNS 設定に対してサイトプロパティを導入しています。アプリケーション設定は引き続き機能しますが、サイトプロパティが設定されている場合は、それが優先されます。プロパティは、dnsConfiguration
プロパティの下にグループ化されています。
プロパティ名 | アプリケーション設定 | 設定可能な値 | 規定値 | 説明 |
---|---|---|---|---|
DnsServers | WEBSITE_DNS_SERVER | IPv4 アドレス | なし | Azure のデフォルト DNS または仮想ネットワークから継承された DNS サーバーを上書きします。最大5つのサーバーが使用できます。 |
DnsAltServer | WEBSITE_DNS_ALT_SERVER | IPv4 アドレス | なし | この特定の DNS サーバーを、設定された DNS サーバーのリストに追加します。これは、明示的に設定された DNS サーバーと仮想ネットワークから継承された DNS サーバーの両方に追加されます。 |
DnsMaxCacheTimeout | WEBSITE_DNS_MAX_CACHE_TIMEOUT | 0 - 60 | 30 | DNS の結果は、個々のレコードの TTL に従ってキャッシュされますが、定義された最大キャッシュタイムアウトより長くはありません。キャッシュをゼロに設定すると、キャッシュが無効になります。 |
DnsRetryAttemptTimeout | WEBSITE_DNS_TIMEOUT | 1 - 30 | 3 | 再試行または失敗する前のタイムアウト。タイムアウトは、プライマリが応答しない場合のセカンダリサーバーの結果を待つ時間も定義します。 |
DnsRetryAttemptCount | WEBSITE_DNS_ATTEMPTS | 1 - 5 | 3 | この設定は、解決する試行回数を定義します。1 は再試行なしを意味します。 |
DnsAltServer
と新しいデフォルト値は現在展開中です。その他のプロパティは、現在利用可能です。(訳注:左記記述は原文発行時点の記述です。)
Azure ポータルでの構成
新しいプロパティに基づいて、設定をサポートする UX の構築が開始されました。これにより、すべての DNS オプションを表示および設定する場所が 1 つになります。設定ページは、ネットワークハブページ(訳注:Azure Portal のネットワークブレードのこと)から利用でき、2024 年第 2 四半期には準備が整う予定です。
ロギング機能
最後に、私たちはログ機能の改善に取り組んでいます。サポートスタッフが DNS の動作問題のトラブルシューティングを支援するために、ログ機能の追加を始めています。弊社内部での利用実績からの学びを基に、診断ログに新しいログカテゴリを追加して、名前解決ログを Azure Monitor に送信できるようにします。この機能は 2024 年下半期に提供される予定です。
2024 年 01 月 30 日時点の内容となります。
本記事の内容は予告なく変更される場合がございますので予めご了承ください。