【基礎】DNSの仕組みを知る(おまけ) | 若手エンジニアのブログ

若手エンジニアのブログ

文系出身の若手女子エンジニアによる技術ブログ。
日々の経験や学びをアウトプットするためにブログを書いています。
バックエンド(Java+SpringFramework)を経てインフラエンジニアになりました。
今は育休中につき、本で勉強したことを中心にアウトプットしています。

昨日・一昨日と、DNS関連の記事(基礎)を書いている中で、

うまいこと記事に含められなかったDNS関連技術がいくつかありました。(色々技術があってすごい…)

ので、記事にしてみます。

 

DNSの基本的な仕組みや、DNSコンテンツサーバとDNSキャッシュサーバの違い、

DNSレコードの基本的な記述方法を知っている前提とします。

不明点がある場合は以下を先にご覧ください。

 

【基礎】DNSの仕組みを知る①

 …DNSとは?DNSサーバの階層構造とは?DNコンテンツサーバとDNSキャッシュサーバとは?などを解説

【基礎】DNSの仕組みを知る②

 …DNSレコード設定方法、名前解決のためのクライアント側の設定方法などを解説

 

もくじ

1.DNSラウンドロビン (概要ゾーンファイルの登録イメージ注意点

2.DNS関連のLinuxコマンドたち (nslookupdigwhois

3.おわりに

 

■DNSラウンドロビン

◎概要

1つのドメイン名に複数のIPアドレスを割り当てておき、
問い合わせ毎に、順番にIPアドレスを返していく技術。
IPアドレスとドメイン名の対応表であるゾーンファイルに、同一ドメイン名で複数のIPアドレスを記述しておくだけで、簡潔かつコストのかからない負荷分散が可能となっている。

 

◎ゾーンファイルの登録イメージ

 example.com IN A 100.200.50.100

  example.com IN A 100.200.50.101

  example.com IN A 100.200.50.102

 

◎注意点

順番にIPアドレスを返すだけなので、必ずしも効率的な負荷分散とはならない。

 

DNSキャッシュサーバは、一定期間、IP⇔ドメイン名の対応関係をキャッシュしているため、

場合によっては特定のIPのサーバに負荷が集中することにつながる。

また、特定のIPのサーバがダウンしていたとしても、DNSコンテンツサーバは認識できない。

そのため、名前解決で返却されたIPアドレスのサーバにアクセスしたら、エラーページが返される、といったこともありうる。

 

効率的な負荷分散を行うには、他の適切なソフトウェア等で補う必要がある。

 

 

■DNS関連のLinuxコマンドたち

※詳しいオプションなどは別途ググってください。とりあえずこういうコマンドがあるんだなあーという理解くらいで。。

◎nslookupコマンド

DNSの名前解決結果を応答するコマンド。

正引き(ホスト・ドメイン名からIPアドレスを割り出す)、逆引き(IPアドレスからホスト・ドメイン名を割り出す)はもちろん、DNSレコードでの絞り込み検索等、便利オプションも多々あるらしい。

 

基本の形:
nslookup ホスト・ドメイン名またはIPアドレス

例:
nslookup example.com

 →正引きの結果を返す

nslookup 100.200.50.100
 →逆引きの結果を返す

 

◎digコマンド

DNSの名前解決結果を応答するコマンド。

nslookupコマンドは、DNSサーバからの応答を(見やすく)加工したものを返却するのに対し、
digコマンドは、DNSサーバの応答をそのままの値で返してくれる。
状況に応じて使い分けると良さげ。

 

基本の形はnslookupに同じ。

 

◎whoisコマンド

Whoisとは、ドメインの登録者情報のこと。

whoisコマンドでは、「このドメイン(の登録者)って誰??」を確認したい時に使う。

 

基本の形:

whois ドメイン名

(英語そのまま、コイツ誰?ってかんじで覚えればよいとおもう・・・)

 

返される値は、ドメインの登録者情報はもちろん、DNSサーバの詳細や登録した年月日等、

そのドメインに関する詳しい情報となる。

 

■おわりに

3回にわたってDNS関連の記事を書いてきましたが、本当に基本の基本しか知らなかったなあと実感…。
職場でもよく出てくるDNSについて、理解を深められて良かった(^^)
 

このDNSの理解をもとに、独自のDNS技術をもつKubernetesの機能についても勉強していくぞー