※本記事は、Cody Brinkman による “How to manage your GoDaddy domain with OCI DNS” を翻訳したものです。
February 19, 2021
GoDaddyでドメインを登録したけれども、DNSゾーンの管理にはOracle Cloud Infrastructure(OCI)を使用したいというユーザーの方を最近よく見かけます。なぜOCI DNSを使用するのでしょうか。解説していきましょう。
この記事は、OCIを使用してDNSゾーンの管理を始めたいけれども、実際に「Change」ボタンをクリックするのが怖いという方に安心していただくために執筆しています。この話をするとほぼ必ず、「待って、本当にその方法でアプリケーションにアクセスできなくなることはない?絶対に?」と言われますし、そう思われるのも当然です。よくわかります。DNS管理は怖いのです。DNS管理でエラーが発生すると、場合によってはアプリケーションがアクセス不可になります。多くの企業にとって、この停止時間は大きな財務的損失につながります。
ここではGoDaddyを例として使用しますが、以下の手順はほとんどのレジストラに当てはまります。このプロセスは、正しく実行すれば停止時間ゼロですぐに完了し、痛みを伴うこともありません。
前提条件
• 既存のドメイン名。オラクルはレジストラではないため、ベンダーからドメインを購入していただく必要があります。
• OCIテナンシーおよび適切な権限を持つユーザー。DNS用のポリシーの例についてはこちらのドキュメントをご覧ください。
• 公開Webサイト。このサイトのIPアドレスが、ホスト名の解決先になります。私はAlways Freeのコンピュート・インスタンスをデプロイして、そこにシンプルなNginx Webサーバーをインストールしました。
OCI DNSでゾーンを管理する理由
• DNSの応答性:DNS問合せでの業界屈指の応答時間によって、アプリケーションのパフォーマンスを最適化できます。DNSレコードは1分以内に世界中に伝播されます。
• サポート対象のレコード:オラクルは27の一般的なDNSリソース・レコード・タイプをサポートしています(A、AAAA、CNAME、DNSKEY、MX、NS、SOA、TXTなど)。
• セカンダリDNS:重要なアプリケーションの可用性を確保するために、プライマリDNSを冗長的に補完するセカンダリDNSをセットアップできます。
• DDoSからの保護:OCI DNSは、SYNフラッド攻撃、UDPフラッド攻撃、ICMPフラッド攻撃、NTP増幅攻撃など、一般的なレイヤー3およびレイヤー4の攻撃から保護します。分散型サービス妨害攻撃(DDoS)からの保護はすべてのOCIアカウントに適用されるため、構成作業は不要です。悪意のあるアクティビティの監視機能も追加費用なしで24時間提供されています。
• グローバル・エニーキャスト・ネットワーク:エニーキャスト・ネットワーク内では、リクエストを行っているユーザーにもっとも近いポイント・オブ・プレゼンスがDNSリクエストに応答するため、可能な限り最速のDNSパフォーマンスが実現されます。
DNSとは
ドメイン・ネーム・システム(DNS)はインターネットの電話帳です。WebブラウザはIPアドレスによって相互に通信します。IPアドレスは32ビット(IPv4)または128ビット(IPv6)の数値であり、IPv4のIPアドレスは192.168.17.43のようになります。人はoracle.comなどのドメイン名を使用してオンラインで情報にアクセスします。Webブラウザに何か入力するたびに、入力した内容が、機械が読み取れるIPアドレスに変換されます。その変換を実行するのがDNS解決であり、ホスト名が、コンピュータが読み取れるIPアドレスに変換されるのです。
DNS解決の仕組み
ドメイン名の解決は複数のフェーズに分かれます。1回のステップで終わるプロセスとなる場合もあれば、複数のサーバーとの通信が発生する場合もあります。以下の図では、ブラウザにホスト名を入力したときの処理の流れを説明しています。

- 最初に、ブラウザとオペレーティング・システムが自らのキャッシュをチェックし、oracle.comがないか探します。IPアドレスが見つからない場合、このリクエストが次のレベルに送信されます。
- 次のレベルはリゾルバ・サーバー。これは利用中のインターネット・サービス・プロバイダ(ISP)です。このリゾルバが自らのレコードをチェックし、oracle.comのIPがないか探します。必要な情報がこのサーバーのキャッシュ内に存在する場合は、リゾルバがこのホスト名のIPアドレスを送り返します。サーバーのキャッシュ内に存在しない場合は、このリクエストが次のレベルに送信されます。
- これらのISP DNSリゾルバは、他のDNSサーバーに対して正しいIPアドレスを問い合わせるように構成されています。DNS階層内の1つ目にあるトップレベル・サーバーはルート・サーバーです。13セットのルート・サーバーが世界中に戦略的に配置されています。これら13セットを12の事業者によって運用することで、正確性、可用性、セキュリティを確保しています。ルート・サーバーはドメイン名をIPアドレスにマッピングするわけではなく、トップレベル・ドメイン(TLD)サーバーに関する情報を保持しています。TLDは、.com、.org、.govなど、ドメイン名の末尾のセクションです。この記事の例では、ルート・サーバーはリゾルバに対して、.comドメイン用のTLDへの経路を案内します。
- 次に、リゾルバはそのTLDサーバーに、oracle.comのIPアドレスを問い合わせます。しかし、このTLDサーバーもそのIPアドレスについて知りません。これらのサーバーでは、セカンドレベル・ドメインのデータが管理されています。そのため、TLDはリゾルバに対して次の最終のレベルとなる、権威DNSサーバーへの経路を案内します。
- DNSルックアップ・リクエストの最終地点まで来ました。権威DNSサーバーはoracle.comおよび既存のサブドメインのIPアドレスを知っています。
- 目的を達成しました。リゾルバはoracle.comのIPアドレスを送り返し、Webブラウザがユーザーをサイトに案内します。ホスト名のレコードはローカル・マシンにキャッシュされ、これ以降のリクエストでは最初のステップで取得できるようになります。
手順が多いように思えますが、このプロセス全体にかかる時間は数ミリ秒です。人の目では、DNS階層全体を辿ったリクエストとローカル・キャッシュ内でのリクエストの差に気づくことはできません。
TTL とはなにか、それがなぜ重要か
私の経験上、Time to Live(TTL)はもっとも理解されていないDNSの要素です。TTLはDNSレコードの有効期限であり、DNSサーバーまたはリゾルバに対して問合せをキャッシュする期間を指定します。この期間を過ぎると、新しい問合せのリクエストが実行されます。TTLが長いほど、サーバーがその情報をキャッシュに保持する期間が長くなり、TTLが短いほど、サーバーがその情報をキャッシュに保持する期間が短くなります。
oracle.comの例を見てみましょう。TTLが3,600秒のレコードを作成して、oracle.comのIPアドレスを1.2.3.4と指定した場合、サーバーはそのレコードに関する情報を1時間保持します。このレコードの解決先を1.2.3.55に変更した場合でも、同じリゾルバを使用するすべての人に、このレコードの最初の情報(1.2.3.4)が送信されることになります。TTLが期限切れになるまで、このサーバーに問合せが送信されないためです。1時間が経った後、下流のサーバーが更新され、oracle.comは新しい値(1.2.3.55)に解決されるようになります。
変更の頻度が高いレコードについては、TTLを可能な限り短い期間にするのがベストプラクティスです。そうすることで、変更が発生した場合に、エンドユーザーに最新の情報が送信されます。今はDNSの管理情報を変更しようとしていますので、移行の前にレコードのTTLの値を小さくすることをお勧めします。そうすれば、DNS階層内のサーバーのキャッシュが新しいDNS情報に更新されるタイミングがより早くなります。移行の完了後は、TTLを通常のレベルまで増やしてかまいません。
DNS解決とTTLの簡単な解説は以上です。何か新しい学びはあったでしょうか。それでは、この記事をクリックしていただいた、その本題に入りましょう。
OCI DNS でGoDaddyドメインを管理するための設定手順
1. GoDaddy ドメインに移動します。

2. 「Manage DNS」を選択します。

3. Advanced Features で、「Export Zone File」 をクリックします。

4. OCI テナンシーにログインし、「Networking」→「DNS Management」に移動します。

5. パブリック・ゾーンを作成します。OCI DNS では他のタイプのゾーンも作成できますが、今回は他のタイプのゾーンは使用しません。

6. 「Import」をクリックし、ダウンロードしたテキスト・ファイルを選択します。私の場合、インポートするには ‘ parked ‘ レコードを削除する必要がありました。このレコードがすべての GoDaddy ドメインに存在するかは不明です。

7. これで、GoDaddy にあったすべてのレコードを使用したゾーンが作成されました。これらのレコードを簡単に確認して、すべての情報が正しくインポートされたことを確認しましょう。これらのネーム・サーバーの情報は、次のステップで使用します。

8. ドメインについては、これまで一切変更を行っていません。OCIで作成したゾーンは、現時点ではGoDaddy内の登録済みドメインに接続されていません。先ほど説明しましたが、権威ネーム・サーバーがドメインのIPアドレスを管理し、それをユーザーのブラウザに送信します。そのため、GoDaddyに対してGoDaddyのデフォルトの権威ネーム・サーバーの使用を停止し、代わりにOCIのネーム・サーバーを使用するように指定する必要があります。このプロセスによって、ゾーン管理がGoDaddyからOCIに切り替わります。では、GoDaddyに戻って、ドメインで使用されるネーム・サーバーを変更しましょう。

9. 「Enter my own nameservers (advanced)」 をクリックして、OCIゾーンのネーム・サーバーを入力します。

10. これで、ドメインが OCI によって管理されるようになりました。新しいレコードを作成してテストしてみましょう。

11. この変更を公開します。バックエンドでネーム・サーバーが更新されるため、新しいレコードが Web上に公開されるまでに少し時間がかかります。その間も、既存のゾーンはすべて通常通り機能します。


次のステップ
この記事では、サイトを停止することなく、ゾーン管理をGoDaddyからOCIに切り替える方法について確認しました。最初に、ゾーン情報をコピーするために、GoDaddyからエクスポートしてOCI DNSにインポートしました。実際の管理は、GoDaddyに対して、ドメインに元々設定されているデフォルトのネーム・サーバーではなくOCIのネーム・サーバーを使い始めるようにGoDaddyに指定した時点で切り替えられました。この例ではGoDaddyを使用しましたが、他のドメイン・レジストラにも同じ手順が適用されます。
これらの手順は簡単なように見えますが、まずはテスト・ゾーンを移行することをお勧めします。この手順によって、今実行していることや、本番用のゾーンを移行する段階でのサイトの動作について正確に把握できるからです。
このプロセスをテストするには、Oracle Cloud Infrastructureの30日間の無償トライアルを活用するのが良いでしょう。このトライアルには、300米ドル分のクレジットとAlways Freeサービスが含まれています。
