3
3

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インバウンドエンドポイントへのフォワードを試す(CNAMEを使用した方法)

Posted at

内容

Network Load Balancer(NLB)の先にWEBシステムを構築。www.example.co.jpにアクセスするとNLB作成時に自動的に払い出されるNLBのDNS名(test-lb-xxx.elb.ap-northeast-1.amazonaws.com)にアクセスする環境を想定します。この場合、www.example.co.jpの名前解決が必要となりますが、Route53のホストゾーンにレコードを登録する方式ではなく、オンプレミスのDNSサーバにCNAME(別名レコード)を登録する方法を検証します。www.example.co.jpにアクセスするとCNAMEとして定義された、test-lb-xxx.elb.ap-northeast-1.amazonaws.comにアクセス。その後、test-lb-xxx.elb.ap-northeast-1.amazonaws.comの名前解決が行われ、NLBのIPアドレスを取得する流れとなります。なお、オンプレミス環境はインターネット接続出来ない環境を想定しています。

構成

下記の図でEC2がオンプレミス側のDNSサーバ想定環境になります。検証で使用するDNSサーバはLinux環境にbindをインストールします。ECサーバ内部から赤線の流れでwww.example.co.jpの名前解決が行われ、黄色線の流れでECサーバからNLBが提供するWEBシステムにアクセスする環境を想定します。EC2サーバ内部からの名前解決の流れは下記のようになります。

DNS02.png

  • EC2サーバからnslookup www.example.co.jpコマンドを実行します。
  • /etc/resolv.confには問合せ先のDNSサーバを指定します。EC2内に構築したDNSサーバに問合せを行うため、ここはEC2サーバのローカルのIPアドレスとなります。
  • nslookup www.example.co.jpコマンドを実行した際、/etc/resolv.confを参照し、172.20.1.10(ローカルにインストールされたDNSサーバ)に名前解決のリクエストを送信します。
  • DNSサーバにはwww.example.co.jptest-lb-xxx.elb.ap-northeast-1.amazonaws.comといったCNAMEレコードが存在するためtest-lb-xxx.elb.ap-northeast-1.amazonaws.comにアクセスします。

test-lb-xxx.elb.ap-northeast-1.amazonaws.comはインターネット上に存在するゾーンです。通常、インターネットに接続可能な環境ではこの後、test-lb-xxx.elb.ap-northeast-1.amazonaws.comの名前解決は可能ですが、未接続の環境ではインターネット上のamazonaws.comが名前解決出来ません。ここでインターネット上の名前解決を行うために、DNSインバウンドエンドポイントを使用します。該当ドメインをDNSインバウンドにフォワードすることによって、インターネット上の名前解決が可能になります。そのため、オンプレミスのDNSサーバにamazonaws.comドメインはDNSインバンドエンドポイントに転送するといったルールを記載します。

  • test-lb-xxx.elb.ap-northeast-1.amazonaws.comの名前解決が行われ、NLBのIPアドレスを取得します。これにより、NLBにアクセスが可能となります。

環境構築

前提

  • インバウンドエンドポイントが作成済みである。
  • VPCおよびEC2が作成済みである。
  • セキュリティグループ、ルートテーブルの設定などが適切にされている。

上記準備が完了している状態でEC2にbindのインストール、設定を行っていきます。

構築

  • bindのインストール
yum install -y bind bind-utils
  • リゾルバの設定
    EC2サーバ内から名前解決する時、問合せ先のDNSサーバを指定します。VPC内のデフォルトDNSサーバが設定されているため、EC2のIPアドレスに設定します。
vi /etc/resolv.conf
nameserver 172.20.1.10
  • インターネット向けの名前解決が出来ないため、NLBの名前解決出来ない状態です。
nslookup test-lb-xxx.elb.ap-northeast-1.amazonaws.com
;; 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
  • named.confに下記を追加、amazonaws.com宛の通信をDNSインバウンドエンドポイントにフォワードするルールを追加後、bindの再起動を行います。
vim /etc/named.conf

zone "amazonaws.com" IN {
    type forward;
    forward only;
    forwarders { 172.20.1.20; 172.20.1.30; };
};

systemctl restart named
  • DNSインバウンドエンドポイント経由でNLBの名前解決が出来るようになりました。
nslookup test-lb-xxx.elb.ap-northeast-1.amazonaws.com
Server:         172.20.1.10
Address:        172.20.1.10#53

Non-authoritative answer:
Name:   test-lb-xxx.elb.ap-northeast-1.amazonaws.com
Address: 172.20.1.40
Name:   test-lb-xxx.elb.ap-northeast-1.amazonaws.com
Address: 172.20.1.50
  • まだこの状態ではCNAMEレコード未追加のため、www.example.co.jpの名前解決を行うことが出来ません。
nslookup www.example.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

** server can't find www.example.co.jp: SERVFAIL
  • named.confにexample.co.jpのゾーン情報を追加します。
vim /etc/named.conf
zone "example.co.jp" IN {
    type master;
    file "example.co.jp.zone";
};
  • また/var/named/example.co.jp.zoneを作成しCNAMEレコードを定義後、bindの再起動を行います。
vim /var/named/example.co.jp.zone
$TTL 86400
@   IN  SOA ns1.local.net. root.local.net. (
        2024031701
        3600
        900
        604800
        86400 )
;
@       IN  NS      ns1.local.net.
ns1 IN  A   172.20.1.10
www IN  CNAME test-lb-xxx.elb.ap-northeast-1.amazonaws.com.

systemctl restart named
  • これでwww.example.co.jpの名前解決が出来るようになりました。
nslookup www.example.co.jp
Server:         172.20.1.10
Address:        172.20.1.10#53

www.example.co.jp       canonical name = test-lb-xxx.elb.ap-northeast-1.amazonaws.com.
Name:   test-lb-xxx.elb.ap-northeast-1.amazonaws.com
Address: 172.20.1.50
Name:   test-lb-xxx.elb.ap-northeast-1.amazonaws.com
Address: 172.20.1.40
3
3
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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?