はじめに
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システムにアクセスできるような構成を検証しました。
検証した構成は、以下の図のようになります。
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キャッシュサーバーを構成してみてみた