1.はじめに
「OCIプライベートDNSだってオンプレミスの名前解決がしたい」ですよね?
どうやってできるのか?、ベスプラは?、を確認しようとしたときに、まとまった情報がないように見られたので、簡単ですがまとめてみました。
2.いきなり結論
・OCIプライベートDNSで、転送ルールを設定する
・設定する転送ルールの宛先は、高可用性を確保するため、オンプレミス側のVIP、またはOCIのNLBを指定する
※テスト環境など高可用性が求められない場合は、実IPを指定した転送ルール設定でOKです
3.なぜ転送ルールの宛先をVIPやNLBにする必要があるのか
転送ルールは、常に上位の設定のみを利用します。
同じドメイン宛の転送ルールを、別々のIPで2つ以上設定していても、一番上位の宛先IPにしか接続されません。
詳細は下記の公式ドキュメントをご確認ください(上記の画像は公式ドキュメントの記載(日本語訳)を抜粋したものです)。
また、転送ルールの設定については、下記の公式ドキュメントをご確認ください。
https://docs.oracle.com/en/learn/resolve-onprem-dns-from-oci/#set-up-the-forwarding-rules
4.OCI NLBを利用した高可用性DNS構成
次に、OCI NLBを利用した高可用性DNS構成について見ていきます。
OCIの内部からオンプレミスのDNSサーバ、またはOCI内のカスタムDNSサーバを利用する場合、NLBを利用して高可用性を確保することがベストプラクティスとされています。

2024年5月に、NLBのヘルスチェックにDNSヘルスチェック機能が追加されており、通常のDNSクエリと同様の通信でNLBからのヘルスチェックを実装できます。
NLBのDNSヘルスチェックの詳細については、下記をご確認ください。
5.ベストプラクティスとまとめ
最後に、公式ドキュメントで紹介されているベストプラクティス(Tips)を記載します。
簡単にまとめると、
①ステートフルルールを利用していると、短命なDNSクエリによりNSGやSecurityListの接続追跡(tracking)テーブルが溢れる可能性があるため、ステートレスルールが推奨
②DNSだからUDPだけでOKとはせず、TCPについてもNLBのリスナーやNSGの通信許可設定に追加する(DNSではUDPだけでなくTCPが利用されるケースがある)
③複数DNSサーバを宛先とする場合、ロードバランスされるため、サーバ間でしっかり同期をとること
となります。以下公式ドキュメント(日本語訳)の抜粋です。
これらの情報も確認したうえで、要件に応じて高可用性、高品質な設計を検討しましょう。


