Route53のPrivate Hosted Zoneを試してみる

こんにちは。
株式会社クラスアクト インフラストラクチャ事業部の大塚です。

今回はRoute53についてお勉強してみます。

# 環境イメージ
今回作成する環境は以下となります。
VPCにsubnetを2つ作り、そこにEC2を計3つデプロイします。jump-host（踏み台サーバ）とその他2台の構成で、jump-hostのみパブリックIPをもち、外部からSSH接続できるようにします。
VPCにRoute53を連携させて、jump-hostから他のEC2へドメインでの名前解決、疎通確認が出来るようにしていきたいと思います。

![20240620から-ページ8.drawio (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/66744911-31f9-e3ec-c0ed-58534c0f2c7b.png)

※正直、絵があっているか、自信はあまりありません。
　以下の資料・図を参考に作ってみました。

https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_Amazon-Route53-Resolver_0530_v1.pdf

![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/2ea65581-895d-b18e-e1b3-e1cedbaa5060.png)


# 用語
## Route 53 Resolver
VPC内のリソース（及びオンプレミス）からの問い合わせを解決するサービスで、VPCに設定されたネットワーク + 2のIPアドレスをもって自動で設定されるようです。
VPC内に立ち上げられたEC2の/etc/resolv.confを見てみるとIPアドレスを確認することが出来ます。"nameserver 192.168.0.2"がそれを示しています。
```
[root@i-00edb02b7c623d04f ~]# cat /etc/resolv.conf
# This is /run/systemd/resolve/resolv.conf managed by man:systemd-resolved(8).
# Do not edit.
#
# This file might be symlinked as /etc/resolv.conf. If you're looking at
# /etc/resolv.conf and seeing this text, you have followed the symlink.
#
# This is a dynamic resolv.conf file for connecting local clients directly to
# all known uplink DNS servers. This file lists all configured search domains.
#
# Third party programs should typically not access this file directly, but only
# through the symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a
# different way, replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.

nameserver 192.168.0.2
search ap-northeast-1.compute.internal
```
VPCにEC2を立ち上げると自動でプライベートIPアドレスなどが払い出されますが、これはDHCPの設定によるもので、そのDHCPの中に「DNSへの問い合わせは"ネットワーク + 2のIPアドレス"に問い合わせてね」という設定されているらしいです。

AWSをよく漁ってみるとVPCの中にDHCP オプションセットというものがあり、これのドメインネームサーバーにAmazonProvidedDNSとの記載がありますが、これが影響しているようです。
![Untitled (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/65d76ade-49fe-70b4-c1d3-70930c26e6a7.png)

VPCの設定を見てみると、このDHCP オプションセットがアタッチされていることがわかります。
![Untitled (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/736ca3ea-0e05-56fe-43fd-a8f85f32d145.png)
![Untitled (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/4345a0f3-d08b-19ff-5d70-adf9576755dc.png)

# 環境構築
## VPC,Subnet,IGWの作成
検証用のネットワークを作成していきます。
まずはVPCです。my-vpcという名前でIPv4 CIDRを192.168.0.0/16としました。
![screencapture-ap-northeast-1-console-aws-amazon-vpcconsole-home-2024-06-22-22_21_42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/a60101d4-a9f9-482d-0439-32b97ee4bc59.png)
続いてSubnetを作成していきます。上記で作成したVPCを選択して、その中で2つのSubnetを作成しました。
- my-vpc-subnet01 192.168.1.0/24 AZ:a
- my-vpc-subnet02 192.168.2.0/24 AZ:c
![screencapture-ap-northeast-1-console-aws-amazon-vpcconsole-home-2024-06-22-22_23_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/cb4ec864-8ed0-f2a4-108a-742f069cb4ca.png)
IGWを作成してVPCにアタッチ、RoteTableにルートを設定してインターネットに抜けれるように設定します。
![screencapture-ap-northeast-1-console-aws-amazon-vpcconsole-home-2024-06-22-22_23_37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/6018700b-ea7c-2b74-b150-8ee471a27074.png)
![Untitled (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/421375f6-7264-c2f7-f8f9-c5e87799a0f7.png)

## Route53の作成
Route53の管理コンソールにアクセスして、画面左のタブからホストゾーンを選択します。
ホストゾーンの作成を押下します。
![Untitled (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/fdf36aed-1cac-926a-74ae-6b9a65c55929.png)
ドメイン名をexample.comとし、タイプをプライベートホストゾーンとします。
またVPCで先ほど作成したVPCを選択してあげます。
![screencapture-us-east-1-console-aws-amazon-route53-v2-hostedzones-2024-06-22-22_28_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/70c63246-9829-75d2-8ed0-c8c56cc508cd.png)
作成されたことを確認します。ドメイン名の左側にプライベートと記載されていますね。
後からEC2を作成しますが、EC2のプライベートIP確認後こちらにAレコードを登録していきます。
![Untitled (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/d3941886-3865-cfc5-a24a-9ca3da0528f9.png)

## SG,EC2の作成
まずはEC2にアタッチするSGを作成していきます。
今回はSSHとICMPだけ許可をしています。outboundは弄ってません。
![screencapture-ap-northeast-1-console-aws-amazon-ec2-home-2024-06-22-22_46_15 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/0d1d6e50-ca48-03c0-da47-cb019a92a885.png)
次にEC2を作成します。3つ立てますが、jump-hostはパブリックIPを付与することを忘れずに・・・
![screencapture-ap-northeast-1-console-aws-amazon-ec2-home-2024-06-22-22_57_19 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/fd8c6efb-1181-a5e8-5854-fa22562fd54c.png)
立ち上げたEC2のプライベートIPを確認します。
![Untitled (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/031f950e-efdd-4db7-92b7-cf1a161e25ba.png)
![Untitled (10).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/41fb1cc8-41b5-fdb4-ac2b-0f575d0d9ba0.png)

## Route53のAレコード作成
作成したホストゾーンを押下します。
![Untitled (9).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/a36d4892-2783-8867-e38b-6c6b4c618065.png)
レコードを作成を押下します。
![Untitled (12).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/76bd643a-ecac-28bb-a227-2a2847d7d1da.png)
任意のレコード名を入力して、EC2にアタッチされていたプライベートIPを値のところに入力してレコードを作成を押下します
今回はjump-host以外の2台に対してAレコードを作成します。
![screencapture-us-east-1-console-aws-amazon-route53-v2-hostedzones-2024-06-22-23_00_21 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/f8c5cae1-2b88-698d-2e2d-9ac088429c90.png)
![screencapture-us-east-1-console-aws-amazon-route53-v2-hostedzones-2024-06-22-23_06_58 (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/371fd649-b188-1672-a8af-38e1718606f1.png)
作成されたことを一覧から確認します。
![Untitled (13).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/6e1590f7-be3e-157e-8e08-de82e6b5b5b6.png)
## VPCの設定
VPCのダッシュボードから、今回使用するVPCを選択し、右上のアクションからVPC設定を編集を押下します。
![Untitled (14).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/6ff72e98-73e4-7ecd-b5f3-46815b4d87f9.png)
DNS設定でDNS解決を有効化とDNSホスト名を有効化にチェックを入れて保存を押下します。
この設定が入っていないとEC2から名前解決することが出来ませんでした。
![screencapture-ap-northeast-1-console-aws-amazon-vpcconsole-home-2024-06-22-23_25_33 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/dfe44817-e090-19c2-e124-ac561548c061.png)

## 確認
jump-hostに対してSSH接続してnslookupコマンドにより、名前解決が出来るかを確認してみます。
結果は以下のようになり、解決することが出来ています。
```
[root@i-00edb02b7c623d04f ~]# nslookup subnet01-ec2.example.com
Server:         192.168.0.2
Address:        192.168.0.2#53

Non-authoritative answer:
Name:   subnet01-ec2.example.com
Address: 192.168.1.139

[root@i-00edb02b7c623d04f ~]# nslookup subnet02-ec2.example.com
Server:         192.168.0.2
Address:        192.168.0.2#53

Non-authoritative answer:
Name:   subnet02-ec2.example.com
Address: 192.168.2.40
```
![Untitled (15).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/cf065026-0c63-8699-77fd-16937158c292.png)

pingも飛びました。疎通問題なしですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/dce2af27-4d0f-1e75-8d83-dec75d08c299.png)