LoginSignup
1
0

More than 1 year has passed since last update.

[OCI]別のVCNにあるDBシステムにDNS名(FQDN)でアクセスできる環境を構築してみた

Last updated at Posted at 2020-11-25

はじめに

OCIのDatabase Cloud ServiceのDBシステムは、プライベートIPアドレスがDHCPによる割り当てとなっていて固定できないため、DNS名でアクセスすることが推奨されています。
同一VCNでのアクセスの場合はVCNのDNSリゾルバが名前解決をしてくれますが、ローカルピアリング、リモートピアリングなどでピアリングしたVCNからはDNS名でアクセスすることができません。

そこで、Oracle A-Team Chronicles:Provisioning Custom DNS Resolvers for FQDN Resolutionの情報をもとに、ピアリングしたVCN上のサーバからもDNS名(FQDN)でDBシステムにアクセスできるような構成を検証しました。

検証した構成は、以下の図のようになります。

スクリーンショット 2020-11-25 16.15.35.png

1 . APサーバ側VCNの設定

1-1. VCNの作成

VCNを作成します。

名前 AP-VCN
CIDRブロック 10.1.0.0/16
このVCNでDNSホスト名を使用 チェックをオン

1-2. Local Peering Gatewayの作成

AP-VCNにLocal Peering Gatewayを作成します

名前 LPG-AP-VCN

1-3. Internet Gatewayの作成

AP-VCNにInternet Gatewayを作成します。

名前 IG-AP-VCN

1-4. Route Tableの作成

AP-VCNにRoute Tableを作成します。
名前:RT-AP-Subnet

ターゲット・タイプ 宛先 ターゲット
インターネット・ゲートウェイ 0.0.0.0/0 IG-AP-VCN
ローカル・ピアリング・ゲートウェイ 10.2.0.0/16 LPG-AP-VCN

名前:RT-AP-DNS-Subnet

ターゲット・タイプ 宛先 ターゲット
インターネット・ゲートウェイ 0.0.0.0/0 IG-AP-VCN
ローカル・ピアリング・ゲートウェイ 10.2.0.0/16 LPG-AP-VCN

1-5. Security Listの作成

AP-VCNにSecurity Listを作成します。
名前:SL-AP-DNS-Subnet

イングレスルール1
ソース・タイプ CIDR
ソースCIDR 10.1.0.0/16
IPプロトコル UDP
ソースポート範囲 入力しない
宛先ポート範囲 53
イングレスルール2
ソース・タイプ CIDR
ソースCIDR 10.2.0.0/16
IPプロトコル UDP
ソースポート範囲 入力しない
宛先ポート範囲 53
エグレスルール1
宛先タイプ CIDR
ソースCIDR 0.0.0.0/0
IPプロトコル 全てのプロトコル

1-6. Subnetの作成

AP-VCNにSubnetを作成します。
APサーバを配置するSubnet(AP-Subnet

名前 AP-Subnet
サブネット・タイプ リージョナル
CIDRブロック 10.1.1.0/24
ルート表 RT-AP-Subnet
サブネット・アクセス パブリック・サブネット
DNS解決 「このSUBNETでDNSホスト名を使用」のチェックをオン
DNSのDHCPオプション Default DHCP Options for AP-VCN
セキュリティ・リスト Default Security List for AP-VCN

DNSサーバを配置するSubnet(AP-DNS-Subnet

名前 AP-DNS-Subnet
サブネット・タイプ リージョナル
CIDRブロック 10.1.2.0/24
ルート表 RT-AP-DNS-Subnet
サブネット・アクセス パブリック・サブネット
DNS解決 「このSUBNETでDNSホスト名を使用」のチェックをオン
DNSのDHCPオプション Default DHCP Options for AP-VCN
セキュリティ・リスト SL-AP-DNS-Subnet

2. DBサーバ側VCNの設定

2-1. VCNの作成

VCNを作成します。

名前 DB-VCN
CIDR 10.2.0.0/16
このVCNでDNSホスト名を使用 チェックをオン

2-2. Local Peering Gatewayの作成

DB-VCNにLocal Peering Gatewayを作成します。

名前 LPG-DB-VCN

2-3. ピアリング接続の確立

LPG-DB-VCNの「…」から「ピアリング接続の確立」をクリックします。

ローカル・ピアリング・ゲートウェイの指定 「下を選択」を選択
仮想クラウド・ネットワーク 「AP-VCN」を選択
ピア・ゲートウェイ 「LPG-AP-VCN」を選択

2-4. Internet Gatewayの作成

DB-VCNにInternet Gatewayを作成します。

名前 IG-DB-VCN

2-5. Route Tableの作成

DB-VCNにRoute Tableを作成します。

名前:RT-DB-Subnet

ターゲット・タイプ 宛先 ターゲット
インターネット・ゲートウェイ 0.0.0.0/0 IG-DB-VCN
ローカル・ピアリング・ゲートウェイ 10.1.0.0/16 LPG-DB-VCN

名前:RT-DB-DNS-Subnet

ターゲット・タイプ 宛先 ターゲット
インターネット・ゲートウェイ 0.0.0.0/0 DB-AP-VCN
ローカル・ピアリング・ゲートウェイ 10.1.0.0/16 LPG-DB-VCN

2-6. Security Listの作成

DB-VCNにSecurity Listを作成します。

名前:SL-DB-DNS-Subnet

イングレスルール1
ソース・タイプ CIDR
ソースCIDR 10.1.0.0/16
IPプロトコル UDP
ソースポート範囲 入力しない
宛先ポート範囲 53
イングレスルール2
ソース・タイプ CIDR
ソースCIDR 10.2.0.0/16
IPプロトコル UDP
ソースポート範囲 入力しない
宛先ポート範囲 53
エグレスルール1
宛先タイプ CIDR
ソースCIDR 0.0.0.0/0
IPプロトコル 全てのプロトコル

2-7. Subnetの作成

DB-VCNにSubnetを作成します。
DBサーバを配置するSubnet(DB-Subnet

名前 DB-Subnet
サブネット・タイプ リージョナル
CIDRブロック 10.2.1.0/24
ルート表 RT-DB-Subnet
サブネット・アクセス パブリック・サブネット
DNS解決 「このSUBNETでDNSホスト名を使用」のチェックをオン
DNSのDHCPオプション Default DHCP Options for DB-VCN
セキュリティ・リスト Default Security List for DB-VCN

DNSサーバを配置するSubnet(DB-DNS-Subnet

名前 DB-DNS-Subnet
サブネット・タイプ リージョナル
CIDRブロック 10.2.2.0/24
ルート表 RT-DB-DNS-Subnet
サブネット・アクセス パブリック・サブネット
DNS解決 「このSUBNETでDNSホスト名を使用」のチェックをオン
DNSのDHCPオプション Default DHCP Options for DB-VCN
セキュリティ・リスト SL-DB-DNS-Subnet

3. コンピュート・インスタンスの作成

APサーバ

名前 AP1
OS Oracle Linux 7.9
サブネット AP-Subnet
IPアドレス 10.1.1.100
ホスト名 ap1

AP-VCN用DNSサーバ

名前 AP-DNS
OS Oracle Linux 7.9
サブネット AP-DNS-Subnet
IPアドレス 10.1.2.100
ホスト名 ap-dns

DB-VCN用DNSサーバ

名前 DB-DNS
OS Oracle Linux 7.9
サブネット DB-DNS-Subnet
IPアドレス 10.2.2.100
ホスト名 db-dns

4. DBCSインスタンスの作成

DBサーバ

名前 DB1
サブネット DB-Subnet
ホスト名 db1

5. dnsmsqとncのインストール

AP-DNSにSSHクライアントからopcユーザでログインします。

dnsmsqとncをインストールします。

[opc@ap-dns ~]$ sudo su -
[root@ap-dns ~]# yum install -y dnsmasq nc
Loaded plugins: langpacks, ulninfo
ol7_UEKR6                                                  | 2.8 kB  00:00:00     
ol7_addons                                                 | 2.8 kB  00:00:00     
ol7_developer                                              | 2.8 kB  00:00:00     
ol7_developer_EPEL                                         | 3.4 kB  00:00:00     
ol7_ksplice                                                | 2.8 kB  00:00:00     
ol7_latest                                                 | 3.4 kB  00:00:00     
ol7_oci_included                                           | 2.9 kB  00:00:00     
ol7_optional_latest                                        | 2.8 kB  00:00:00     
ol7_software_collections                                   | 2.8 kB  00:00:00     
(1/19): ol7_UEKR6/x86_64/updateinfo                        |  56 kB  00:00:00     
(2/19): ol7_developer/x86_64/primary_db                    | 657 kB  00:00:00     
(3/19): ol7_developer_EPEL/x86_64/group_gz                 |  87 kB  00:00:00     
(4/19): ol7_developer_EPEL/x86_64/updateinfo               | 6.3 kB  00:00:00     
(5/19): ol7_addons/x86_64/updateinfo                       |  94 kB  00:00:00     
(6/19): ol7_ksplice/updateinfo                             | 6.1 kB  00:00:00     
(7/19): ol7_developer/x86_64/updateinfo                    | 7.9 kB  00:00:00     
(8/19): ol7_ksplice/primary_db                             | 1.2 MB  00:00:00     
(9/19): ol7_latest/x86_64/group_gz                         | 134 kB  00:00:00     
(10/19): ol7_latest/x86_64/updateinfo                      | 3.1 MB  00:00:00     
(11/19): ol7_addons/x86_64/primary_db                      | 163 kB  00:00:00     
(12/19): ol7_oci_included/x86_64/primary_db                | 405 kB  00:00:00     
(13/19): ol7_optional_latest/x86_64/updateinfo             | 1.2 MB  00:00:00     
(14/19): ol7_developer_EPEL/x86_64/primary_db              |  12 MB  00:00:00     
(15/19): ol7_optional_latest/x86_64/primary_db             | 5.2 MB  00:00:00     
(16/19): ol7_software_collections/x86_64/updateinfo        | 8.6 kB  00:00:00     
(17/19): ol7_UEKR6/x86_64/primary_db                       | 8.4 MB  00:00:00     
(18/19): ol7_latest/x86_64/primary_db                      |  29 MB  00:00:00     
(19/19): ol7_software_collections/x86_64/primary_db        | 5.2 MB  00:00:00     
Resolving Dependencies
--> Running transaction check
---> Package dnsmasq.x86_64 0:2.76-16.el7 will be installed
---> Package nmap-ncat.x86_64 2:6.40-19.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==================================================================================
 Package           Arch           Version                Repository          Size
==================================================================================
Installing:
 dnsmasq           x86_64         2.76-16.el7            ol7_latest         279 k
 nmap-ncat         x86_64         2:6.40-19.el7          ol7_latest         206 k

Transaction Summary
==================================================================================
Install  2 Packages

Total download size: 485 k
Installed size: 1.0 M
Downloading packages:
(1/2): dnsmasq-2.76-16.el7.x86_64.rpm                      | 279 kB  00:00:00     
(2/2): nmap-ncat-6.40-19.el7.x86_64.rpm                    | 206 kB  00:00:00     
----------------------------------------------------------------------------------
Total                                                1.4 MB/s | 485 kB  00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : dnsmasq-2.76-16.el7.x86_64                                     1/2 
  Installing : 2:nmap-ncat-6.40-19.el7.x86_64                                 2/2 
  Verifying  : 2:nmap-ncat-6.40-19.el7.x86_64                                 1/2 
  Verifying  : dnsmasq-2.76-16.el7.x86_64                                     2/2 

Installed:
  dnsmasq.x86_64 0:2.76-16.el7           nmap-ncat.x86_64 2:6.40-19.el7          

Complete!
[root@ap-dns ~]# 

firewalldにUDP 53番ポートを許可する設定を追加します。

[root@ap-dns ~]# firewall-cmd --add-port=53/udp
success
[root@ap-dns ~]# firewall-cmd --permanent --add-port=53/udp
success

dnsmsqの設定ファイルにログファイルとキャッシュの設定を追加し、dnsmsqを起動します。

[root@ap-dns ~]# echo "log-queries" >>/etc/dnsmasq.conf
[root@ap-dns ~]# echo "log-facility=/var/log/dnsmasq.log" >>/etc/dnsmasq.conf
[root@ap-dns ~]# echo "cache-size=0" >>/etc/dnsmasq.conf
[root@ap-dns ~]# dnsmasq --test
dnsmasq: syntax check OK.
[root@ap-dns ~]# systemctl enable dnsmasq
Created symlink from /etc/systemd/system/multi-user.target.wants/dnsmasq.service to /usr/lib/systemd/system/dnsmasq.service.
[root@ap-dns ~]# systemctl restart dnsmasq
[root@ap-dns ~]# systemctl status dnsmasq
● dnsmasq.service - DNS caching server.
   Loaded: loaded (/usr/lib/systemd/system/dnsmasq.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2020-11-25 00:51:27 GMT; 4s ago
 Main PID: 13449 (dnsmasq)
   Memory: 656.0K
   CGroup: /system.slice/dnsmasq.service
           └─13449 /usr/sbin/dnsmasq -k

Nov 25 00:51:27 ap-dns systemd[1]: Started DNS caching server..
[root@ap-dns ~]# 

同様の手順で、DB-DNSにもdnsmsqとncをインストールし、dnsmsqの設定ファイルにログファイルとキャッシュの設定を追加してdnsmsqを起動します。

AP1にncをインストールします。

[opc@ap1 ~]$ sudo yum install -y nc
Loaded plugins: langpacks, ulninfo
ol7_UEKR6                                                  | 2.8 kB  00:00:00     
ol7_addons                                                 | 2.8 kB  00:00:00     
ol7_developer                                              | 2.8 kB  00:00:00     
ol7_developer_EPEL                                         | 3.4 kB  00:00:00     
ol7_ksplice                                                | 2.8 kB  00:00:00     
ol7_latest                                                 | 3.4 kB  00:00:00     
ol7_oci_included                                           | 2.9 kB  00:00:00     
ol7_optional_latest                                        | 2.8 kB  00:00:00     
ol7_software_collections                                   | 2.8 kB  00:00:00     
(1/19): ol7_UEKR6/x86_64/updateinfo                        |  56 kB  00:00:00     
(2/19): ol7_developer/x86_64/primary_db                    | 657 kB  00:00:00     
(3/19): ol7_developer_EPEL/x86_64/group_gz                 |  87 kB  00:00:00     
(4/19): ol7_developer_EPEL/x86_64/updateinfo               | 6.3 kB  00:00:00     
(5/19): ol7_addons/x86_64/primary_db                       | 163 kB  00:00:00     
(6/19): ol7_ksplice/updateinfo                             | 6.1 kB  00:00:00     
(7/19): ol7_addons/x86_64/updateinfo                       |  94 kB  00:00:00     
(8/19): ol7_latest/x86_64/group_gz                         | 134 kB  00:00:00     
(9/19): ol7_ksplice/primary_db                             | 1.2 MB  00:00:00     
(10/19): ol7_UEKR6/x86_64/primary_db                       | 8.4 MB  00:00:00     
(11/19): ol7_developer/x86_64/updateinfo                   | 7.9 kB  00:00:00     
(12/19): ol7_latest/x86_64/updateinfo                      | 3.1 MB  00:00:00     
(13/19): ol7_oci_included/x86_64/primary_db                | 405 kB  00:00:00     
(14/19): ol7_optional_latest/x86_64/updateinfo             | 1.2 MB  00:00:00     
(15/19): ol7_software_collections/x86_64/updateinfo        | 8.6 kB  00:00:00     
(16/19): ol7_developer_EPEL/x86_64/primary_db              |  12 MB  00:00:00     
(17/19): ol7_latest/x86_64/primary_db                      |  29 MB  00:00:00     
(18/19): ol7_optional_latest/x86_64/primary_db             | 5.2 MB  00:00:00     
(19/19): ol7_software_collections/x86_64/primary_db        | 5.2 MB  00:00:00     
Resolving Dependencies
--> Running transaction check
---> Package nmap-ncat.x86_64 2:6.40-19.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==================================================================================
 Package           Arch           Version                Repository          Size
==================================================================================
Installing:
 nmap-ncat         x86_64         2:6.40-19.el7          ol7_latest         206 k

Transaction Summary
==================================================================================
Install  1 Package

Total download size: 206 k
Installed size: 423 k
Downloading packages:
nmap-ncat-6.40-19.el7.x86_64.rpm                           | 206 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : 2:nmap-ncat-6.40-19.el7.x86_64                                 1/1 
  Verifying  : 2:nmap-ncat-6.40-19.el7.x86_64                                 1/1 

Installed:
  nmap-ncat.x86_64 2:6.40-19.el7                                                  

Complete!
[opc@ap1 ~]$ 

同様の手順で、DB1にもncをインストールします。

6. DNSサーバへの接続確認

ncコマンドでAP1からAP-DNSへの接続を確認します。

[opc@ap1 ~]$ nc -v -u -i 2 10.1.2.100 53
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 10.1.2.100:53.
Ncat: Idle timeout expired (2000 ms).
[opc@ap1 ~]$ 

ncコマンドでDB1からDB-DNSへの接続を確認します。

[root@ap-dns ~]# nc -v -u -i 2 10.2.2.100 53
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 10.2.2.100:53.
Ncat: Idle timeout expired (2000 ms).
[root@ap-dns ~]#

7. Security ListへのIngress Ruleの追加

Default Security List for AP-VCN

イングレスルール
ソース・タイプ CIDR
ソースCIDR 10.1.2.0/24
IPプロトコル UDP
ソースポート範囲 入力しない
宛先ポート範囲 53

Default Security List for DB-VCN

イングレスルール
ソース・タイプ CIDR
ソースCIDR 10.2.2.0/24
IPプロトコル UDP
ソースポート範囲 入力しない
宛先ポート範囲 53

8. DHCPオプションの作成

AP-VCN
「DHCPオプション」→「DHCPオプションの作成」をクリック

名前 DHCP Option for AP-Subnet
DNSタイプ カスタム・リゾルバ
DNSサーバー 10.1.2.100

DB-VCN
「DHCPオプション」→「DHCPオプションの作成」をクリック

名前 DHCP Option for DB-Subnet
DNSタイプ カスタム・リゾルバ
DNSサーバー 10.2.2.100

9. SubnetのDHCPオプションの変更

AP-Subnet
「編集」をクリック

DHCPオプション DHCP Option for AP-Subnet
DB-Subnet
「編集」をクリック
DHCPオプション DHCP Option for DB-Subnet

#1 0. dnsmasqの設定追加
AP-DNS
DB-VCN(dbvcn.oraclevcn.com)の名前解決をDB-DNS(10.2.2.100)に転送する設定を追加します。

[root@ap-dns ~]# echo "server=/dbvcn.oraclevcn.com/10.2.2.100" >>/etc/dnsmasq.conf
[root@ap-dns ~]# systemctl restart dnsmasq
[root@ap-dns ~]# systemctl status dnsmasq
● dnsmasq.service - DNS caching server.
   Loaded: loaded (/usr/lib/systemd/system/dnsmasq.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2020-11-25 03:21:55 GMT; 5s ago
 Main PID: 19673 (dnsmasq)
   Memory: 684.0K
   CGroup: /system.slice/dnsmasq.service
           └─19673 /usr/sbin/dnsmasq -k

Nov 25 03:21:55 ap-dns systemd[1]: Started DNS caching server.. 

DB-DNS
AP-VCN(apvcn.oraclevcn.com)の名前解決をAP-DNS(10.1.2.100)に転送する設定を追加します。

[root@db-dns ~]# echo "server=/apvcn.oraclevcn.com/10.1.2.100" >>/etc/dnsmasq.conf
[root@db-dns ~]# systemctl restart dnsmasq
[root@db-dns ~]# systemctl status dnsmasq
● dnsmasq.service - DNS caching server.
   Loaded: loaded (/usr/lib/systemd/system/dnsmasq.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2020-11-25 03:22:34 GMT; 9s ago
 Main PID: 19839 (dnsmasq)
   Memory: 720.0K
   CGroup: /system.slice/dnsmasq.service
           └─19839 /usr/sbin/dnsmasq -k

Nov 25 03:22:34 db-dns systemd[1]: Started DNS caching server..

11.名前解決の確認

nslookupでAP1からDB1(db1.dbsubnet.dbvcn.oraclevcn.com)の名前解決ができるか確認します。

[opc@ap1 ~]$ nslookup db1.dbsubnet.dbvcn.oraclevcn.com
Server:		10.1.2.100
Address:	10.1.2.100#53

Non-authoritative answer:
Name:	db1.dbsubnet.dbvcn.oraclevcn.com
Address: 10.2.1.2

[opc@ap1 ~]$ 

AP-VCNにあるAP1から、DB-VCNにあるDB1の名前解決ができました。

同様に、DB1からAP1(ap1.apsubnet.apvcn.oraclevcn.com)の名前解決ができるか確認します。

[opc@db1 ~]$ nslookup ap1.apsubnet.apvcn.oraclevcn.com
Server:		10.2.2.100
Address:	10.2.2.100#53

Non-authoritative answer:
Name:	ap1.apsubnet.apvcn.oraclevcn.com
Address: 10.1.1.100

[opc@db1 ~]$

DB-VCNにあるDB1から、AP-VCNにあるAP1の名前解決ができました。

参考情報

Oracle A-Team Chronicles:Provisioning Custom DNS Resolvers for FQDN Resolution
Oracle Cloud:OCIにオンプレミスのDNSと同期するDNSキャッシュサーバーを構成してみてみた

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0