ちょっと話題の記事

[レポート] DNSにちょっとだけ詳しくなりたい人に贈る少し突っ込んだDNSの話 #devio_day1 #main

2023.04.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ども、大瀧です。

4/11(火) DevelopersIO Day Oneで登壇したセッション「DNSにちょっとだけ詳しくなりたい人に贈る少し突っ込んだDNSの話」のレポートブログです。

資料

IT技術に携わる様々な方に向けて、DNSに興味を持ってもらえるような話題を3つご紹介しました。会場の挙手で参加者の職種を聞き満遍なくいろいろな方が参加いただいていたので、興味を持ってもらえたのであればミートできたのかなと思っています(前向き)。

  1. DNSの勉強方法とデバッグ
  2. Amazon Route 53
  3. DNS over なにか

この記事では、Route 53のIP Anycastの様子↓をEC2インスタンスから検証するコマンド実行例を補足しておきます。

IP Anycastでは同一のグローバルIPアドレスのホストを地理的に離れた場所に分散配置し、クライアントからは最寄りのホストに向くようインターネットのルーターによって経路制御されます。例えば、EC2インスタンスを東京リージョンとアイルランドリージョンで立ち上げると相互のレイテンシは往復200msほど(光速に近い遅延)になります。

[tokyo] $ ping 54.171.XX.XX -c 10 # 東京→アイルランドのインスタンスにping送出
PING 54.171.XX.XX (54.171.XX.XX) 56(84) bytes of data.
64 bytes from 54.171.XX.XX: icmp_seq=1 ttl=102 time=201 ms
64 bytes from 54.171.XX.XX: icmp_seq=2 ttl=102 time=201 ms
64 bytes from 54.171.XX.XX: icmp_seq=3 ttl=102 time=201 ms
64 bytes from 54.171.XX.XX: icmp_seq=4 ttl=102 time=201 ms
64 bytes from 54.171.XX.XX: icmp_seq=5 ttl=102 time=201 ms
64 bytes from 54.171.XX.XX: icmp_seq=6 ttl=102 time=201 ms
64 bytes from 54.171.XX.XX: icmp_seq=7 ttl=102 time=201 ms
64 bytes from 54.171.XX.XX: icmp_seq=8 ttl=102 time=201 ms
64 bytes from 54.171.XX.XX: icmp_seq=9 ttl=102 time=201 ms
64 bytes from 54.171.XX.XX: icmp_seq=10 ttl=102 time=201 ms

--- 54.171.XX.XX ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9015ms
rtt min/avg/max/mdev = 200.704/200.748/200.965/0.073 ms

それに対して2つのリージョンからRoute 53のDNSサーバーのIPアドレスにpingを送ると、先ほどの結果よりも遙かに小さい遅延になりました。合計が2リージョン間のレイテンシよりも小さいことがわかります。

東京リージョンのEC2インスタンス

[tokyo] $ host -t ns classmethod.jp
classmethod.jp name server ns-1722.awsdns-23.co.uk.
classmethod.jp name server ns-266.awsdns-33.com.
classmethod.jp name server ns-576.awsdns-08.net.
classmethod.jp name server ns-1421.awsdns-49.org.
[tokyo] $ host ns-1722.awsdns-23.co.uk.
ns-1722.awsdns-23.co.uk has address 205.251.198.186
ns-1722.awsdns-23.co.uk has IPv6 address 2600:9000:5306:ba00::1
[tokyo] $ ping 205.251.198.186 -c 10
PING 205.251.198.186 (205.251.198.186) 56(84) bytes of data.
64 bytes from 205.251.198.186: icmp_seq=1 ttl=239 time=2.27 ms
64 bytes from 205.251.198.186: icmp_seq=2 ttl=239 time=2.31 ms
64 bytes from 205.251.198.186: icmp_seq=3 ttl=239 time=2.31 ms
64 bytes from 205.251.198.186: icmp_seq=4 ttl=239 time=2.30 ms
64 bytes from 205.251.198.186: icmp_seq=5 ttl=239 time=2.30 ms
64 bytes from 205.251.198.186: icmp_seq=6 ttl=239 time=2.29 ms
64 bytes from 205.251.198.186: icmp_seq=7 ttl=239 time=2.29 ms
64 bytes from 205.251.198.186: icmp_seq=8 ttl=239 time=2.30 ms
64 bytes from 205.251.198.186: icmp_seq=9 ttl=239 time=2.29 ms
64 bytes from 205.251.198.186: icmp_seq=10 ttl=239 time=2.29 ms

--- 205.251.198.186 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9012ms
rtt min/avg/max/mdev = 2.270/2.293/2.310/0.011 ms

アイルランドリージョンのEC2インスタンス

[ireland] $ ping 205.251.198.186 -c 10
PING 205.251.198.186 (205.251.198.186) 56(84) bytes of data.
64 bytes from 205.251.198.186: icmp_seq=1 ttl=230 time=11.3 ms
64 bytes from 205.251.198.186: icmp_seq=2 ttl=230 time=11.3 ms
64 bytes from 205.251.198.186: icmp_seq=3 ttl=230 time=11.3 ms
64 bytes from 205.251.198.186: icmp_seq=4 ttl=230 time=11.3 ms
64 bytes from 205.251.198.186: icmp_seq=5 ttl=230 time=11.3 ms
64 bytes from 205.251.198.186: icmp_seq=6 ttl=230 time=11.3 ms
64 bytes from 205.251.198.186: icmp_seq=7 ttl=230 time=11.3 ms
64 bytes from 205.251.198.186: icmp_seq=8 ttl=230 time=11.3 ms
64 bytes from 205.251.198.186: icmp_seq=9 ttl=230 time=11.3 ms
64 bytes from 205.251.198.186: icmp_seq=10 ttl=230 time=11.3 ms

--- 205.251.198.186 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9013ms
rtt min/avg/max/mdev = 11.254/11.264/11.283/0.009 ms

このことから、Route 53のDNSサーバーは2つのリージョンの中間地点のような1箇所にあるものではなく、2つのリージョンに近い場所にそれぞれDNSサーバーが存在することがわかります。

まとめ

普段何気なく利用しているDNSも、いろいろ試すことができて新たな発見も得られる面白いネットワーク技術です。皆さんに少しでも興味をもってもらえたら嬉しいです。