こんにちは。
株式会社クラスアクト インフラストラクチャ事業部の大塚です。
今回はRoute53についてお勉強してみます。
環境イメージ
今回作成する環境は以下となります。
VPCにsubnetを2つ作り、そこにEC2を計3つデプロイします。jump-host(踏み台サーバ)とその他2台の構成で、jump-hostのみパブリックIPをもち、外部からSSH接続できるようにします。
VPCにRoute53を連携させて、jump-hostから他のEC2へドメインでの名前解決、疎通確認が出来るようにしていきたいと思います。
※正直、絵があっているか、自信はあまりありません。
以下の資料・図を参考に作ってみました。
用語
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との記載がありますが、これが影響しているようです。
VPCの設定を見てみると、このDHCP オプションセットがアタッチされていることがわかります。
環境構築
VPC,Subnet,IGWの作成
検証用のネットワークを作成していきます。
まずはVPCです。my-vpcという名前でIPv4 CIDRを192.168.0.0/16としました。
続いてSubnetを作成していきます。上記で作成したVPCを選択して、その中で2つのSubnetを作成しました。
- my-vpc-subnet01 192.168.1.0/24 AZ:a
- my-vpc-subnet02 192.168.2.0/24 AZ:c
IGWを作成してVPCにアタッチ、RoteTableにルートを設定してインターネットに抜けれるように設定します。
Route53の作成
Route53の管理コンソールにアクセスして、画面左のタブからホストゾーンを選択します。
ホストゾーンの作成を押下します。
ドメイン名をexample.comとし、タイプをプライベートホストゾーンとします。
またVPCで先ほど作成したVPCを選択してあげます。
作成されたことを確認します。ドメイン名の左側にプライベートと記載されていますね。
後からEC2を作成しますが、EC2のプライベートIP確認後こちらにAレコードを登録していきます。
SG,EC2の作成
まずはEC2にアタッチするSGを作成していきます。
今回はSSHとICMPだけ許可をしています。outboundは弄ってません。
次にEC2を作成します。3つ立てますが、jump-hostはパブリックIPを付与することを忘れずに・・・
立ち上げたEC2のプライベートIPを確認します。
Route53のAレコード作成
作成したホストゾーンを押下します。
レコードを作成を押下します。
任意のレコード名を入力して、EC2にアタッチされていたプライベートIPを値のところに入力してレコードを作成を押下します
今回はjump-host以外の2台に対してAレコードを作成します。
作成されたことを一覧から確認します。
VPCの設定
VPCのダッシュボードから、今回使用するVPCを選択し、右上のアクションからVPC設定を編集を押下します。
DNS設定でDNS解決を有効化とDNSホスト名を有効化にチェックを入れて保存を押下します。
この設定が入っていないとEC2から名前解決することが出来ませんでした。
確認
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