2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

EC2にDNSサーバを構築してRoute53インバウンドエンドポイントへのフォワードを試す(PrivateLinkを使用する方法)

Posted at

内容

下記オンプレミスから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の順番でアクセスします。

vpce01.png

構築

まず、Acoount B側の準備を行います。VPCの設定や下記準備が出来ている前提でEndpoint Serviceを作成してきます。

  • Route53でパブリックホストゾーンが作成済みである。
  • Network Load Balancer(NLB)が作成済みである。

Endpoint Service作成の際、「プライベートDNS名をサービスに関連付ける」にチェック後、プライベートDNS名に「test.xxx.co.jp」を入力します。

vpce02.png

Endpoint Serviceが作成されますが、「ドメインの検証ステータス」がPending verificationとなっているため、ドメイン名の検証を行います。

vpce03.png

「アクション」から「プライベートDNS名のドメイン所有権を確認」を選択すると下記画面が表示されます。

vpce04.png

Route53のコンソールに移動し、該当ドメインにTXTレコードを追加後、上記画面の「検証」をクリックします。

vpce05.png

しばらく待つと「ドメインの検証ステータス」がVerifiedに変更されます。

vpce06.png

Endpoint Serviceの「プリンシパルを許可」タブに移動後、Accout A側からの接続を許可します。許可するIDにarn:aws:iam::Accoun AのAWSアカウントID:root」を指定します。これでAccout B側の準備は完了です。Endpoint Serviceのサービス名のメモしておきます。

image.png

Account A側でVPCエンドポイントを作成します。タイプは「PrivateLink Readyパートナーのサービス」を選択後、先ほどメモしたサービス名を入力後、サービスの検証をクリックします。

vpce08.png

また、作成の際、「DNS名を有効化」にチェックを入れます。

vpce09.png

確認

ここから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"
2
2
0

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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?