DNSの理解
2019-11-25 01:17
はじめに
今やインターネットの世界では当たり前の存在となっているDNS。あなたはどこまで知っていますか?
私は、DNSについて何となくの理解しかなかったので、改めてDNSについて勉強してみました。
DNSを勉強する前と、勉強した後の自分を比較した結果を考察してみます。
DNSの理解
DNSを勉強する前の、DNSに対する自分の理解
初めてDNSに触れたのは、Windows XP時代(中学生の頃だろうか)に、ケーブルインターネットがやってきて、プロバイダに指定されたDNSをWindowsに設定したとき。 プロバイダが何か手助けしてくれるんだろう、といった理解に留まる。
その後、時は流れ大学時代。
GoogleのPublic DNS、Google Public DNSがどうやら良い、という噂を聞き、
素早くページを表示してくれるのに寄与する、と把握。
実際、体感でも速かったような・・・気がする。
そして、大学を卒業して就職した一社目。(地方SIer) 入社一年目で基本情報技術者試験や応用情報技術者試験を受けさせられ、その過程で簡単にネットワーク系も勉強し、ドメイン名に対応するIPアドレスを教えてくれる仕組みだということを理解したに留まる・・・。
DNSを深く知らないことへの焦り
そして2019年、そこからDNSに対する知識は増えていなかった・・・が、
AWSを基盤に自分のブログを立ち上げてみよう!と思ったときに、ドメインを取得してドメイン名使ったサービスを運営するってことはDNSの知識無いと何も進まないことにハッと気がついた・・・(遅い)
そういうことで、Webサービスを運営するためには、まずDNSの勉強から始めよ、って思ったわけです。
ブログを早く立ち上げたいのに何もできない虚しさ。一気にDNSの勉強に進みます。
私はこれでDNSを完全理解した
ちょうど勉強したいと思った頃、DNSがよくわかる教科書とたまたま出会いました。 いや、偶然ということでもなく、興味が出てきたから自然と手にとったのだろうが。。。
ひとえにDNSと言っても、DNSはフルリゾルバや権威DNSサーバに分けられるという基本から始まって、 AレコードやAAAAレコード、NSレコード、SOAレコード、CNAMEレコードなど各種レコードの理解を行い、 digコマンドを使ったフルリゾルバへの問い合わせや、直接権威DNSサーバに問い合わせる方法などの概念も理解できました。
さらには、DNS運用時のサーバ切り替えの際のTTLの設定変更のススメも書いてあったりと、基本から応用までいろいろ学ぶことができました。
2019年で一番読んでいて楽しかった本かもしれません。
その後、ちょうど技術書典が開催されていて、行った際に出会った本がこれ、DNSをはじめよう。
具体的なケーススタディを用いて、digコマンドをより詳しく知れたり、実際にドメインの購入の部分も含まれていて、サラサラっと楽しく読めました。
何ができるようになった?
DNSを完全理解した、といっても自分でDNSサーバを動作させるほどの知識はありませんが、以下については自信をもって断言できるようになりました。
- ルートサーバから末端の権威DNSサーバまで、委任という仕組みを用いることでDNSからのIPアドレスの解決の方法が提供されているということ。
- hostsファイルは初期のインターネットの名前解決の名残であるということ。
- フルリゾルバは、キャッシュしていない情報を各権威DNSサーバに問い合わせを行って、頑張ってくれているということ(マジ感謝)。
- ZoneApexにはCNAMEの設置はできないということ。(だが、AWSのRoute53ではAレコードのエイリアスという実装でそれを実現する手法があるということ)
- AWSで自分でHostZoneを作って権威DNSを動作させることができるようになったということ(AWSへの第一歩)。
- レジストリへの個人情報の提供無しにドメインの取得を行う方法があることを理解できたということ。
- リソースをドメイン名に紐づける仕組みがわかることで、インターネットが怖くなくなったこと。
おわりに
ドメインよくわかんないなー、とか、AWSのRoute53使って名前解決をやってみたいなー、とか思っているならば、 最初に上記二冊の本を読んでDNSへの理解を深めるのが一番手っ取り早いし、オススメです。
そこまで行ってなくても、Webサービス立ち上げたい・・・とか、自分でブログ作りたい・・・とか、思ったときに、すぐインフラ環境を構築できるようになっていることが、 アイデアをアウトプットしていくための大事な要素の一つであると思うので、そういう想いを持っている人にもぜひおすすめしたいですね。
これで締めましょう、DNSの理解が、アウトプットを加速させる。
読んでいただき、ありがとうございました。