Virtual Cloud NetworkのDNS
ドメイン・ネーム・システム(DNS)により、コンピュータはIPアドレスのかわりにホスト名を使用して、相互に通信できます。この機能は、インターネット・トラフィックでDNSを使用するには、Virtual Cloud Network (VCN)内のトラフィックに制限されます。DNS and Traffic Managementを参照してください
VCNのDNSの選択肢
VCN内のインスタンスに対するDNSの名前解決の選択肢は次のとおりです。この選択は、VCNのサブネットごとにサブネットのDHCPオプションのセットを使用して行います。これは、各サブネットに関連付けられるルート表およびセキュリティ・リストの構成方法に類似しています。詳細は、DHCPオプションを参照してください。
関連付けられたサブネットのDNSタイプを指定するには、「ドメイン・ネーム・サーバー」DHCPオプションを使用します。オプションの値を変更する場合は、インスタンスでDHCPクライアントを再起動するか、インスタンスを再起動します。そうしないと、DHCPクライアントがリースをリフレッシュするまで(24時間以内)、変更は選択されません。
- デフォルトの選択肢: Internet and VCN Resolver
- これはOracle提供のオプションで、次の2つで構成されます:
- カスタム・リゾルバ
- 解決にはDNSサーバーを使用します(最大3つ)。次のようなDNSサーバーが有効です:
DNSドメインおよびホスト名について
VCNおよびサブネットを最初に作成する際、それぞれのDNSラベルを指定できます。サブネットDNSラベルは、VCN自体がDNSラベル付きで作成されている場合にのみ設定できます。ラベルは、oraclevcn.com
という親ドメインとともに、VCNドメイン名とサブネット・ドメイン名を形成します:
- VCNドメイン名:
<VCN-DNS-label>.oraclevcn.com
- サブネット・ドメイン名:
<subnet-DNS-label>.<VCN-DNS-label>.oraclevcn.com
その後、コンピュート・インスタンスを作成するときに、インスタンスの作成時に自動的に作成されるVNIC (プライマリVNIC)にホスト名を割り当てることができます。サブネット・ドメイン名とともに、ホスト名はインスタンスの完全修飾ドメイン名(FQDN)を形成します:
- インスタンスFQDN:
<hostname>.<subnet-DNS-label>.<VCN-DNS-label>.oraclevcn.com
例: database1.privatesubnet1.abccorpvcn1.oraclevcn.com
。
FQDNはインスタンスのプライベートIPアドレスに解決されます。また、Internet and VCN Resolverでは、プライベートIPアドレスに対応するホスト名を決定できるDNSの逆参照も実行されます。
セカンダリVNICをインスタンスに追加する場合は、ホスト名を指定できます。この結果生成されるFQDNは、VNICのプライベートIPアドレス(プライマリ・プライベートIP)に解決されます
セカンダリ・プライベートIPをVNICに追加する場合は、ホスト名を指定できます。その結果生成されるFQDNは、そのプライベートIPアドレスに解決されます。
ホストにメッセージを送信する場合は常にインスタンスFQDNを使用するか、VCN内で送信されるメッセージのホスト名のみを指定することをお薦めします。
DNSラベルおよびホスト名の要件
- VCNおよびサブネット・ラベル: 最大15文字の英数字で、文字で始まる必要があります。ハイフンおよびアンダースコアは使用できません。値は後で変更できません。
- ホスト名: 最大63文字で、文字および数字を使用できます。ハイフンは許可されます。ピリオドは許可されず、ホストの名前の先頭または末尾にハイフンを使用することはできません。ホスト名をすべて数値にすることもできません。ホスト名はRFC 952および1123に準拠している必要があります。値は後で変更できます。
ネットワーキング・サービスでは、63文字までのホスト名がサポートされます。ただし、一部の古いOSでは、より短いホスト名が適用されます。Linuxでは、最大許容ホスト名長を検索する方法を次に示します。
getconf HOST_NAME_MAX
インスタンスのホスト名がOS固有の最大値を超える場合、そのインスタンスのFQDNをVCN内で解決できません。ネットワーキング・サービスを使用してVNICの更新し、ホスト名を短い値に変更できます。
一意性:
- VCN DNSラベルは、テナンシのVCNs全体で一意である必要があります(必須ではありませんが、ベスト・プラクティス)
- サブネットDNSラベルは、VCN内で一意である必要があります
- ホスト名はサブネット内で一意である必要があります
DNSのラベルまたはホスト名とオブジェックに割り当てることのできるわかりやすい名前(表示名)とを混同しないでください。表示名が一意である必要はありません。
ホスト名の検証と生成
VCNおよびサブネットのDNSラベルを設定した場合、Oracleは、コンピュート・インスタンスの作成時にDNSコンプライアンスおよび一意性のホスト名を検証します。これらの要件のいずれかが満たされない場合、作成リクエストは失敗します。
インスタンスの作成時にホスト名を指定しない場合、Oracleはインスタンスの表示名をホスト名として使用しようとします。表示名が検証に合格しない場合、Oracleはサブネット全体で一意のDNS準拠のホスト名を自動的に生成します。生成されたホスト名は、コンソールのインスタンスのページで確認できます。APIでは、ホスト名はVNICオブジェクトの一部です。
SDKまたはCLIを使用したインスタンスの作成時にホスト名または表示名を指定しない場合、Oracleでは表示名またはホスト名が生成されない。これは、インスタンスがInternet and VCN Resolverを使用して解決できないことを意味します。
コンソールを使用したインスタンス作成時にホスト名または表示名を指定しない場合、Oracleでは、サブネットに有効なDNSラベルが関連付けられていれば、表示名および対応するDNSレコードが自動作成されます。
インスタンス上のLinux OSホスト名は、インスタンスの作成時に設定したホスト名(またはOracleで生成されたホスト)に自動的に設定されます。インスタンスで直接ホスト名を変更する場合、インスタンスのFQDNは更新されません。
セカンダリVNICをインスタンスに追加したり、VNICにセカンダリ・プライベートIPを追加すると、Oracleはホスト名の生成を試行しません。Internet and VCN Resolverを使用してプライベートIPアドレスを解決できるようにする場合は、有効なホスト名を指定してください。
DNSのDHCPオプション
VCNのDNSには、2つのDHCPオプションが関連しています:
-
ドメイン・ネーム・サーバー: DNSタイプ(Internet and VCN ResolverまたはCustom Resolver)の選択肢を指定します。
- DHCPオプションのデフォルト・セットのデフォルト値: Internet and VCN Resolver
-
検索ドメイン: 単一の検索ドメインを指定する場合。DNS問合せを解決するときに、OSはこの検索ドメインを問合せ中の値に追加します。DHCPオプションのセットに対して指定できる検索ドメインは1つのみです。
- DHCPオプションのデフォルト・セットのデフォルト値:作成中にVCNのDNSラベルを指定したが、検索ドメインの値を指定していない場合、VCNドメイン名(
<VCN-DNS-label>.oraclevcn.com
)。検索ドメイン値を指定した場合は、その値が「検索ドメイン」オプションに使用されます。DNSラベルを指定しない場合、DHCPオプションのデフォルト・セットには「検索ドメイン」オプションは含まれていません。
- DHCPオプションのデフォルト・セットのデフォルト値:作成中にVCNのDNSラベルを指定したが、検索ドメインの値を指定していない場合、VCNドメイン名(
別のサブネット/VCN内のホストにメッセージを送信するときに、常にインスタンスFQDNを使用し、DNS検索ドメインに依存しないことをお薦めします。
通常、次の条件が満たされる場合、DHCPオプションのセット(デフォルトのセットまたは ユーザーが作成するカスタム・セット)が最初に作成されるとき、ネットワーキング・サービスによって自動的に「検索ドメイン」オプションが追加されて、VCNドメイン名( <VCN-DNS-label>.oraclevcn.com
)に設定されます:
- VCNにDNSラベルがあります
- DNSタイプ = Internet and VCN Resolver
- DHCPオプションのセットの作成中に検索ドメインを指定しませんでした
DHCPオプションのセットが作成された後は、いつでも「検索ドメイン」オプションを削除したり、別の値に設定したりできます。
VCNでDNSホスト名を有効にする方法
Internet and VCN Resolver機能がリリースされた後に作成された新しいVCNのみが、この機能に自動的にアクセスします。新しいVCNのDNSホスト名を有効にする方法は、使用するインタフェースによって異なります。
- VCNの作成時:
- 「このVCNでDNSホスト名を使用」を選択します
- VCNのDNSラベルを指定します。このオプションを選択してDNSラベルを指定しない場合、コンソールはVCNでInternet and VCN Resolverを使用することを想定し、VCNのDNSラベルを自動的に生成します。コンソールで、指定したVCN名が取得され、英数字以外文字が削除され、最初の文字は文字であることを確認し、ラベルが15文字に切り捨てられます。コンソールに結果が表示されます。別の名前が得られない場合は、「DNSラベル」フィールドに別の値を入力できます。DNSドメインおよびホスト名についてを参照してください。
- サブネットの作成時:
- 再度、「このサブネットでDNSホスト名を使用」を選択します
- 各サブネットのDNSラベルを指定します。チェックボックスをオンにしても、特定のサブネットのDNSラベルを指定しない場合、コンソールでは、Internet and VCN Resolverをサブネットに使用するとみなし、サブネットのDNSラベルが自動的に生成されます。コンソールは、指定したサブネット名を取得し、英数字以外文字を削除します。最初の文字列が文字であることを確認し、ラベルが15文字に切り捨てられます。コンソールに結果が表示されます。別の名前が得た場合は、「DNSラベル」フィールドにカスタム値を入力できます。DNSドメインおよびホスト名についてを参照してください。 ノート
サブネットDNSラベルは、VCN自体がDNSラベル付きで作成されている場合にのみ設定できます。 - DNSタイプ = Internet and VCN ResolverのDHCPオプションのセットを関連付けます。VCNのDHCPオプションのデフォルト・セットでは、デフォルトでInternet and VCN Resolverが使用されます。
- コンピュート・インスタンスを作成する場合:
- プライベートDNSレコードを割り当てるオプションを選択します。
- 各インスタンスのホスト名(または少なくとも表示名)を指定します。詳細は、DNSドメインおよびホスト名についてを参照してください。
VCNの作成時に、「このVCNでDNSホスト名の使用」を選択しない場合、VCNまたはサブネットのDNSラベルを設定できず、コンピュート・インスタンス作成時にホスト名を指定できません。
前述の手順では、コンソールでVCNおよびサブネットを一度に1つずつ作成することを前提としています。コンソールには、サブネットおよびインターネット・ゲートウェイを持つVCNを同時に自動的に作成する機能があります。この機能を使用してVCNおよびサブネットを作成する場合、コンソールはそれらのDNSラベルを自動的に生成します。
-
VCNの作成時:
- VCNのDNSラベルを指定します。DNSドメインおよびホスト名についてを参照してください。値を設定しない場合(nullの場合)、DHCPオプションにDhcpDnsOption
serverType
=VcnLocalPlusInternet
がある場合でも、Internet and VCN Resolverは使用されないとみなされます。
- VCNのDNSラベルを指定します。DNSドメインおよびホスト名についてを参照してください。値を設定しない場合(nullの場合)、DHCPオプションにDhcpDnsOption
-
サブネットの作成時:
- 各サブネットのDNSラベルを指定します。DNSドメインおよびホスト名についてを参照してください。VCNにDNSラベルを指定したが、サブネットにDNSラベルを指定しない場合、そのサブネットのインスタンスでInternet and VCN Resolverを使用しないとみなされ、VCN内のインスタンスとの通信にホスト名を使用する機能を利用できなくなったとみなされます。ノート
サブネットDNSラベルは、VCN自体がDNSラベル付きで作成されている場合にのみ設定できます。 - DhcpDnsOption
serverType
=VcnLocalPlusInternet
(VCNのデフォルトのDHCPオプション)を含む、任意のDHCPオプションのセットを関連付けます。
- 各サブネットのDNSラベルを指定します。DNSドメインおよびホスト名についてを参照してください。VCNにDNSラベルを指定したが、サブネットにDNSラベルを指定しない場合、そのサブネットのインスタンスでInternet and VCN Resolverを使用しないとみなされ、VCN内のインスタンスとの通信にホスト名を使用する機能を利用できなくなったとみなされます。
-
インスタンスを作成する場合:
- プライベートDNSレコードを割り当てるオプションを選択します。
- 各インスタンスのホスト名(または少なくとも表示名)を指定します。詳細は、DNSドメインおよびホスト名についてを参照してください。
VCNの作成時にDNSラベルを指定しない場合、次のことはできません:
- サブネットのDNSラベルの設定(
CreateSubnet
コールが失敗します) - コンピュート・インスタンスの作成中にホスト名を指定します(
LaunchInstance
コールが失敗します) - セカンダリVNICまたはセカンダリ・プライベートIPへのホスト名の割当て
シナリオ1: VCN全体でDNSホスト名に対してInternet and VCN Resolverを使用
一般的なシナリオでは、VCN全体でInternet and VCN Resolverを有効にして、VCN内のすべてのインスタンスはIPアドレスを知らなくても相互に通信できるようにします。これを行うには、DNSドメインおよびホスト名についての手順に従い、VCNおよびすべてのサブネットにDNSラベルを割り当てます。次に、すべてのインスタンスに、作成時にホスト名(または少なくとも表示名)を割り当てます。セカンダリVNICまたはセカンダリ・プライベートIPを追加する場合は、これらにもホスト名を割り当てます。そうすると、インスタンスは、IPアドレスではなくFQDNを使用して相互に通信できます。
シナリオ2: DNSホスト名を解決するためにプライベートDNSリゾルバを使用
プライベートDNSリゾルバでは、作成した構成を使用してVCNのDNS問合せに回答できます。リゾルバはデフォルトで169.254.169.254でリスニングしますが、問合せをリスニングし、他のVCNs、顧客のオンプレミス・ネットワークまたはその他のプライベート・ネットワーク内の他のリゾルバに転送するためのエンドポイントを定義することもできます。詳細は、プライベートDNSリゾルバを参照してください。
シナリオ3: サブネットごとに異なるDHCPオプションを使用
シナリオ1では、VCN内のすべてのサブネット、つまり、すべてのインスタンスでInternet and VCN Resolverという同じ方法を使用すると想定しています。しかし、DHCPオプションはサブネット・レベルで構成されるため、サブネットごとに異なるDNS設定を構成することもできます。重要なのは、DNS問合せを生成するサブネットに、対応するInternet and VCN Resolver設定を構成する必要があるということです。
たとえば、サブネットA内のインスタンスAでサブネットB内のインスタンスBのホスト名を解決する場合は、Internet and VCN Resolverを使用するようにサブネットAを構成する必要があります。反対に、インスタンスBでインスタンスAのホスト名を解決する場合は、Internet and VCN Resolverを使用するようにサブネットBを構成する必要があります。
サブネットごとに異なるDHCPオプションのセットを構成できます。たとえば、サブネットAの検索ドメインをsubneta.vcn1.oraclevcn.com
に設定すると、サブネットAのすべてのインスタンスはホスト名を使用して相互に通信できます。サブネットBの検索ドメインをsubnetb.vcn1.oraclevcn.com
に設定して、サブネットBのインスタンスがホスト名のみで相互に通信できるようにすることもできます。