はじめに
OCIのDatabase Cloud ServiceのDBシステムは、プライベートIPアドレスがDHCPによる割り当てとなっていて固定できないため、DNS名(FQDN)でアクセスすることが推奨されています。
同一VCNでのアクセスの場合はVCNのDNSリゾルバが名前解決をしてくれますが、ローカルピアリング、リモートピアリングなどでピアリングしたVCNからはデフォルトではDNS名を使用してアクセスすることができません。
今回は先日リリースされたPrivate DNS Resolverの機能を利用して、ピアリングされている異なるVCN内のサーバからDNS名(FQDN)でDBシステムにアクセスできるような構成を検証しました。
(こちらの記事はわずか1日の命でした。。。)
検証した構成は以下の図のようになります。
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 |
1-5. Network Security Groupの作成
AP-VCNにPrivate DNS Endpoint用のNetwork Security Groupを作成します。
名前:NSG for DNS_AP_VCN
イングレスルール1 | |
---|---|
ソース・タイプ | CIDR |
ソースCIDR | 10.1.1.0/24 |
IPプロトコル | UDP |
ソースポート範囲 | 入力しない |
宛先ポート範囲 | 53 |
イングレスルール2 | |
---|---|
ソース・タイプ | CIDR |
ソースCIDR | 10.2.1.0/24 |
IPプロトコル | UDP |
ソースポート範囲 | 入力しない |
宛先ポート範囲 | 53 |
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 |
1-7. Private DNSエンドポイントの作成
DNSリゾルバ名をクリックします。
リソース欄の「エンドポイント」をクリックします。
「エンドポイントの作成」をクリックします。
エンドポイントを作成します。
名前 | DNS_AP_VCN |
サブネットの選択 | AP-Subnet |
エンドポイント・タイプ | リスニング |
ネットワーク・セキュリティ・グループを使用してトラフィックを制御 | チェックをオン |
ネットワーク・セキュリティ・グループ | NSG for DNS_AP_VCN |
「エンドポイントの作成」をクリック | |
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 |
2-6. Network Security Groupの作成
DB-VCNにPrivate DNS Endpoint用のNetwork Security Groupを作成します。
名前:NSG for DNS_DB_VCN
イングレスルール1 | |
---|---|
ソース・タイプ | CIDR |
ソースCIDR | 10.1.1.0/24 |
IPプロトコル | UDP |
ソースポート範囲 | 入力しない |
宛先ポート範囲 | 53 |
イングレスルール2 | |
---|---|
ソース・タイプ | CIDR |
ソースCIDR | 10.2.1.0/24 |
IPプロトコル | UDP |
ソースポート範囲 | 入力しない |
宛先ポート範囲 | 53 |
DB-VCNにDBアクセス用のNetwork Security Groupを作成します。
名前:NSG for DB1
イングレスルール1 | |
---|---|
ソース・タイプ | CIDR |
ソースCIDR | 10.1.1.0/24 |
IPプロトコル | TCP |
ソースポート範囲 | 入力しない |
宛先ポート範囲 | 1521 |
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 |
2-8. Private DNSエンドポイントの作成
DNSリゾルバ名をクリックします。
リソース欄の「エンドポイント」をクリックします。
「エンドポイントの作成」をクリックします。
エンドポイントを作成します。
名前 | DNS_DB_VCN |
サブネットの選択 | DB-Subnet |
エンドポイント・タイプ | リスニング |
ネットワーク・セキュリティ・グループを使用してトラフィックを制御 | チェックをオン |
ネットワーク・セキュリティ・グループ | NSG for DNS_DB_VCN |
「エンドポイントの作成」をクリック | |
3. AP-VCNのPrivate DNS Resolverの設定
3-1. AP-VCNへのプライベート・ビューの追加
「プライベート・ビューの管理」をクリックします。
「DB-VCN」を選択し、「変更の保存」をクリックします。
プライベート・ビュー「DB-VCN」が関連づけられました。
##3-2. AP-VCNへのDHCPオプションの追加
リソース欄の「DHCPオプション」をクリックします。
「DHCPオプションの作成」をクリックします。
DHCPオプションを作成します。
名前 | DHCP Option for AP-Subnet |
DNSタイプ | カスタム・リゾルバ |
DNSサーバー | 10.1.1.254 |
##3-3. AP-SubnetのDHCPオプションの変更 | |
「編集」をクリックします。 | |
DHCPオプションを「DHCP Option for AP-Subnet」に変更して、「変更を保存」をクリックします。 |
DHCPオプション | DHCP Option for AP-Subnet |
4. DB-VCNのPrivate DNS Resolverの設定
4-1. DB-VCNへのプライベート・ビューの追加
DNSリゾルバ名をクリックします。
「プライベート・ビューの管理」をクリックします。
「AP-VCN」を選択して、「変更の保存」をクリックします。
##4-2. DB-VCNへのDHCPオプションの追加
リソース欄の「DHCPオプション」をクリックします。
「DHCPオプションの作成」をクリックします。
DHCPオプションを作成します。
名前 | DHCP Option for DB-Subnet |
DNSタイプ | カスタム・リゾルバ |
DNSサーバー | 10.2.1.254 |
##4-3. DB-SubnetのDHCPオプションの変更 | |
「編集」をクリックします。 | |
DHCPオプションを「DHCP Option for DB-Subnet」に変更して、「変更の保存」をクリックします。 |
DHCPオプション | DHCP Option for DB-Subnet |
以上でPrivate DNS Resolverの設定とPrivate DNS Resolverを使用するためのDHCPの設定が完了しました。
5. コンピュート・インスタンスの作成
APサーバ
名前 | AP1 |
OS | Oracle Linux 7.9 |
サブネット | AP-Subnet |
IPアドレス | 10.1.1.100 |
ホスト名 | ap1 |
6. DBCSインスタンスの作成
DBサーバ
名前 | DB1 |
サブネット | DB-Subnet |
ネットワーク・セキュリティ・グループ | NSG for DB |
ホスト名 | db1 |
7. 名前解決の確認
nslookupでAP1からDB1(db1.dbsubnet.dbvcn.oraclevcn.com)の名前解決ができるか確認します。
[opc@ap1 ~]$ nslookup db1.dbsubnet.dbvcn.oraclevcn.com
Server: 10.1.1.254
Address: 10.1.1.254#53
Name: db1.dbsubnet.dbvcn.oraclevcn.com
Address: 10.2.1.2
[opc@db1 ~]$
AP-VCNにあるAP1から、DB-VCNにあるDB1の名前解決ができました。
同様に、DB1からAP1(ap1.apsubnet.apvcn.oraclevcn.com)の名前解決ができるか確認します。
opc@db1 ~]$ nslookup ap1.apsubnet.apvcn.oraclevcn.com
Server: 10.2.1.254
Address: 10.2.1.254#53
Name: ap1.apsubnet.apvcn.oraclevcn.com
Address: 10.1.1.100
[opc@db1 ~]$
DB-VCNにあるDB1から、AP-VCNにあるAP1の名前解決ができました。
8. SQL*PlusでのDB接続確認
AP1にSSHクライアントからopcユーザでログインします。
Oracle Instant Clientをインストールします。
sudo yum -y install oracle-release-el7
sudo yum install -y oracle-instantclient19.6-sqlplus.x86_64
Oralce Client用の環境変数の設定を/etc/profileに追加します。
sudo vi /etc/profile
以下の内容をファイルの末尾に追加します。
export ORACLE_HOME=/usr/lib/oracle/19.6/client64/lib
export NLS_LANG=Japanese_Japan.AL32UTF8
export LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH
export PATH=/usr/lib/oracle/19.6/client64/bin:$PATH
環境変数の設定を有効化します。
source /etc/profile
tnsnames.oraファイルを作成し、DB1の$ORACLE_HOME/network/admin/tnsmanes.oraファイルの内容をコピー&ペースとします。
tnsnames.ora内の接続記述子でのホストの指定は、DNS名での指定となっています。
sudo vi $ORACLE_HOME/network/admin/tnsnames.ora
DB1_NRT1M2 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = db1.dbsubnet.dbvcn.oraclevcn.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = DB1_nrt1m2.dbsubnet.dbvcn.oraclevcn.com)
)
)
SQL*PlusでDB1のCDBにsysユーザで接続してみます。
opc@ap1 ~]$ sqlplus sys/Demo#1Demo#1@DB1_NRT1M2 as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on 木 11月 26 12:03:06 2020
Version 19.6.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production
Version 19.9.0.0.0
に接続されました。
SQL>
無事、接続できました。
めでたし、めでたし。
参考情報
DNS in Your Virtual Cloud Network
Oracle A-Team Chronicles:Provisioning Custom DNS Resolvers for FQDN Resolution