LOG IN

Alias on PointDNS #dnsonsen

by otsuka752

このエントリは「DNS温泉 Advent Calendar 2019」の 12月5日の記事です。

最初に 3行まとめ。

  1. PointDNS は「TTL を無視して Alias 先の情報をキャッシュし続ける権威サーバ」になる場合がある

  2. PointDNS の Alias は最短 15分(900秒)で更新され、Alias 先の TTL は機能しないように見える

  3. PointDNS には自身が管理していないドメイン名も登録できる(ゾーンを作成できる)

PointHQ 社 [1] が提供する PointDNS サービス(DNS権威サーバのサービス)には、Alias レコード(not CNAME レコード)を登録することができます。下記のような設定で、x.example.net. の A/AAAA に対して x.example.jp. の IPv4/v6 アドレスが応答されます。

 x.example.net.  Alias  x.exampe.jp.

zone apex である example.net. の Alias レコードに hoge.sub.example.jp. などを登録することもできます。

 example.net.  Alias  hoge.sub.exampe.jp.

foo.example.net. の Alias レコードに bar.sub.example.jp. などを登録することもできます。

 foo.example.net.  Alias  bar.sub.exampe.jp.

.(ROOT) から .net を経て example.net への Delegation (追記)および各ゾーンの NSレコード(/追記)は以下のようなイメージです。

3つの NS dns{8,12,15}.dnshq.com. は、アカウントによって一意に決定するように見えます。

dns{8,12,15}.dnshq.com. に Alias レコードを登録すると、x.example.net. の名前解決結果が x.example.jp. の IPアドレスになります。A/AAAAレコードに対応しています。

PointDNS サービスのシステム構成を「予想」してみました。dns{8,12,15}.pointhq.com. のバックエンドには PointDNS サービスの DNSリゾルバが稼働しているように見えます。

client から dig コマンドを 10秒ごとに継続実行して、example.jp. の DNS権威サーバで tcpdump/query log を取得しました。

example.net. (PointDNS) では以下のような Alias レコードを設定しています。

(スクリーンショットのサブドメイン(sub) は気にしないでください。)

alias000.example.net. Alias alias000.example.jp. TTL=0

alias005.example.net. Alias alias005.example.jp. TTL=5

alias060.example.net. Alias alias060.example.jp. TTL=60

alias999.example.net. Alias alias999.example.jp. TTL=999

example.jp. の DNS権威サーバでは以下のような A レコードを設定しました。

alias000.example.jp. A 192.0.2.0 TTL=0

alias005.example.jp. A 192.0.2.5 TTL=5

alias060.example.jp. A 192.0.2.60 TTL=60

alias999.example.jp. A 192.0.2.255 TTL=999

PointDNS の管理画面は以下のようになります。

client から 10秒ごとに 3台の PointDNS の権威サーバ dns{8,12,15}.dnshq.com. にリクエストを送信していますが、Alias 先の権威サーバ(example.jp)側に届くリクエストは 15分(900秒)ごとに A/AAAA  がそれぞれ 1リクエストずつだけです。PointDNS 権威サーバの間で、Alias 先の名前解決結果は共有されているように見えます。

アクセス元(Resolver(PointDNS))の送信元IPアドレスは複数あります。(後述)

そういえば、Alias レコードを作成する時に、以下のようなメッセージが表示されていました。

 Please specify a DNS name to alias. Point will automatically duplicate A and AAAA records from this address at 15 minute intervals. This may be used as an alternative to a CNAME for the root of a domain.

Aレコードのリクエストだけでフィルタした結果です。15分(900秒) ごとにリクエストが届いています。

AAAAレコードのリクエストだけでフィルタした結果です。15分(900秒) ごとにリクエストが届いています。

Alias レコードを登録し十分に時間が経過した後、Alias 先の example.jp 側で Alias 先のレコードを削除してみました。client から 10秒ごとに 3台の PointDNS の権威サーバ dns{8,12,15}.dnshq.com. へのリクエストは継続したままです。

Alias 先へのリクエストが 15分(900秒)から 60秒間隔になりました。リクエストのタイプも A だけになりました。

example.jp の権威サーバ側では、NXDOMAIN (dns.flags.rcode == No such name)を応答しています。

・・・ですが、PointDNS の Alias レコードの TTL 時間、および Alias 先の(レコード削除前の) TTL 時間を経過しても、NXDOMAIN になる前の 192.0.2.xx が応答され続けています。NXDOMAIN になって 10日経過した現在も、古いデータが応答され続けています。

「TTL を無視して Alias 先の情報をキャッシュし続ける権威サーバ」という訳の分からない状態になっています。これはヒドイ。

ちなみに、Alias 先が NXDOMAIN にならず別の値に変更された場合は、15分(900秒) 後には更新されます。また、Alias 先の TTL は PointDNS の Alias 機能には影響していないように見えます。

ここからは、Alias 先を名前解決をする「Resolver(PointDNS) 」の話題です。

約 1週間の観測では、44 個の Resolver(PointDNS) の SourceIPAddr が観測され、逆引きの結果によると AWS(Amazon Web Services) というサービスの eu-west-1(アイルランドリージョン)を使っているように見えます。[2]

$ dig +short -x 34.242.153.154

ec2-34-242-153-154.eu-west-1.compute.amazonaws.com.

$ dig +short -x 99.80.88.108

ec2-99-80-88-108.eu-west-1.compute.amazonaws.com.

AWS アイルランドリージョンの VPC 内部から、VPC で提供されているリゾルバ AmazonProvidedDNS (例: 172.31.0.2) を使う時の SourceIPAddr と一致していることも確認できたので、PointDNS 自身がフルリゾルバを構築している訳ではなく、AWS が提供するフルリゾルバを使っているだけのようです。

また、dns0.pointhq.com. から dns15.pointhq.com. の IPアドレスとその逆引き結果を見ると、DNS権威サーバーでも AWSアイルランドリージョンや GCP を使っているように見えます。[3]

最後は、PointDNS の権威サーバに登録できる(ゾーンを作成できる)ドメイン名の話題です。

ドメイン名に「. (ROOT)」「com」「net」「org」「jp」「co.jp」などを指定すると、(おそらくブラックリストになっていて)下記のエラーになりゾーンを作成できません。

 Name is invalid

PointDNS にすでに登録済みのドメイン名や、登録済みドメイン名と親子子孫関係になるドメイン名の場合には、下記のエラーになりやはりゾーンを作成できません。

 Name is managed by another account. Name has already been taken

上記 2種類に該当しないドメイン名であれば、自身が管理していない(他者が管理している)任意のドメイン名を登録できる(ゾーンを作成できる)ように見えます。つまり、自身が管理している自身では PointDNS に未登録のドメイン名であっても、他人が登録済みであればゾーンは作成できません。

なお、アカウントを作成して 1週間後、以下のエラーでログインできなくなりました。(2週間じゃないの・・・?) でも、まだゾーンは残っていて応答しているので、来年のアドベントカレンダーのネタ用に監視を続けています。

 Signup for 14 days trial

 No credit card required

 Email address has already been taken

まとめはありません。以上です。6日目の明日は、@tss_ontap_o さんの「黒塗りのDNS -論文編」です。色々とヤバイ話が出てきそうです。

[1] https://pointhq.com/

[2] Resolver(PointDNS) の SourceIPAddr

$ wc -l Resolvers_PointDNS.txt

44 Resolvers_PointDNS.txt

$ sort -n -t '.' -k1,1 -k2,2 -k3,3 -k4,4 Resolvers_PointDNS.txt

34.242.153.154

34.242.153.156

34.242.153.158

34.242.153.160

34.242.153.170

34.242.153.172

34.242.153.173

34.242.153.232

34.242.153.237

34.242.153.244

34.242.153.253

34.242.153.255

34.245.82.0

34.245.82.9

34.245.82.16

34.245.82.17

34.245.82.25

34.245.82.28

34.245.82.37

34.245.82.55

34.245.82.57

34.245.205.101

34.245.205.110

34.245.205.115

34.245.205.121

34.245.205.123

34.245.205.134

34.245.205.142

34.245.205.164

34.245.205.169

34.245.205.181

34.245.205.182

99.80.34.114

99.80.34.116

99.80.34.124

99.80.34.126

99.80.88.1

99.80.88.12

99.80.88.20

99.80.88.29

99.80.88.33

99.80.88.100

99.80.88.103

99.80.88.108

[3] dnsXX.pointhq.com とその逆引き結果

$ for j in $(seq 0 15); do dig +short dns${j}.pointhq.com.; done

52.31.47.44

34.249.128.115

63.35.111.200

109.233.112.63

173.255.231.87

173.255.215.107

193.33.179.204

46.23.76.200

91.109.245.139

37.123.115.172

23.236.59.22

173.192.101.194

81.95.158.50

119.81.97.170

178.62.47.76

34.249.128.115

63.35.111.200

52.31.47.44

188.226.197.55

52.64.171.200

$ for k in `for j in $(seq 0 15); do dig +short dns${j}.pointhq.com.; done`; do dig +short -x ${k}; done

ec2-34-249-128-115.eu-west-1.compute.amazonaws.com.

ec2-63-35-111-200.eu-west-1.compute.amazonaws.com.

ec2-52-31-47-44.eu-west-1.compute.amazonaws.com.

dns1.pointhq.com.

dns2.pointhq.com.

dns3.pointhq.com.

dns4.pointhq.com.

dns5.pointhq.com.

dns6.pointhq.com.

dns7.pointhq.com.

22.59.236.23.bc.googleusercontent.com.

dns9.pointhq.com.

dns10.pointhq.com.

dns11.pointhq.com.

dns12.pointhq.com.

ec2-63-35-111-200.eu-west-1.compute.amazonaws.com.

ec2-52-31-47-44.eu-west-1.compute.amazonaws.com.

ec2-34-249-128-115.eu-west-1.compute.amazonaws.com.

dns14.pointhq.com.

dns15.pointhq.com.

OTHER SNAPS