「Almalinux上でDNSサーバを構築してみた」_前編

ITインフラ

▪️背景と目的

これまでlinuxのコマンドについて解説してみましたが、これまで学んだことを活かして実際に特定のサーバーを構築していこうと思います。
今回は「DNSサーバ」です。DNSサーバは馴染みがないように思えますが、普段PCやスマホでWebページにアクセスする時に不可欠な存在です。

DNSサーバの仕組みや構築方法は、LPICやLinucの試験にも頻出なのでその対策も踏まえています。この前編記事ではまずDNSサーバとはどんなものか、どのような役割を果たすのか、概念的なことを解説して次回の記事(後編)で実際に構築します。

▪️DNSサーバとは?

DNSサーバは、主に「名前解決」の際に利用されます。ざっくりいうと「ホスト名」と「IPアドレス」を紐づけるための表を持っています。それを使用して「名前解決」を行います。

名前解決

名前解決とは、「ホスト名」と「IPアドレス」を相互に変換します。TCP/IPネットワーク上では該当のコンピュータを識別するために「IPアドレス」を使用します。
*IPアドレスとはネットワーク上の住所

しかし、この「IPアドレス」は「10.2.3.4」のように数値表記で人間には分かりづらく、何より扱いづらいです。そこで私たちが認識しやすい名前で該当のコンピュータにアクセスする必要があります。この時に使用されるのが「ホスト名」です。
「ホスト名」は「コンピュータ独自の名前」を表しており、私たちに馴染みのあるURLにも利用されます。

私たちが、「ホスト名」を入力しても該当のコンピュータにアクセスするには、そのコンピュータの「ホスト名」と「IPアドレス」を紐づけなければなりません。
これを「名前解決」と言います。
DNSサーバはこの「ホスト名」と「IPアドレス」の対応表を持っており、実際に紐付けを行なってくれます。

「ホスト名」から「IPアドレス」に変換することを「正引き」、「IPアドレス」から「ホスト名」に変換することを「逆引き」と言います。

FQDN

上記のホスト名「www.lovelab.com」で考えてみます。
例えば、URLで「http://www.lovelab.com」と入力すると、ネットワーク上で名前解決が行われて、IPアドレスが「10.3.8.9」である「www.lovelab.com」にアクセスできます。

広義で捉えると「www.lovelab.com」は「ホスト名」ですが、厳密にいうとこれは「FQDN」と言います。「FQDN」は「ホスト名+ドメイン名」です。

上記で言うと、「www」が「ホスト名」で「lovelab.com」が「ドメイン名」です。「ホスト名」とは「そのコンピュータ独自の名前」を表しており、「ドメイン」は「グループ」名を表します。
www.lovelab.com
→ 「lovelab.com」グループにある「www」というコンピュータ

例えば、ブラウザからyahooのページにアクセスすると、そのURLは「www.yahoo.co.jp」と表記されます。
これは私たちが「yahoo.co.jpにあるwwwにアクセスした」、言い換えると「yahoo.co.jpグループにあるWebページを表示するwwwという名前のサーバにアクセスした」ということです。

ドメイン

私たちは「yahoo.co.jp」や「lovelab.com」などのように独自のドメインを作ることができます。作成されたドメインは複数の「DNSサーバ」によりツリー上で管理されています。ドメインツリーがどのような構造になっているか気になる方はは以下のURLにアクセスしてください。

ドメインツリー→「https://webtan.impress.co.jp/u/2019/09/18/33973
ドメイン名のしくみ – JPNIC」より引用

「jpドメイン」が「co.jpドメイン」の情報を持っており、「co.jpドメイン」が「yahoo.co.jpドメイン」の情報を持っているように「上位のドメインがその直下に位置するドメインの情報を持つ」という構造になっています。

これはパブリック用のドメイン、いわゆる私たちがインターネットを経由してアクセスする際に使用されるドメインですが、プライベート空間用に作成することも可能です。

例えば、会社独自のドメインを作成して、上記のようなツリーをその会社のネットワーク上だけで管理できます。会社内のネットワークに存在するコンピュータからのみ、ツリー上に存在する該当のコンピュータにアクセスできます。
会社外からアクセスすることができないのでセキュリティ向上に役立ちます。

▪️DNSの仕組み

では、DNSではどのような流れで「名前解決」を行うのでしょうか?確認していきましょう。
インターネット経由で「www.lovelab.com」にアクセスする時を考えてみましょう

① Webブラウザで「http://www.lovelab.com」と入力する。入力されるとまず「リゾルバ」に名前解決が依頼される。
*「リゾルバ」は窓口のような存在で名前解決を直接的には行わない

②リゾルバは初めに「DNSサーバ(キャッシュサーバ)」に「www.lovelab.com」のIPアドレスを知っているか、問い合わせを行う。

③「DNSサーバ(キャッシュサーバ)」が該当のIPアドレスを知らない場合、まずルートを管理している「DNSサーバ」に「www.lovelab.com」のIPアドレスを知っているか、問い合わせを行う。

④「DNSサーバ(ルートのDNSサーバ)」は「www.lovelab.com」のIPアドレスを知らないが、comドメインを管理している「DNSサーバ」の情報は持っているのでそのIPアドレスを返す。

⑤「DNSサーバ(comドメインのDNSサーバ)」に「www.lovelab.com」のIPアドレスを知っているか、問い合わせを行う。

⑥「DNSサーバ(comドメインのDNSサーバ)」は「www.lovelab.com」のIPアドレスは知らないが、lovelab.comドメインを管理してる「DNSサーバ」の情報は持っているのでそのIPアドレスを返す。

⑦「DNSサーバ(lovelab.comドメインのDNSサーバ)」に「www.lovelab.com」のIPアドレスを知っているか、問い合わせを行う。

⑧「DNSサーバ(lovelab.comドメインのDNSサーバ)」は「www.lovelab.com」の情報を持っているのでそのIPアドレスを返す。

⑨ 得られた情報をキャッシュに保存して、「www.lovelab.com」のIPアドレスをリゾルバに渡す。
*次回再び「www.lovelab.com」にユーザがアクセスしても情報が保存してあるので問い合わせを行う必要がない
→この役割を担うのが「キャッシュサーバ」

⑩ IPアドレスをWebブラウザに渡す。これにより該当のWebページにアクセスできる。

▪️DNSサーバその他用語

ゾーン

DNSでは「コンテンツサーバ」がそれぞれのドメインの管理情報を持っています。この管理表を「ゾーン」と言います。

マスターDNSサーバ、スレーブDNSサーバ

DNSサーバは通常、「冗長化」されています。
冗長化しておかないと、単一では何かDNSサーバに問題が生じるとユーザは名前解決できなくなり、他のコンピュータにアクセスできなくなります。
*「冗長化」とは、サーバを複数用意すること。これによりどれか1つサーバに問題が起きても代わりのサーバが稼働するためシステム稼働を継続することができる

この時にメインで稼働しているDNSサーバを「マスターDNSサーバ」と言います。

また、通常は待機していて、マスターに問題が起きるとマスターの代わりにメインで稼働するDNSサーバを「スレーブサーバ」と言います。

▪️まとめ

今回はDNSサーバの仕組みについて解説しました。DNSサーバはドメイン管理のサーバであるため企業には必須です。そのためこの辺りの知識は当たり前のようにエンジニアに求められます。

次回は実際にDNSサーバを構築してみます。丁寧に解説する予定なのでぜひ見てください。







コメント

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