OCIへVPNで接続した際に、OCIのインスタンスを名前解決してみる
OCI環境で複数のVCNをローカルVCNピアリングで接続しても、各VCN間はIPアドレスでは通信できますが、名前解決を行いホスト名で通信する事はできません
それは、OCI環境へVPN接続しても変わらず、IPアドレスでは通信できますが、ホスト名は名前解決できず通信する事ができません
そこで、本記事ではVCN間のみならず、VPN接続元からもOCI環境の名前解決を行ってみようと思います
環境
- AWS環境からLibreswanを用いて、OCI環境へVPN接続を行う
- HUB VCNとSPOKE VCNはローカルVCNピアリングで接続されている
- pingコマンドでは疎通できている(AWS->HUB VCN, AWS->SPOKE VCN, HUB VCN->SPOKE VCN)
0. 現状確認
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[libreswan] $ host -W 5 srv01.hubnet.hub.oraclevcn.com host: couldn't get address for 'srv01.hubnet.hub.oraclevcn.com': not found [libreswan] $ ping -c 3 srv01.hubnet.hub.oraclevcn.com ping: srv01.hubnet.hub.oraclevcn.com: Name or service not known [libreswan] $ host -W 5 srv02.spokenet.spoke.oraclevcn.com host: couldn't get address for 'srv02.spokenet.spoke.oraclevcn.com': not found [libreswan] $ ping -c 3 srv02.spokenet.spoke.oraclevcn.com ping: srv02.spokenet.spoke.oraclevcn.com: Name or service not known [libreswan] $ ping -c 3 10.10.1.2 PING 10.10.1.2 (10.10.1.2) 56(84) bytes of data. 64 bytes from 10.10.1.2: icmp_seq=1 ttl=63 time=3.18 ms 64 bytes from 10.10.1.2: icmp_seq=2 ttl=63 time=3.07 ms 64 bytes from 10.10.1.2: icmp_seq=3 ttl=63 time=3.19 ms |
AWS環境からアクセスしてみましたが、名前解決は当然行えないですが、IPアドレスでは疎通できています
当然、HUB VCNからも同様に、名前解決は行えないですがIPアドレスでは疎通できます
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[srv01] $ host -W 5 srv02.spokenet.spoke.oraclevcn.com ;; connection timed out; no servers could be reached [srv01] $ ping -c 3 srv02.spokenet.spoke.oraclevcn.com ping: srv02.spokenet.spoke.oraclevcn.com: Name or service not known [srv01] $ ping -c 3 10.11.1.2 PING 10.11.1.2 (10.11.1.2) 56(84) bytes of data. 64 bytes from 10.11.1.2: icmp_seq=1 ttl=64 time=0.198 ms 64 bytes from 10.11.1.2: icmp_seq=2 ttl=64 time=0.101 ms 64 bytes from 10.11.1.2: icmp_seq=3 ttl=64 time=0.210 ms --- 10.11.1.2 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2044ms rtt min/avg/max/mdev = 0.101/0.169/0.210/0.051 ms |
1. AWS環境から名前解決を行えるようにする
1. ネットワーキング -> 仮想クラウド・ネットワークとメニューを選択し、VPN接続されるVCNを選択し(今回は hub-vcn
を選択) をクリックします
2. 仮想クラウド・ネットワークの詳細が表示されますので、図の DNSリゾルバ
をクリックします
3. エンドポイントを表示し、エンドポイントの作成をクリックします
4. AWS環境から参照するエンドポイント情報を入力し、エンドポイントの作成をクリックします
- サブネットはエンドポイントのIPが作成されるサブネットを指定します
- エンドポイント・タイプは、今回はVPN接続時の名前解決が目的なので、リスニングを選択します
- リスニングIPアドレスは、オプションとなっていますが、DNSクライアント側の設定を固定にするため、入力する事を推奨します
5. AWS環境側でリゾルバの追加を行う(エンドポイントのIPアドレスを追記します)
今回は、作業の簡便化と本題では無いため、 /etc/resolv.conf を編集するのみとしています
1 2 3 4 5 6 7 |
[libreswan] $ echo "nameserver 10.10.1.254" | sudo tee -a /etc/resolv.conf [libreswan] $ cat /etc/resolv.conf ; generated by /usr/sbin/dhclient-script search ap-northeast-1.compute.internal nameserver 172.26.0.2 nameserver 10.10.1.254 |
この作業により、AWS 環境から HUB VCN の名前解決を行う事が可能になります
1 2 3 4 5 6 7 8 9 10 11 12 |
[libreswan] $ host -W 5 srv01.hubnet.hub.oraclevcn.com srv01.hubnet.hub.oraclevcn.com has address 10.10.1.2 [libreswan] $ ping -c 3 srv01.hubnet.hub.oraclevcn.com PING srv01.hubnet.hub.oraclevcn.com (10.10.1.2) 56(84) bytes of data. 64 bytes from ip-10-10-1-2.ap-northeast-1.compute.internal (10.10.1.2): icmp_seq=1 ttl=63 time=2.93 ms 64 bytes from ip-10-10-1-2.ap-northeast-1.compute.internal (10.10.1.2): icmp_seq=2 ttl=63 time=2.92 ms 64 bytes from ip-10-10-1-2.ap-northeast-1.compute.internal (10.10.1.2): icmp_seq=3 ttl=63 time=2.99 ms --- srv01.hubnet.hub.oraclevcn.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2003ms rtt min/avg/max/mdev = 2.926/2.951/2.995/0.069 ms |
2. VCN間で名前解決を行えるようにする
1. ネットワーキング -> 仮想クラウド・ネットワークとメニューを選択し、名前解決を行いたい側のVCNを選択し(今回は hub-vcn
を選択) をクリックします
2. 仮想クラウド・ネットワークの詳細が表示されますので、図の DNSリゾルバ
をクリックします
3. 関連付けられたプライベート・ビューを表示し、プライベート・ビューの管理をクリックします
4. 名前解決したいVCNを選択し(今回は spoke-vcn
を選択)、変更の保存をクリックします
この作業により、HUB VCN から SPOKE VCN の DNS を利用して名前解決を行う事が可能になります
1 2 3 4 5 6 7 8 9 10 11 12 |
[srv01] $ host srv02.spokenet.spoke.oraclevcn.com srv02.spokenet.spoke.oraclevcn.com has address 10.11.1.2 [srv01] $ ping -c 3 srv02.spokenet.spoke.oraclevcn.com PING srv02.spokenet.spoke.oraclevcn.com (10.11.1.2) 56(84) bytes of data. 64 bytes from srv02.spokenet.spoke.oraclevcn.com (10.11.1.2): icmp_seq=1 ttl=64 time=0.120 ms 64 bytes from srv02.spokenet.spoke.oraclevcn.com (10.11.1.2): icmp_seq=2 ttl=64 time=0.143 ms 64 bytes from srv02.spokenet.spoke.oraclevcn.com (10.11.1.2): icmp_seq=3 ttl=64 time=0.105 ms --- srv02.spokenet.spoke.oraclevcn.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2080ms rtt min/avg/max/mdev = 0.105/0.122/0.143/0.020 ms |
VCN 間の名前解決を行えたので、AWS 環境からも SPOKE VCN の名前解決を行う事が可能になります
1 2 3 4 5 6 7 8 9 10 11 12 |
[libreswan] $ host -W 5 srv02.spokenet.spoke.oraclevcn.com srv02.spokenet.spoke.oraclevcn.com has address 10.11.1.2 [libreswan] $ ping -c 3 srv02.spokenet.spoke.oraclevcn.com PING srv02.spokenet.spoke.oraclevcn.com (10.11.1.2) 56(84) bytes of data. 64 bytes from ip-10-11-1-2.ap-northeast-1.compute.internal (10.11.1.2): icmp_seq=1 ttl=63 time=4.26 ms 64 bytes from ip-10-11-1-2.ap-northeast-1.compute.internal (10.11.1.2): icmp_seq=2 ttl=63 time=4.26 ms 64 bytes from ip-10-11-1-2.ap-northeast-1.compute.internal (10.11.1.2): icmp_seq=3 ttl=63 time=4.30 ms --- srv02.spokenet.spoke.oraclevcn.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 4.261/4.275/4.300/0.056 ms |
まとめ
以上のように、エンドポイントを使用することで、OCIのDNS情報を外部環境へ開示する事ができますし、プライベート・ビューを活用する事で、VCN間の名前解決を行う事が可能になります
また、本記事では触れませんでしたが、プライベート・ゾーンの機能を用いれば、独自のゾーンとレコードを作成したりする事ができます
これらの機能を活用する事で、固定IPを設定する事のできないDBCSやMDSなどといったサービスも、より簡単に利用する事ができるのでは無いでしょうか
※DBCSでもプライベートIPアドレスを指定する事ができる様になったみたいですが、シングルノード構成の場合のみで、2ノードRACの場合は、記事執筆時点(03/08)ではIPアドレスは動的に取得されます
最後にこれらの機能のドキュメントは、下記 URL となりますが、記事執筆時点では、 Private DNS は Zone, View, Resolver の解説のみであるのと、日本語化対応状況もまだな状況なので、今後のドキュメントの拡充には期待したいところです