Bind DNSサーバ

コンテンツとキャッシュサーバー(フルリゾルバー)
クライアントが指定しているのはこの内のキャッシュサーバー(フルリゾルバー)の事です。
フルリゾルバーというのは反復問い合わせに対応しているものです。
ルートサーバーから順に検索して目的のホスト(FQDN)のアドレスを返答してくれます。
このことからインターネットに直接アクセスできることが条件になります。
コンテンツサーバーはドメイン名(FQDN)からIPアドレス(正引き)に変換するゾーン情報を持っているものです。 IPアドレスからドメイン名(FQDN)の情報(逆引き)も持っているものもあります。

正式にドメインを取得し、権限が委任されていればグローバルDNSとして機能します。

コンテンツサーバーには機能としてマスターサーバーとスレーブサーバーがあります。
その名の通りマスターサーバーは親サーバーです。スレーブサーバーはマスターサーバーの複製です。
複製するにはゾーン転送機能を利用して行われます。
マスターは1台ですが、スレーブは何台あってもよいのです。
インターネット側から見たときにはマスター・スレーブの区別はつきません。
分散型データベース構造の利点ですね。

bindでは正引き情報や逆引き情報の管理としてゾーンと言う名前の単位で管理します。

ゾーン情報のなかに管理者情報やシリアルナンバー、有効期間などが定義されます。
これがSOAレコードと言います。
レコードはリソースレコードとよばれ、この他、NS、MX、A、TXT、PTRなどがあります。
インストール例
# yum -y install bind bind-utils bind-libs bind-chroot
bind(DNS)のインストールを参照ください。
Config設定

オープンリゾルバーとならないようにviewを設定します。
プライベート IP アドレスの解決を外部に問い合わせしないようにする方法を追加します。
具体的には「empty-zones-enable yes;」指定して有効にすると、bind が空のゾーンを自動的に作成します。
この他RFC1819等に指定されているネットワークアドレスに対してemptyゾーン宣言して設定する方法もあります。
自動的に作成されるものには以下のようなものがあります。
・ループバックアドレス     (例:127, ::1) [RFC 1122]
・ブロードキャストアドレス (例:255.255.255.255, 0) [RFC 1122]
・プライベートネットワーク (例:10, 172.16, 192.168) [RFC 1918]
・リンクローカルアドレス  (例:169.254) [RFC 3927]
・テストネットワーク    (例:192.0.2, 198.51.100, 203.0.113) [RFC 5737]
・シェアードアドレススペース (例:100.64縲鰀100.127) [RFC 6598]

設定例はこちらを参照ください。
hint zone
hint zoneはルートサーバーの情報です、キャッシュサーバーで動作させる為に最新情報に入れ替えます。
ルートサーバーから順に検索して目的のホスト(FQDN)のアドレスを取得するわけですから、
これが正しくないと名前解決できないなどの不具合が発生する可能性がありますので定期的にチェックしてみてください。

ゾーンファイルのある場所に移動
# cd /var/named/chroot/var/named/
バックアップ
# mv named.root named.root.old

直接ルートサーバから取得する方法
# dig +norec ns . @a.root-servers.net > named.root

公開情報から取得する方法
# wget https://www.internic.net/domain/named.cache
Zoneファイルの設定
管理するドメインのゾーンファイルを作成します。
ホスト名の最後に「.」ピリオドを忘れずに付けます、付け忘れると自動補完されてしまい
「www.hogehoge.com」のはずが「www.hogehoge.com.hogehoge.com」の様になってしまいます。
誤って設定してしまうと元に戻すのに時間がかかってしまう事があります。
相手側のDNSにその情報がキャッシュされキャッシュ期限が切れるまで更新されないからです。
文法チェック
# named-checkconf -t /var/named/chroot/
bind起動
# systemctl start named-chroot
スレーブサーバー
スレーブサーバーとして動作させるにはマスターサーバー側で予めスレーブサーバーのIPアドレスを許可登録する必要があります。
    zone "hogehoge.com" IN {
            type slave;
            masters { 203.xx.xx.xx; };
            file "slaves/hogehoge.com";
            notify no;
    };
従来はこの受け取ったゾーンファイルはテキスト形式でしたが 9.9.1 以降はraw format形式に変更になってました
「masterfile-format text;」を指定すると従来と同等にテキスト形式で保存することが出来るようですが
起動パフォーマンスが低下するようですので、多くのゾーンを管理しているサーバではraw形式の方が良いようです。
このraw format形式からテキスト形式に戻して確認するには以下の様にします。
# named-checkzone -D -f raw [ドメイン名] [ゾーンファイル名]

ルートサーバーのIPアドレス変更履歴

2017年10月24日(協定世界時)B.ROOT-SERVERS.NETのIPv4アドレスが変更されました。
旧IPv4アドレス: 192.228.79.201
新IPv4アドレス: 199.9.14.201

2017年7月26日(協定世界時)L.ROOT-SERVERS.NETのIPv6アドレスが変更されました。
旧IPv6アドレス: 2001:500:3::42
新IPv6アドレス: 2001:500:9f::42

2015年12月1日(協定世界時)H.ROOT-SERVERS.NETのIPv4/IPv6アドレスが変更されました。
旧IPv4アドレス: 128.63.2.53
旧IPv6アドレス: 2001:500:1::803f:235

新IPv4アドレス: 198.97.190.53
新IPv6アドレス: 2001:500:1::53

2013年1月3日(協定世界時)D.ROOT-SERVERS.NETのIPv4アドレスが変更されました。
旧IPv4アドレス: 128.8.10.90
新IPv4アドレス: 199.7.91.13

2007年11月1日(協定世界時)L.ROOT-SERVERS.NETのIPv4アドレスが変更されました。
旧IPv4アドレス: 198.32.64.12
新IPv4アドレス: 199.7.83.42

ルートサーバ

ルートサーバーの一覧・所在地などの情報はhttp://root-servers.org/で確認できます。
エニーキャストによる負荷分散を行っているので13台ということではありません。
例)l.rootは161サイトのサーバーを世界中に分散配置して耐障害性と負荷分散を実現しています。
頭文字IPv4アドレスIPv6アドレス管理者ソフトウェア
A198.41.0.42001:503:BA3E::2:30VeriSignBIND
B199.9.14.2012001:500:84::b南カリフォルニア大学情報科学研究所BIND
C192.33.4.122001:500:2::cCogent CommunicationsBIND
D199.7.91.132001:500:2d::dメリーランド大学カレッジパーク校BIND
E192.203.230.102001:500:a8::eアメリカ航空宇宙局BIND
F192.5.5.2412001:500:2f::fInternet Systems ConsortiumBIND9
G192.112.36.42001:500:12::d0dアメリカ国防情報システム局BIND
H198.97.190.532001:500:1::53アメリカ陸軍研究所NSD
I192.36.148.172001:7fe::53Autonomica(スウェーデン)BIND
J192.58.128.302001:503:C27::2:30VeriSignBIND
K193.0.14.1292001:7fd::1RIPE NCC(オランダ)NSD
L199.7.83.422001:500:3::42ICANNNSD
M202.12.27.332001:dc3::35WIDEプロジェクト(日本)BIND

↑先頭