【DNS編】インターネットのお勉強

今あるプロジェクトを作っていて、そのプロジェクトにインターネットについての勉強が必要だったので勉強しています。

今回はDNS編です。

DNSとは

DNSとはDomain Name System(ドメインネームシステム)の略です。

IPアドレスとドメイン名を結びつけるために使われます。

例えば、GoogleのIPアドレス(IPv4)は172.217.161.227ですが、意味のない羅列で覚えられません。
そこでドメインと呼ばれるものを使用してgoogle.co.jpにしているわけです。
実際にアクセスするときにIPアドレスが必要なので、ドメイン名とIPアドレスを結びつけるものが必要です。
それがDNSと呼ばれるものです。また、IPを覚えられないといった話のほかにも、ドメインがあるおかげで複数のサイトを一つのIPで運用できるようになります。

そんなわけで、DNSは今のインターネットの必須システムなわけです。

DNSの仕組み

DNSは複数の階層で成り立っています。
一番上に「DNSルートサーバー」があります。これはTLD(Top Level Domain)のDNSサーバーのIPアドレスを返します。このサーバーは世界にたった13個しかないです。example.jpなら.jpのDNSサーバーを返す、といった感じです。

次にTLDのDNSサーバーがあります。これはexapmle.jpのDNSサーバーやco.jpのDNSサーバー(google.co.jpなどのco.jp)のIPアドレスを返します。jpなどの場合、一つのTLDに複数のDNSサーバーが存在しています。co.jpなどの場合はもう一つDNSサーバーがあります。

最後にドメインのDNSサーバーがあり、IPアドレスなどの情報があります。

二つのDNSサーバー

何度もDNSサーバーと書いてきましたがDNSサーバーには大きく分けて二つのDNSサーバーが存在します。

権威DNSサーバーとDNSキャッシュサーバー(フルサービスリゾルバー)の二つです

。権威DNSサーバーは特定のゾーンの情報を保持し、ほかのサーバーに問い合わせることなく自分で応答を返すことができるサーバーです。
先ほどから書いてきた「DNSサーバー」とはこの権威DNSサーバーのことです。また、別途記述がない限り「DNSサーバー」と書いてあれば「権威DNSサーバー」と解釈してください。

DNSキャッシュサーバー(フルサービスリゾルバー)はPCなどのクライアント(スタブリゾルバー)から名前解決の要求を受けて次項の方法で問い合わせを行い、その結果をクライアント(スタブリゾルバー)に応答として返すサーバーです。また、その時得られた情報をキャッシュし、同じ内容の要求が来ればキャッシュから応答として返します。これによって権威DNSサーバーの負担を軽減します。
権威DNSサーバーにもキャッシュを使用しているサーバーがあるため必ずしもDNSキャッシュサーバー=フルサービスリゾルバーとならないので注意が必要です。

実際のDNSの問い合わせの流れ

問い合わせをするにはDNSサーバーに問い合わせを行うためのサーバー(DNSキャッシュサーバー)が必要です。このサーバーにDNSルートサーバーのIPアドレスの表を用意します。通常、PCが自動で使用できるDNSサーバーを取得してくれるので、準備は必要ないです。

ここでは”google.co.jp”のIPアドレスを取得すると仮定して話を進めます。このサーバーはPCなどから問い合わせの依頼を受けると、まずDNSルートサーバーに”google.co.jp”のAレコード(IPアドレスの入ったレコード)を問い合わせます。すると「このIPアドレスのサーバー (.jpのDNSサーバー)に問い合わせてね」と返されます。

結果を受け取ると.jpのDNSサーバーに、先ほどと同様に.jpのDNSサーバーに “google.co.jp”のAレコード(IPアドレスのレコード)を問い合わせます。 すると今度は「このIPアドレスのサーバー(co.jpのDNSサーバー)に問い合わせてね」と返されます。

co.jpのDNSサーバーに同様の問い合わせをすると「このIPアドレス(google.co.jpのDNSサーバー、この場合 ns1.google.com)に問い合わせてね」と返されます。

google.co.jpを管理するDNSサーバーに同様の問い合わせをすると「google.co.jpのIPアドレスは 172.217.9.195だよ!」と返されます。

これで取得できたのでユーザー(PC)に結果を返します。

これが一連の流れです。

この時なぜco.jpのDNSサーバーがgoogle.co.jpのDNSサーバーを知っているかというと、まずドメインの設定にName Serverというものがあります。そこにDNSサーバーを入れるとDNSサーバーとして使える(管理できる)というものです。それはこの場合co.jpのDNSサーバーで管理されるものなので、co.jpのDNSサーバーが持っているということです。逆に言えば管理されているから(DNSサーバーを知っているから)DNSサーバーとして使える(管理できる)わけです。

なぜDNSサーバーのIPアドレスがわかるのか

DNSサーバーに問い合わせるときにも、勿論DNSサーバーのIPアドレスが必要ですが、DNSサーバーのIPアドレスを知るためにDNSサーバーに問い合わせ….とすると無限ループになってしまいます。

そこで使われるのが「グルーレコード」というものです。

グルーレコードにはDNSサーバーのホスト名(FQDN)とIPアドレスが保管されており、そこからIPアドレスを取得してDNSサーバーに問い合わせを行っています。

参考サイト

インターネット10分講座:DNS
【図解】DNSサーバーとは?設定・変更と確認方法

コメント

  1. Thanks on your marvelous posting! I truly enjoyed reading it, you’re a
    great author. I will make certain to bookmark your blog and
    definitely will come back someday. I want to encourage you to continue your great job, have a nice holiday
    weekend!

タイトルとURLをコピーしました