OCIデータベース・ホストでのAutonomous Recovery Serviceでのdnsmasq Split-DNSの使用 (2026/04/03)
OCIデータベース・ホストでのAutonomous Recovery Serviceでのdnsmasq Split-DNSの使用 (2026/04/03)
投稿者: Marius Radulescu | Principal Cloud Solution Architect
Diego Losi | Master Principal Account Cloud Engineer - Database Platform formerly DBA in Oracle Consulting
Bryan Grenn | Database, Infrastructure & Cloud Solutions Architect
推奨されるOCIプライベートDNSエンドポイントアーキテクチャを採用できない場合の、実用的なホストローカルフォールバックパターン
はじめに
ハイブリッドおよびエンタープライズDNS統合の場合、Oracleは一般的に、OCIプライベートDNSをリスニングエンドポイント、フォワーディングエンドポイント、およびリゾルバルールと組み合わせて使用することを推奨しています。これにより、OCI VCNネイティブDNS解決がエンタープライズDNSサービスおよびオンプレミスリゾルバと円滑に相互運用できるようになります。このモデルでは、OCIはOCIネイティブおよびVCNローカルDNSの権威パスとして機能し、エンタープライズDNSシステムは明示的に定義されたリゾルバエンドポイントとフォワーディングポリシーを介してOCIとクエリを交換できます。
これらの推奨される展開パターンに関する有用な参考資料として、A-Teamの記事「OCIプライベートDNS – 一般的なシナリオ」があります。この記事では、一般的なOCIプライベートDNS統合モデルの概要を示し、ハイブリッドDNSトポロジにおけるリスニングエンドポイント、フォワーディングエンドポイント、およびリゾルバルールの役割を解説しています。OCIへのエンタープライズDNS接続を設計するお客様にとって、この記事は推奨される出発点となります。
しかし、すべての環境でこの推奨アーキテクチャをすぐに採用できるとは限りません。特に、DNSの動作がホストレベルのオペレーティングシステム構成と密接に結びついている場合や、データベースシステムが既にOS上で直接顧客管理のリゾルバに依存している場合など、一部の顧客環境では、OCIプライベートDNSリゾルバエンドポイントとそれに対応する転送アーキテクチャの実装は短期的には実現不可能な場合があります。
Autonomous Recovery Serviceのサブネット設定時に、OCIはVCN内に複数のプライベートDNSゾーンを作成します。これらのプライベートゾーンには、OCI内のAutonomous Recoveryサービスで使用されるDNSレコード(名前やプライベートIPアドレスなど)が含まれます。
より重要な点は、リカバリサービスでは、同じリージョン内の顧客環境間で構造的に同一のサービス名を使用する一方、それらの名前に対して返されるプライベートIPアドレスは、保護対象のデータベースが存在するVCNに固有のものであるということです。そのため、顧客が異なるVCNに存在するデータベースを保護するためにリカバリサービスを使用する場合、VCNのコンテキストに応じて異なるプライベートIPアドレスに解決される名前であっても、各VCNにまったく同じDNS名を含めることができます。
つまり、集中管理型のカスタムDNSリゾルバは、適切なリカバリサービスエンドポイントIPアドレスを特定するために必要なOCI VCNコンテキストを十分に持っていないということです。カスタムDNSサービスがそのような要求を転送しようとしても、特定のVCN内でのOCIプライベート解決に依存するため、適切なリカバリサービスプライベートIPアドレスを確実に特定することはできません。
実際には、データベースホストが顧客管理のDNSのみを使用するように構成されている場合、リカバリサービスの名前解決が失敗したり、誤った解決が行われたりする可能性があります。その結果、データベースシステムが自律型リカバリサービスと適切に通信できなくなる可能性があります。
ここで、このブログで説明するアプローチが重要になります。オペレーティングシステムへのアクセスを提供する OCI Base Database Service (BaseDB) および OCI Exadata Database Service (ExaDB-D および ExaDB-XS) システムでは、dnsmasqデータベース ホスト上でローカルに使用して、分割 DNS 構成を実装できます。この設計では、などのAutonomous Recovery Service ドメインrs.br.<region-1>.oraclecloud.com へのクエリは OCI VCN リゾルバによって解決されますが rs.br.<region-1>.oci.oraclecloud.com、その他のすべてのクエリは引き続き顧客のエンタープライズ DNS サーバーを使用します。
つまり、このブログでは、推奨されているOCIプライベートDNSエンドポイントベースのアーキテクチャを実装できない場合でも、リカバリサービスのためにOCIネイティブのDNS解決を維持する必要がある場合の、実用的な代替パターンについて説明します。

前提条件
• オペレーティングシステムからのアクセスが可能なOCI BaseDB、ExaDB-D、またはExaDB-XS
• DNSホスト名が有効になっているVCN
• OCIリゾルバへのアクセス169.254.169.254
• カスタムDNSサーバーのIPアドレス
・Rootまたはsudoデータベースホストへのアクセス
・dnsmasqホストにインストール済み
OCI を介して解決可能である必要がある正確な OCI サービス ドメインを特定することも重要です。この例では、リカバリ サービス関連のドメインは次のとおりです。
rs.br.us-ashburn-1.oraclecloud.com
rs.br.us-ashburn-1.oci.oraclecloud.com
解決策の説明
ソリューション概要
この設計では、dnsmasqデータベースホスト上で直接スプリットDNSを実装するために使用されます。これが、このソリューションの中核となるアーキテクチャ上の考え方です。
ホストにOCI DNSとカスタムDNSのどちらかを選択させるのではなく、dnsmasq両方のリゾルバパスを共存させることができます。クエリはローカルで評価され、ドメインベースのポリシーに従って転送されます。リカバリサービス関連のルックアップはOCI VCNリゾルバに送信されますが、その他のすべてのルックアップは引き続き顧客のエンタープライズDNSサーバーを使用します。
これは、単なる転送サービス以上のものになるため重要ですdnsmasq。ホスト上で軽量なDNSポリシーレイヤーとなり、必要な場所でOCIネイティブな名前解決を維持しつつ、より広範な名前空間ではカスタムDNSをデフォルトパスとして維持することを可能にします。
ローカルリゾルバ構成
データベースホストは、ループバックアドレスをリゾルバとして使用するように構成されています。 では/etc/resolv.conf、ネームサーバーエントリが に設定されています127.0.0.1。
これにより、オペレーティングシステムによって生成されるすべてのDNSクエリが、まずローカルdnsmasqプロセスに到達することが保証されます。
nameserver 127.0.0.1
dnsmasqの設定
この例では、リカバリサービスのサービスドメインは両方とも明示的にOCI VCNリゾルバに転送されます。以下のdnsmasq構成は、リカバリサービスに必要なスプリットDNS動作を実装しています。
no-resolv
listen-address=127.0.0.1
bind-interfaces
# OCI target via OCI resolverserver=/rs.br.us-ashburn-1.oraclecloud.com/169.254.169.254
server=/rs.br.us-ashburn-1.oci.oraclecloud.com/169.254.169.254
# Everything else via custom DNS
server=<CUSTOMER_DNS_IP_1>
server=<CUSTOMER_DNS_IP_2>
cache-size=0
各指令の内容
no-resolv —dnsmasqから上流のリゾルバを継承することを防止します/etc/resolv.conf。これは、/etc/resolv.confがを指しているため重要であり127.0.0.1、上流の動作は明示的に定義する必要があります。
listen-address=127.0.0.1 — dnsmasqがループバックインターフェースのみでリッスンするようにします。リゾルバはDBホストにローカルに留まり、共有サブネットサービスとして公開されません。
bind-interfaces —予測可能なバインディング動作を提供し、複数のインターフェースが存在する場合に曖昧さを回避します。
server=/rs.br.us-ashburn-1.oraclecloud.com/169.254.169.254およびserver=/rs.br.us-ashburn-1.oci.oraclecloud.com/169.254.169.254 —これが重要な分割DNSステートメントです。これにより、dnsmasqはリカバリサービスの検索をOCI VCNリゾルバに特化して送信します。
server=<CUSTOMER_DNS_IP_1>およびserver=<CUSTOMER_DNS_IP_2> —これらは、リカバリーサービス以外のすべての DNS トラフィックのデフォルトのアップストリーム リゾルバを定義します。
cache-size=0 —ローカル DNS キャッシュを無効にすることで、動作が明確になり、テストやトラブルシューティング中に検証しやすくなります。
DNS解決フロー
この構成では、データベースホストは決定論的な DNS パスに従います。ホストはすべてのクエリを に送信します127.0.0.1。dnsmasqは要求されたドメインを評価します。クエリが rs.br.us-ashburn-1.oraclecloud.comまたはの場合rs.br.us-ashburn-1.oci.oraclecloud.com、リクエストを に転送します169.254.169.254。クエリがその他のドメインの場合、リクエストをカスタム DNS サーバーに転送します。
そのため、この設計を単なるDNS転送ではなく、分割DNSと表現する方がより正確です。転送の決定は意図的にドメインごとに分割されており、各クラスのDNSリクエストに対して、適切な応答を提供するのに最適なリゾルバが応答するようになっています。
これがAutonomous Recoveryに有効な理由
この設計の有効性は、OCIネイティブな名前解決とエンタープライズ環境における名前解決の間のDNS境界を尊重することにある。
リカバリサービスは、DNSが利用できないために失敗するわけではありません。OCI VCNローカルコンテキストを必要とする名前に対して、誤ったリゾルバパスが使用された場合に失敗します。dnsmasqデータベースをホスト上にローカルに配置し、リカバリサービスによる名前解決をOCIリゾルバに誘導することで、OCIがリカバリサービスに期待する解決パスを維持しつつ、その他のすべての処理にはエンタープライズDNSを引き続き使用できます。
これにより、両方の要件が問題なく共存することが可能になります。OCI固有の名前解決は正しく維持され、顧客が管理するDNSは、ネームスペースの残りの部分における標準パスとして維持されます。
ここではローカルのdnsmasqが推奨される理由
このロジックを別の仮想マシンや集中型DNSフォワーダーに配置したくなるかもしれませんが、dnsmasqこのユースケースでは、データベースホスト上で直接実行する方が運用上よりクリーンです。
ローカル展開モデルでは、復旧プロセスに新たなコンピューティング依存関係、ネットワークホップ、および可動部品を導入する必要がありません。DNSの動作はローカルかつ透過的でホスト固有のままであるため、検証とトラブルシューティングが容易になります。
オペレーティングシステムからのアクセスが可能なBaseDB、ExaDB-D、およびExaDB-XSシステムにおいては、この設計は実用的かつ洗練されたものとなる。
まとめ
OCIデータベースシステムが顧客管理DNSを使用するように構成されている場合、Autonomous Recovery Serviceは、微妙ながらも重要な名前解決上の課題をもたらします。Recovery Serviceのエンドポイント名は環境間で共有されますが、対応するプライベートIPアドレスはVCN固有です。そのため、集中管理型のカスタムDNSリゾルバでは、Recovery Serviceに対して確実に正しい応答を返すことができません。
適切な設計とは、カスタムDNSを放棄することではなく、DNS解決を選択的に適用することである。
dnsmasqデータベースホスト上でローカルに実行し、/etc/resolv.confを使用するように構成することで127.0.0.1、顧客は、OCIネイティブのリカバリサービス解決を維持しつつ、他のすべてのルックアップにはエンタープライズDNSを引き続き使用する分割DNS構成を実装できます。
この設計は軽量で、決定論的であり、検証が容易で、運用がシンプルで、OCI BaseDB、ExaDB-D、およびExaDB-XS環境に最適です。最も重要な点は、リカバリサービス関連の名前が正しいDNSコンテキスト(VCN内)で解決されることを保証することです。
コメント
コメントを投稿