仮想クラウド・ネットワークの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文字のホスト名を使用できます。ただし、古いオペレーティング・システムでは、これより短いホスト名が適用される場合があります。Linuxで、ホスト名の最大許容長を決定する方法を次に示します:
getconf HOST_NAME_MAX
インスタンスのホスト名がOS固有の最大値よりも長い場合、そのインスタンスのFQDNはVCN内で解決できません。ネットワーキング・サービスを使用してVNICを更新し、ホスト名を短い値に変更できます。
一意性:
- VCN DNSのラベルは、VCN全体で一意である必要があります(必須ではありませんが、ベスト・プラクティスです)
- サブネットDNSラベルは、VCN内で一意である必要があります
- ホスト名はサブネット内で一意である必要があります
DNSのラベルまたはホスト名とオブジェクに割り当てることのできるわかりやすい名前(表示名)とを混同しないでください。表示名は一意である必要はありません。
ホスト名の検証と生成
VCNおよびサブネットにDNSラベルを設定した場合、インスタンス起動時にDNS準拠と一意性についてホスト名が検証されます。これらの要件のいずれかが満たされない場合、起動リクエストは失敗します。
インスタンスの起動時にホスト名を指定しなかった場合、インスタンスの表示名がホスト名として使用されます。表示名が検証に合格しない場合、サブネット全体で一意の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またはカスタム・リゾルバ)を指定する場合。
- 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内のホストに送信する際には、DNS検索ドメインに依存しないように、常にインスタンスFQDNを使用することをお薦めします。
通常、次の条件がすべて満たされる場合、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ラベルを指定しない場合、コンソールでは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でリスニングしますが、問合せをリスニングするエンドポイントを定義し、他のVCN、顧客のオンプレミス・ネットワークまたは他のプライベート・ネットワーク内の他のリゾルバにそれらを転送することもできます。詳細は、プライベート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のインスタンスはホスト名のみで相互に通信できるようになります。