Oracle Cloud: オンプレミスとOCIをVPN接続してオンプレミスからOCI Private DNSを使用して名前解決してみてみた

Private DNSを使用すると、OCIのVCN内に Private DNS のエンドポイントIPを作成することができます。
これにより、VCN と OSNリソースの名前解決をオンプレミスから行うことができ、Internet の DNS にアクセスすることなく、Private DNS 通じてVCN内インスタンス と Object Storage等のOracle Services Network(OSN)サービスのホスト名を取得することができます。
ということで、オンプレミスとOCIをIPSec VPN接続し、オンプレミスからOCIのサービスへ名前解決できるようにしてみてみます。


# ■ 構成
![NW構成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/c4ca35f0-63e4-062a-a3dd-c0808e22d7f5.png)
事前にPrivate DNS以外を上記図のように作成し、Transit Routing の設定でObject Storageとオンプレミスを疎通できるようにしておきます。
・参考: 
　　- IPSec VPN: [Oracle Cloud: NEC IXルーターを冗長構成でIKEv2 IPSec VPN接続してみてみた](https://qiita.com/shirok/items/611ffb7cdd96ac95d32b)
　　- Transit Routing: [Transit Routing + IPSec VPN / FastConnectで Object Storage, Autonomous Databaseへ接続してみてみた](https://qiita.com/shirok/items/ec0e5a09346422346fd4)



# ■ 手順

## ● Private DNS エンドポイントIP作成

### 1) 対象VCNアクセス
名前解決したい対象のVCNへアクセスし、画面にある「DNSリゾルバのVCN」をクリック
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/112c8123-1546-c627-ae6a-69169dc0e91d.png)



### 2) プライベート・リゾルバの詳細画面
左にあるリソース欄の[エンドポイント]をクリック
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/cf055431-5857-b33b-e412-a557b433223d.png)


### 3) エンドポイント画面
[エンドポイントの作成]をクリック
![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/e59784f9-b7d1-db63-5a65-89d53ee8d2e5.png)


### 4) エンドポイントの作成画面
以下項目を入力し、[エンドポイントの作成]をクリック

	・名前: エンドポイント名を設定
	・サブネットの選択:Private DNSエンドポイントを配置するSubnetを選択
	・エンドポイント・タイプ: ここでは[リスニング]を選択
	・リスニングIPアドレス: Private DNSエンドポイントIPを設定

![04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/50077992-eac2-a484-608c-be3a06a416c8.png)


### 5) エンドポイント作成確認
エンドポイントが作成されたことを確認
![05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/9db0d01d-65b9-2f41-5d4f-547756b216d6.png)




# ■ 動作確認
## ● オンプレミス側インスタンス設定
今回Linuxインスタンスなので、/etc/resolv.confへOCI Private DNSのエンドポイントを設定
1) /etc/resolv.conf設定

```shell
[root@onp-inst ~]# cat /etc/resolv.conf
	# Generated by NetworkManager
	nameserver 10.0.0.254
```

## ● Computeインスタンスのホスト名解決確認
オンプレミスのインスタンスから、OCI Computeインスタンスへ名前解決して疎通できることを確認

### 1) Computeインスタンスのホスト名確認
テストするComputeインスタンスのドメイン付きホスト名(FQDN)を確認
オンプレミスからこのFQDNが名前解決できることを確認
![07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/8b184f3a-ed13-0b4b-2b5f-88aeece61ddb.png)


### 2) nslookup確認
FQDNからIPアドレスを調べる「nslookup」コマンドでComputeインスタンスのホスト名解決できることを確認

```shell
[root@onp-inst ~]# nslookup tokyo-inst01.privatesubnet.vcn10000.oraclevcn.com
	;; Got SERVFAIL reply from 192.168.0.254, trying next server
	Server:		10.0.0.254
	Address:	10.0.0.254#53

	Name:	tokyo-inst01.privatesubnet01.vcn10000.oraclevcn.com
	Address: 10.0.0.2
```

### 3) ping疎通確認
FQDNでping疎通できることを確認

```shell
[root@onp-inst ~]# ping tokyo-inst01.privatesubnet01.vcn10000.oraclevcn.com -c 3
	PING tokyo-inst01.privatesubnet01.vcn10000.oraclevcn.com (10.0.0.2) 56(84) bytes of data.
	64 bytes from 10.0.0.2: icmp_seq=1 ttl=62 time=4.56 ms
	64 bytes from 10.0.0.2: icmp_seq=2 ttl=62 time=17.7 ms
	64 bytes from 10.0.0.2: icmp_seq=3 ttl=62 time=4.81 ms

	--- tokyo-inst01.purivatesubnet01.vcn10000.oraclevcn.com ping statistics ---
	3 packets transmitted, 3 received, 0% packet loss, time 2007ms
	rtt min/avg/max/mdev = 4.566/9.034/17.724/6.146 ms
```

## ● Object Storageのホスト名解決確認
オンプレミスのインスタンスから、OCI オブジェクトストレージへ名前解決して疎通できることを確認

### 1) Computeインスタンスのホスト名確認
Object Storageのホスト名は次の「オブジェクト・ストレージおよびアーカイブ・ストレージApi」から確認できます。
今回は、Tokyoリージョンなので、"objectstorage.ap-tokyo-1.oraclecloud.com"となります。
・参考: [API参照とエンドポイント](https://docs.cloud.oracle.com/ja-jp/iaas/Content/API/Concepts/apiref.htm)



### 2) nslookup確認
FQDNからIPアドレスを調べる「nslookup」コマンドでObject Storageのホスト名解決できることを確認

```shell
[root@onp-inst ~]# nslookup objectstorage.ap-tokyo-1.oraclecloud.com
	Server:		10.0.0.254
	Address:	10.0.0.254#53

	Non-authoritative answer:
	objectstorage.ap-tokyo-1.oraclecloud.com	canonical name = objectstorage.ap-tokyo-1.oci.oraclecloud.com.
	Name:	objectstorage.ap-tokyo-1.oci.oraclecloud.com
	Address: 134.70.80.3
```

### 3) ping疎通確認
FQDNでping疎通できることを確認

```shell
[root@onp-inst ~]# ping objectstorage.ap-tokyo-1.oraclecloud.com -c 3
	PING objectstorage.ap-tokyo-1.oci.oraclecloud.com (134.70.80.3) 56(84) bytes of data.
	64 bytes from 134.70.80.3: icmp_seq=1 ttl=62 time=129 ms
	64 bytes from 134.70.80.3: icmp_seq=2 ttl=62 time=18.7 ms
	64 bytes from 134.70.80.3: icmp_seq=3 ttl=62 time=4.85 ms

	--- objectstorage.ap-tokyo-1.oci.oraclecloud.com ping statistics ---
	3 packets transmitted, 3 received, 0% packet loss, time 2007ms
	rtt min/avg/max/mdev = 4.857/51.126/129.806/55.922 ms
```

### 4) traceroute確認
Internetを通らず、VPNのPrivate NWを通じてObject Storageへ疎通していることを確認

```shell
[root@onp-inst ~]# traceroute -I objectstorage.ap-tokyo-1.oraclecloud.com
	traceroute to objectstorage.ap-tokyo-1.oraclecloud.com (134.70.80.3), 30 hops max, 60 byte packets
	1  192.168.0.254 (192.168.0.254)  0.698 ms  0.691 ms  0.689 ms
	2  * * *
	3  134.70.80.3 (134.70.80.3)  29.672 ms * *
```

# ■ 参考
**● OCIドキュメント**
 ・ [仮想クラウド・ネットワークのDNS](https://docs.oracle.com/ja-jp/iaas/Content/Network/Concepts/dns.htm)
 ・ [Private DNS](https://docs.oracle.com/ja-jp/iaas/Content/DNS/Tasks/privatedns.htm)

**● Oracle Speakerdeck**
　・ [OCI技術資料 : 仮想クラウド・ネットワーク (VCN) 詳細](https://speakerdeck.com/ocise/ociji-shu-zi-liao-jia-xiang-kuraudonetutowaku-vcn-xiang-xi?slide=38)

**● ユースケース**
 ・ [VCNとオンプレミス・ネーム・サーバー間の接続](https://docs.oracle.com/ja-jp/iaas/Content/DNS/Tasks/privatedns.htm#use-cases)
 ・ [A-Teamクロニクル/プライベートDNSの実装](https://www.ateam-oracle.com/post/private-dns-implementation)

**● Oracle Help Center Learn**
 ・ [Configure private DNS zones views and resolversプライベート DNS ゾーンのビューとリゾルバーを構成する](https://docs.oracle.com/en/learn/oci_private_dns/#introduction)

**● Oracle Architecture Center**
 ・ [Use private DNS in interconnected VCNs and On-premises](https://docs.oracle.com/en/solutions/private-dns/index.html#GUID-55B5DB69-A45C-469A-A734-B62A78B7868D)