内容
下記オンプレミスからAWS上の名前解決の検証を行う記事の別パターンとなります。両方ともオンプレミスのDNS設定にDNSインバウンドエンドポイントへのフォワード設定を行い、Route53のプライベートホストゾーン内のレコードで名前解決を行います。下記記事との違いはPrivateLinkを使用して接続する点です。サービス提供側でEndpoint Service、サービス接続側でVPCエンドポイントを作成して接続します。Endpoint Service作成時にプライベートDNS名を有効化することで、PrivateLink接続時に、カスタムDNS名を使用する構成としています。
構成
このアーキテクチャのポイントは緑線箇所です。Account B側でEndpoint Serviceを作成時に「プライベートDNS名を有効化」します。Account A側でVPCエンドポイント作成時に「DNS名を有効化」することで、VPCエンドポイント作成VPCに内部的なRoute53のプライベートホストゾーンが作成されます。EC2サーバからの名前解決の流れは赤線の流れになります。ローカルのDNSサーバに問合せた後、xxx.co.jpドメインはDNSインバンドエンドポイントに転送⇒内部的に作成されたプライベートホストゾーンで名前解決を行います。その後、EC2内から黄色線の流れで、VPCエンドポイントに接続後、Endpoint Service⇒NLBの順番でアクセスします。
構築
まず、Acoount B側の準備を行います。VPCの設定や下記準備が出来ている前提でEndpoint Serviceを作成してきます。
- Route53でパブリックホストゾーンが作成済みである。
- Network Load Balancer(NLB)が作成済みである。
Endpoint Service作成の際、「プライベートDNS名をサービスに関連付ける」にチェック後、プライベートDNS名に「test.xxx.co.jp」を入力します。
Endpoint Serviceが作成されますが、「ドメインの検証ステータス」がPending verificationとなっているため、ドメイン名の検証を行います。
「アクション」から「プライベートDNS名のドメイン所有権を確認」を選択すると下記画面が表示されます。
Route53のコンソールに移動し、該当ドメインにTXTレコードを追加後、上記画面の「検証」をクリックします。
しばらく待つと「ドメインの検証ステータス」がVerifiedに変更されます。
Endpoint Serviceの「プリンシパルを許可」タブに移動後、Accout A側からの接続を許可します。許可するIDにarn:aws:iam::Accoun AのAWSアカウントID:root」を指定します。これでAccout B側の準備は完了です。Endpoint Serviceのサービス名のメモしておきます。
Account A側でVPCエンドポイントを作成します。タイプは「PrivateLink Readyパートナーのサービス」を選択後、先ほどメモしたサービス名を入力後、サービスの検証をクリックします。
また、作成の際、「DNS名を有効化」にチェックを入れます。
確認
ここからEC2にログインして名前解決が可能であるか確認していきます。なおEC2側のDNSサーバの設定はこちらの記事と同様です。
現在の状態では、test.xxx.co.jpに関する設定がないため、test.xxx.co.jpの名前解決を行うことは出来ません。
nslookup test.xxx.co.jp
;; communications error to 172.20.1.10#53: timed out
;; communications error to 172.20.1.10#53: timed out
;; Got SERVFAIL reply from 172.20.1.10
Server: 172.20.1.10
Address: 172.20.1.10#53
xxx.co.jpドメインへのリクエストをDNSインバウンドエンドポイントに転送する設定を行った後、bindの再起動を行います。
vim /etc/named.conf
zone "xxx.co.jp" IN {
type forward;
forward only;
forwarders { 172.20.1.20; 172.20.1.30; };
};
systemctl restart named
これで有効にしたDNS名の名前解決することが出来ました。また、VPCエンドポイントのDNS名を使用しても同様のIPアドレスが返ってくることが確認出来ます。
nslookup test.xxx.co.jp
Server: 172.20.1.10
Address: 172.20.1.10#53
Non-authoritative answer:
Name: test.xxx.co.jp
Address: 172.20.1.50
nslookup vpce-xxx.vpce-svc-xxx.ap-northeast-1.vpce.amazonaws.com
Server: 172.20.1.10
Address: 172.20.1.10#53
Non-authoritative answer:
Name: vpce-xxx.vpce-svc-xxx.ap-northeast-1.vpce.amazonaws.com
Address: 172.20.1.50
また、AWS CLIを使用すると、内部的に作成されているホストゾーンの確認が出来ます。
aws route53 list-hosted-zones-by-vpc --vpc-id vpc-xxxxxxxxxxxxxxxxx --vpc-region ap-northeast-1
{
"HostedZoneSummaries": [
{
"HostedZoneId": "XXXXXXXXXXXXXXXXXXX,
"Name": "test.xxx.co.jp",
"Owner": {
"OwningService": "vpce.amazonaws.com"
}
},
],
"MaxItems": "100"