はじめに

以前のネットワーク入門におすすめの2冊を読んで学んだことのエントリーでも書いたように、苦手意識のあるネットワークの勉強を続けています。特に、実務で登場する機会が多く、苦手意識が強いのがアプリケーション層(L7)で動作するDNSです。

そこで、定評のある『DNSがよくわかる教科書』を読んだので、学んだことや感想をまとめたいと思います。

書籍名DNSがよくわかる教科書
著者名渡邉結衣、佐藤新太、藤原和典
出版年2018年11月22日
ISBN978-4-7973-9448-1
書籍ページhttps://www.sbcr.jp/product/4797394481/

これまでのDNSとの関わり

過去の業務でDNS関連では以下のような経験がありました:

  • API Gatewayに独自ドメインを設定
  • IoT Gatewayに独自ドメインを設定
  • CloudFront + S3に独自ドメインを設定

しかし、これらはいずれもドキュメントを読んだり、マネジメントコンソール上の指示に従うだけで、内部の仕組みをきちんと理解していませんでした。

読んでみた感想

非常に丁寧に解説されており、大変勉強になりました。 この本の良いところは、単に名前解決ができればいい初心者から、権威サーバーやフルリゾルバーを運用するような上級者まで、幅広いニーズをカバーしている点です。

DNSの登場人物の整理ができた

  • hostsファイル
    • 以前の名前解決の主要メカニズム
    • 現在でも使われている
  • スタブリゾルバー
    • PCやスマホに組み込まれているソフトウェア
    • アプリケーションからの要求を受けて動作
    • フルリゾルバー(間に介在するならフォワーダー)に対して**名前解決要求(再起問い合わせ)**を行う
  • フォワーダー
    • フルリゾルバーに名前解決要求を転送
    • 名前解決の結果をキャッシュする
    • 自宅のルーターやサーバーなどに搭載されていることが多い
  • フルリゾルバー
    • 名前解決のための反復問い合わせを実行
      • ルートサーバーから順に権威サーバーに対して問い合わせる
      • CNAMEレコードを受け取った場合は、再度ルートサーバーから反復問い合わせをする
    • 名前解決結果のキャッシュを管理
  • 権威サーバー
    • ゾーン情報を管理
    • 問い合わせに対して応答

トラブルシューティング方法が理解できた

  • 有用なコマンドラインツール

    • dig
    • drill
    • kdig
    • nslookup
    • など
    • Windowsの一部環境ではnslookupが使われていますが、digの方が機能が豊富で推奨されています
  • 実践的なトラブルシューティング

    • 自分がフルリゾルバーになったつもりで、反復問い合わせのみを使って名前解決を体験できました
      • Aレコードが直接返ってくる場合
      • CNAMEが設定されている場合
        • これについては複雑なので、別記事で詳しく解説する予定です

その他学んだこと

  • DNSにまつわる攻撃手法

    • DNSリフレクター攻撃
    • ランダムサブドメイン攻撃
    • キャッシュポイズニング
  • よくあるトラブルとその解決方法

    • lame delegation(不適切な委任)
    • TTL設定の問題と影響

この他にも数多くの項目について詳しく解説されていました。

記載されていなかった最新技術

本書は2018年出版のため、HTTP/3関連のHTTPSレコード(HTTPS RR)についての記載はありませんでした。これは仕方のない部分だと思います。最新のDNS技術については、別途情報を補完する必要があるでしょう。

まとめ

この本を読むことで、特に以下の点が明確になり、DNSへの苦手意識が大幅に軽減されました:

  • DNSに関わる各コンポーネントの役割が整理できた
  • 各コンポーネントがキャッシュを持っている仕組みが理解できた
  • 実際のトラブルシューティング方法が具体的に学べた

今後はDNS関連のタスクにも自信を持って取り組んでいきたいと思います。 次回は、CNAMEを含む名前解決の流れについて、具体例を交えて詳しく解説する予定です。