DNSサーバに関する世界観です。
10日でおぼえるFedora Core 6サーバ構築・管理入門教室を参考に執筆しました。
ネットワークにおいて、IPアドレスのような0と1での番号は、機械にとっては認識しやすいが、人間にとっては認識しづらい。
IPアドレスをそのまま人間が使うこともできるが、人間に分かりやすい「名前」を付けた上で、名前とIPアドレスの対応表を作り、名前からIPアドレスを知ることができるようにする仕組みを「名前解決」とか「ネームサービス」と呼ぶ。
そして、そのような名前解決は、DNSサーバと呼ばれるサーバ機構に問い合わせることで可能となる。
DNS以外にも、かつてUNIXで行われていた/etc/hostsを使ったり、NISやLDAPを用いて名前解決を行う場合もある。このような名前解決を行う機構を総合して「リゾルバ」と呼ぶ。
名前解決において、コンピュータの名前のことをホスト名と呼ぶ。ホスト名にはhogehoge.comのようなドメインが付属される。ドメインはネットワークの所属する組織のことを示す名前のこと。最後の.comのことをトップレベルドメイン(TLD)と呼ぶ。
2023.05.28
リゾルバとは、名前解決を行う機構。
UNIXでは、インターネットの初期の時代から伝統的に/etc/hostsでIPアドレスとホスト名を羅列して使っていた。今でもローカルネットワークの中でホスト名をつける際にこの/etc/hostsを使う。
現代のインターネット世界では、DNSサーバに問い合わせることで名前解決を行うことができる。
また、NISにも同様のホスト名とIPアドレスを関連付け、名前解決を行う機構がある。
これらすべてを統合した名前解決の仕組みをリゾルバと呼ぶ。Linuxのリゾルバはlibcにある。設定は/etc/nsswitch.confに記述する。
(以上はふつうのLinuxプログラミング Linuxの仕組みから学べるgccプログラミングの王道を参考に執筆しました。)
コマンド | 説明 |
---|---|
dig | DNSサーバーからドメイン名とIPアドレスの情報を得る。 |
host | ホスト情報を得る。 |
nslookup | 対話的にDNSサーバーから情報を得る。 |
whois | ネットワークの企業名などの情報を得る。 |
(ネットワーク関係 - Linuxコマンド百科辞典を参考に執筆しました。)
(10日でおぼえるFedora Core 6サーバ構築・管理入門教室を参考に執筆しました。)
ホスト名とIPアドレスの一覧や対応表を記述するのは/etc/hostsファイル。たとえば、
127.0.0.1 hogepc 127.0.0.1 localhost localhost.localdomain
などとする。
IPv6の場合は、
::1 hogepc localhost.localdomain localhost
とする。::1は、IPv6におけるIPアドレスで、IPv4での127.0.0.1に相当し、自分自身と通信するために使われる(ループバックアドレス)。
ping(IPv4)あるいはping6(IPv6)で接続可能かを試してみよう。
DNSなどの名前解決をするソフトウェアのことを「リゾルバ」と呼ぶ。
リゾルバが使用するDNSネームサーバの設定は、/etc/resolv.confに設定する。
たとえば、
nameserver 192.168.1.1 nameserver 192.168.1.2 domain localdomain
のように設定する。
nameserverは複数書くことができるが、優先度は上に書かれたものが上で、1番目のDNSサーバで解決できなかった時は2番目のDNSサーバに問い合わせが行われる。
また、domainを指定すると、ホスト名だけを指定して名前解決をした時に、ドメイン名を自動的に付加してくれる。
2024.06.12編集
/etc/host.confには、リゾルバの詳細な設定を記述する。ホスト名を検索する順序を記述することが多い。
order hosts,bind
とすると、名前解決をする際に/etc/hostsの後にDNSサーバ(bind)に問い合わせを行う。bindとhostsのほかにnisを設定できる。
multi on
とすると、/etc/hostsに複数のIPアドレスが同じ名前で登録されていた時に、名前から複数のIPアドレスを返してくれる。
reorder on
とすると、IPアドレスが複数あった時に、同じサブネットマスクの中にあるアドレスを優先的に返してくれる。
trim .hoge.com
とすると、IPアドレスに対応するホスト名から「.hoge.com」の部分を自動的に削除する。
(いますぐ実践! Linuxシステム管理 / Vol.113を参考に執筆しました。)
2024.06.12編集
/etc/nsswitch.confには、名前解決を行うための優先順位を設定する。
たとえば、
hosts: files dns
とすると、まずローカルのファイルを名前解決し、次にDNSサーバに名前解決を行う。
設定できるのはfiles (ローカルのファイル), dns (DNSサーバ), ldap (LDAP), nis (NIS), sss (System Security Services Daemon), winbind (Samba/Windowsネットワーク/Active Directory)など。
2024.06.12編集
DNSサーバー。ドメイン名とIPアドレスのリストから相互変換を行う。
多機能で、コンテンツサーバとしてもキャッシュサーバとしても動作する。
BINDは、世界でもっとも利用されているDNSサーバ。
BINDの使用目的として、「キャッシュサーバに使う」「自分のドメインを立ち上げる」という主な二つの利用法がある。
しかしながら、この設定をするのはいろいろと複雑。以下の書籍を参考にしてほしい。
UnboundはBINDと同様のDNSサーバだが、機能を少なくして中身の設計をシンプルにしている。コンテンツサーバとしては動作しない。
djbdnsはDaniel Bernstein(qmailで有名なdjb)によるDNSサーバ。セキュリティ重視でシンプル。
Pi-holeはフィルタリング機能を持ったDNSサーバで、広告カットのようなことができる。
Raspberry Piも参照のこと。
2023.05.27
Linuxカーネル(ソケット)やLinuxネットワークも参照のこと。
NISも参照のこと。
ネットワーク入門も参照のこと。
以下の書籍が参考になります。