■ 目的
プライベートDNSは、VCN内およびVCN間で実行されるアプリケーションや、オンプレミスなどのプライベート・ネットワークに対してホスト名解決を提供できます。
ということで、プライベートDNSを使用して、Remote Peeringした異なるリージョンのVCNにあるインスタンスどうしが、ホスト名(FQDN)で名前解決して通信できるようにしてみてみます。
オンプレミスとのプライベート接続については前回の記事を参考します。
・参考: オンプレミスとOCIをVPN接続してオンプレミスからPrivate DNSで名前解決してみてみた
■ 構成

今回は、Private DNSの設定から行います。
図のように、あらかじめRemote Peeringを構成し、インスタンス間でIPアドレスによる通信ができる状態にしておきます。
・参考:
- 旧Remote Peering: Oracle Cloud:リージョン間をRemote Peering(バックボーン接続) してみた
- Remote Peering: リージョン間を Remote VCN Peering してみてみた
- Transit Peering: DRGで東京リージョンを経由して、オンプレミスと 大阪リージョンを接続してみてみた
設定内容は次のとおりです。
| 設定対象 | Tokyoリージョン | Osakaリージョン |
|---|---|---|
| リスニング・エンドポイント | Tokyo側のDNS問合せを受信 | Osaka側のDNS問合せを受信 |
| 転送エンドポイント | Osaka側へDNS問合せを転送 | Tokyo側へDNS問合せを転送 |
| 転送先 | Osaka側のリスニングIP | Tokyo側のリスニングIP |
| 通信経路 | Remote Peering | Remote Peering |
同じリージョン内のVCNでは、互いのプライベート・ビューを使用してDNS問合せを解決できます。
・参考: https://docs.oracle.com/en/learn/oci_private_dns/#introduction
● VCNのDNSについて
・VCNのDNS
ドメイン・ネーム・システム(DNS)を使用すると、コンピュータはIPアドレスの代わりにホスト名を使用して相互に通信できます。
VCN内で利用できるDNSリゾルバ(169.254.169.254)には、次の2つの機能が含まれています。
- VCNリゾルバ:インスタンスが同じVCN内の他のインスタンスのホスト名を解決できるようにします。
- Internetリゾルバ:インターネット上で公開されているホスト名をインスタンスが解決できるようにします。インスタンスは、インターネット・ゲートウェイを介してインターネットにアクセスする必要はありません。
・プライベートDNS
異なるVCNやオンプレミスなどのプライベート・ネットワークとの間で名前解決を行うには、プライベートDNSリゾルバに次のリゾルバ・エンドポイントを作成します。
- リスニング・エンドポイント: 他のVCNリゾルバやオンプレミス・ネットワークのDNSからDNS問合せを受信します。
- 転送エンドポイント: DNS問合せを、他のピアリングされたVCNやオンプレミス・ネットワークにあるリスニング・エンドポイントへ転送します。
・DNSドメインとホスト名
最初にVCNとサブネットを作成するときに、それぞれにDNSラベルを指定でき、次のようなドメイン名となります。
- VCNドメイン名: <VCN DNS label>.oraclevcn.com
- Subnetドメイン名: <*subnet DNS label>.<VCN DNS label>.oraclevcn.com
- インスタンスFQDN: <hostname>.<subnet DNS label>.<VCN DNS label>.oraclevcn.com
■ 手順: Tokyoリージョン
● Private DNS リスニング・エンドポイント作成
1) 対象VCNアクセス
名前解決したい対象のVCNへアクセスし、画面にある「DNSリゾルバのVCN」をクリック

2) エンドポイント画面
3) エンドポイントの作成画面
以下項目を入力し、[エンドポイントの作成]をクリック
・名前: エンドポイント名を設定
・サブネットの選択: エンドポイントを配置するサブネットを選択
・エンドポイント・タイプ: ここでは[リスニング]を選択
・リスニングIPアドレス: Private DNSのリスニング・エンドポイントIPを設定
● Private DNS 転送エンドポイント作成
1) エンドポイント画面
引き続き同じVCNのエンドポイント画面で[エンドポイントの作成]をクリック

2) エンドポイント作成画面
以下項目を入力し、[エンドポイントの作成]をクリック
・名前: エンドポイント名を設定
・サブネットの選択: エンドポイントを配置するサブネットを選択
・エンドポイント・タイプ: ここでは[転送]を選択
・IPアドレス: Private DNSの転送エンドポイントで使用するIPアドレスを設定
3) エンドポイント作成確認
2つのリスニング・エンドポイントと転送エンドポイントが作成されたことを確認

● ルール作成
1) ルール画面
左にあるリソース欄の[ルール]をクリックし、[ルールの管理]をクリック

2) ルールの管理画面
以下項目を入力し、[変更の保存]をクリック
・ルール条件: [CIDRブロック]を選択
・ドメイン 転送する相手側の ドメインと逆引きドメインを設定
・ソースエンドポイント: [Forwarding]を設定
・宛先IPアドレス: 対向リージョンに作成したリスニング・エンドポイントのIPアドレスを設定
3) ルール作成確認
ルールが作成されたことを確認
■ 手順: Osakaリージョン
上記のTokyoリージョンと同様に設定します。
● Private DNS リスニング・エンドポイント作成
1) 対象VCNアクセス
名前解決したい対象のVCNへアクセスし、画面にある「DNSリゾルバのVCN」をクリック

2) エンドポイント画面
3) エンドポイントの作成画面
以下項目を入力し、[エンドポイントの作成]をクリック
・名前: エンドポイント名を設定
・サブネットの選択: エンドポイントを配置するサブネットを選択
・エンドポイント・タイプ: ここでは[リスニング]を選択
・リスニングIPアドレス: Private DNSのリスニング・エンドポイントIPを設定
4) エンドポイント作成確認
● Private DNS 転送エンドポイント作成
1) エンドポイント画面
引き続き同じVCNのエンドポイント画面で[エンドポイントの作成]をクリック

2) エンドポイントの作成画面
以下項目を入力し、[エンドポイントの作成]をクリック
・名前: エンドポイント名を設定
・サブネットの選択: エンドポイントを配置するサブネットを選択
・エンドポイント・タイプ: ここでは[転送]を選択
・IPアドレス: Private DNSの転送エンドポイントで使用するIPアドレスを設定
3) エンドポイント作成確認
2つのリスニング・エンドポイントと転送エンドポイントが作成されたことを確認

● ルール作成
1) ルール画面
左にあるリソース欄の[ルール]をクリックし、[ルールの管理]をクリック

2) ルールの管理画面
以下項目を入力し、[変更の保存]をクリック
・ルール条件: [CIDRブロック]を選択
・ドメイン 転送する相手側の ドメインと逆引きドメインを設定
・ソースエンドポイント: [Forwarding]を設定
・宛先IPアドレス: 対向リージョンに作成したリスニング・エンドポイントのIPアドレスを設定
3) ルール作成確認
ルールが作成されたことを確認
■ DNS通信のセキュリティ・ルール設定
DNSリスニング・エンドポイントで、UDPポート53(必要に応じてTCPポート53)のトラフィックを許可するように、セキュリティ・リストまたはNSGのセキュリティ・ルールを設定します。
・ 参考: リゾルバ・エンドポイントへのネットワーク・セキュリティ・グループ(NSG)の追加
■ 動作確認
● インスタンスに設定されたFQDNの確認
・tokyo-private-inst01ホスト名確認
[opc@tokyo-private-inst01 ~]$ cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.1.2 tokyo-private-inst01.privatesubnet.vcn10000.oraclevcn.com tokyo-private-inst01
・osaka-private-inst01ホスト名確認
[[opc@osaka-private-inst01 ~]$ cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.5.1.2 osaka-private-inst01.privatesubnet.vcn10500.oraclevcn.com osaka-private-inst01
● Tokyo → Osaka 疎通・名前解決確認
・ping疎通確認
[opc@tokyo-private-inst01 ~]$ ping osaka-private-inst01.privatesubnet.vcn10500.oraclevcn.com -c 3
PING osaka-private-inst01.privatesubnet.vcn10500.oraclevcn.com (10.5.1.2) 56(84) bytes of data.
64 bytes from osaka-private-inst01.privatesubnet.vcn10500.oraclevcn.com (10.5.1.2): icmp_seq=1 ttl=62 time=7.70 ms
64 bytes from osaka-private-inst01.privatesubnet.vcn10500.oraclevcn.com (10.5.1.2): icmp_seq=2 ttl=62 time=7.67 ms
64 bytes from osaka-private-inst01.privatesubnet.vcn10500.oraclevcn.com (10.5.1.2): icmp_seq=3 ttl=62 time=7.69 ms
--- osaka-private-inst01.privatesubnet.vcn10500.oraclevcn.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 7.675/7.691/7.702/0.072 ms
・nslookup確認
[opc@tokyo-private-inst01 ~]$ nslookup osaka-private-inst01.privatesubnet.vcn10500.oraclevcn.com
Server: 169.254.169.254
Address: 169.254.169.254#53
Non-authoritative answer:
Name: osaka-private-inst01.privatesubnet.vcn10500.oraclevcn.com
Address: 10.5.1.2
● Osaka → Tokyo 疎通・名前解決確認
・ping疎通確認
[opc@osaka-private-inst01 ~]$ ping tokyo-private-inst01.privatesubnet.vcn10000.oraclevcn.com -c 3
PING tokyo-private-inst01.privatesubnet.vcn10000.oraclevcn.com (10.0.1.2) 56(84) bytes of data.
64 bytes from tokyo-private-inst01.privatesubnet.vcn10000.oraclevcn.com (10.0.1.2): icmp_seq=1 ttl=62 time=7.66 ms
64 bytes from tokyo-private-inst01.privatesubnet.vcn10000.oraclevcn.com (10.0.1.2): icmp_seq=2 ttl=62 time=7.59 ms
64 bytes from tokyo-private-inst01.privatesubnet.vcn10000.oraclevcn.com (10.0.1.2): icmp_seq=3 ttl=62 time=7.65 ms
--- tokyo-private-inst01.privatesubnet.vcn10000.oraclevcn.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 7.597/7.639/7.666/0.077 ms
・nslookup確認
インスタンスに設定されているDNSリゾルバのIPアドレスは、169.254.169.254です。
リゾルバ・エンドポイントと転送ルールを経由し、VCNのプライベートDNSリゾルバによって名前解決されます。
[opc@osaka-private-inst01 ~]$ nslookup tokyo-private-inst01.privatesubnet.vcn10000.oraclevcn.com
Server: 169.254.169.254
Address: 169.254.169.254#53
Non-authoritative answer:
Name: tokyo-private-inst01.privatesubnet.vcn10000.oraclevcn.com
Address: 10.0.1.2
・インスタンスに設定されているresolv.conf確認
[opc@osaka-private-inst01 ~]$ cat /etc/resolv.conf
; Any changes made to this file will be overwritten whenever the
; DHCP lease is renewed. To persist changes you must update the
; /etc/oci-hostname.conf file. For more information see
;[https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingDHCP.htm#notes]
;
; generated by /usr/sbin/dhclient-script
search vcn10500.oraclevcn.com privatesubnet.vcn10500.oraclevcn.com
nameserver 169.254.169.254
■ 参考
・OCI Document:プライベートDNS
・リゾルバ・エンドポイント
・チュートリアル:Private DNS Implementation
・Configure private DNS zones views and resolvers
・Use private DNS in interconnected VCNs and On-premises
・Domain Name System (DNS)
・OCI Private DNS – Common Scenarios
・逆引きDNS
■ おまけ
※ 本漫画は筆者による非公式の二次創作です。
※ 使用キャラクター:ずんだもん / 四国めたん / 春日部つむぎ
※ キャラクターの権利は各権利元に帰属します。
※ クレジット
- ずんだもん / 四国めたん:東北ずん子・ずんだもんプロジェクト関連ガイドラインに基づいて利用
- 春日部つむぎ:公式利用規約に基づいて利用










