Database JUNKY

MySQL,MariaDBを中心としたブログです

AWS route53でワイルドカードを利用したDNSレコードの作成そして・・優先順位はどうなるの?

route53しか使っていないので、自分の中ではroute53の機能としてメモを書きます(笑) 結論として、awsのroute53はワイルドカードDNSレコードを作成できる!ことです(笑)

例えば・・、

52.5.71.100 というpublic ipを持つインスタンスがあったとして、 これを、 zone s-quad.com に

a1.s-quad.com
a2.s-quad.com
a3.s-quad.com
a4.s-quad.com
a5.s-quad.com
・
・
a1000.s-quad.com

というFQDNを登録したい場合どうしますか?私は1000レコード作る気まんまんだったのですが、どーもそんなことしなくても良さげな感じでした

それがワイルドカードDNSレコードってやつですね。

例えば、上記の場合、a1 - a1000まで全ての向き先は、52.5.71.100としたい場合、以下のような書き方をします、TYPE : Aレコードのホスト名を * (アスタリスク)で設定すれば良いのです。

Nameに * を設定 Valueに 52.5.71.100 を設定

f:id:hit10231023:20190304185929j:plain

設定はこれだけです。上記の説明で、a1〜 と書きましたが、このケースの場合厳密には、*.s-quad.comのホスト名は、ホスト名に関係なく、52.5.71.100にマッピングされます。 つまり、a1とか何系なく、aaa.s-quad.com bbb.s-quad.comとかでも、52.5.71.100 にマッピングされるわけです。

全てがワイルドカードマッピングされても困る

でも、全てワイルドカードで困りますよね(汗)

ざっくりいうと、a1とか何系なく、aaa.s-quad.com bbb.s-quad.comとか関係なく、52.5.71.100 にマッピングされるわけです

で困る場合があります。 たとえば、www.s-quad.com は別のpublicipにマッピングしたい場合などですね。

Name : www.s-quad.com ipaddr : 133.130.100.33

DNSの優先順位について

そこでDNSの優先順位があります。DNSの参照優先順位として

  1. FQDNレコードがあるか?
  2. 上記が無い場合、ワイルドカードで条件がマッチするか?

の優先順位の決定がされるわけです。例として、www.s-quad.comは、133.130.100.33としてAレコードを作成した場合、

Name : www.s-quad.com ipaddr : 133.130.100.33

f:id:hit10231023:20190304190155j:plain

DNSの内部では、 www.s-quad.com というFQDNにマッチした条件の優先して、ワイルドカードDNSは参照しない という動きになります。

f:id:hit10231023:20190304191637j:plain

では、以下のようなケースの場合、route53はどのような動きになるでしょうか?

例1:ワイルドカードが複数存在する場合、

Name : *.s-quad.com ipaddr: ip : 52.5.71.100

Name : a*.s-quad.com : ipaddr : 3.84.101.101

Name : b*.s-quad.com ipaddr : 34.203.193.100

Name : www.s-quad.com ipaddr : 133.130.100.33

上記3つのワイルドカードDNSレコードはそれぞれの向き先のipが異なります。 想定では

a1.s-quad.com --> 3.84.101.101
b1.s-quad.com --> 34.203.193.100
c1.s-quad.com --> 52.5.71.100
www.s-quad.com --> 133.130.100.33

となると思っていますが、どうでしょうか?

nslookupコマンドで確認してみます。

a1.s-quad.com

$ nslookup a1.s-quad.com
Server:     8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
Name:   a1.s-quad.com
Address: 52.5.71.100

b1.s-quad.com

$ nslookup b1.s-quad.com
Server:     8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
Name:   b1.s-quad.com
Address: 52.5.71.100

c1.s-quad.com

$ nslookup c1.s-quad.com
Server:     8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
Name:   c1.s-quad.com
Address: 52.5.71.100

www.s-quad.com

$ nslookup www.s-quad.com
Server:     8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
Name:   www.s-quad.com
Address: 133.130.100.33

もう・・なんていうか、、のっけからグダグダです。え。。とつまり、ワイルドカードを設定した場合は、部分一致の設定が追加されていても全て、*.s-quad.comに踏襲されるという意味なのかな? しかしながら、FQDNで指定した、www.s-quad.comはちゃんとした、ipaddrを返してくれています

例2: *.s-quad.comだけ削除

では、このようなケースの場合、どのような動きになるでしょうか?

Name : *.s-quad.com ipaddr: 52.5.71.100 <--- 削除

Name : a*.s-quad.com ipaddr : 3.84.101.101

Name : b*.s-quad.com ipaddr : 34.203.193.100

a1.s-quad.com

$ nslookup a1.s-quad.com
Server:     8.8.8.8
Address:    8.8.8.8#53

** server can't find a1.s-quad.com: NXDOMAIN

b1.s-quad.com

$ nslookup b1.s-quad.com
Server:     8.8.8.8
Address:    8.8.8.8#53

** server can't find b1.s-quad.com: NXDOMAIN

c1.s-quad.com

$ nslookup c1.s-quad.com
Server:     8.8.8.8
Address:    8.8.8.8#53

** server can't find c1.s-quad.com: NXDOMAIN

あら、こっちもメタメタでした(汗)まとめると、部分一致ワイルドカードなんて無いということでしょうか?

例3: FQDNを掘り下げてワイルドカード設定

もうこうなったらやけくそです。これならうまくいくだろう!!

Name : *.s-quad.com ipaddr: 52.5.71.100

Name : *.a1.s-quad.com ipaddr : 3.84.101.101

Name : *.b1.s-quad.com ipaddr : 34.203.193.100

x.a1.s-quad.com

# nslookup x.a1.s-quad.com
Server:     8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
Name:   x.a1.s-quad.com
Address: 3.84.101.101

x.b1.s-quad.com

# nslookup x.b1.s-quad.com
Server:     8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
Name:   x.b1.s-quad.com
Address: 34.203.193.100

s-quad.com

nslookup a1.s-quad.com
Server:     8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
Name:   a1.s-quad.com
Address: 52.5.71.100

今度はうまく振り分けてくれた!!でもなんか。。。全然うれしくない(笑)

結論

ドメイン(zone) を分けた方が全然楽!!!!

f:id:hit10231023:20180921202021p:plain