nkmtの日記

日常のことをつらつら書きます

DNSコンテンツサーバの構築

Linuxインフラ

2019年2月5日

DNSコンテンツサーバー

DNSコンテンツサーバーは、ドメイン名とサーバのIPアドレスを紐付ける機能をもつサーバーです。
DNSコンテンツサーバー自体は自分自身が管理するドメイン名でしか名前解決ができません。
そのため通常は、ホスト側からはDNSキャッシュサーバーをDNSサーバーとして指定します。

BINDの設定

BINDはDNSコンテンツサーバーとして機能します。(正確にはDNSキャッシュサーバーとしての機能も持ちますが、キャッシュサーバーとしての性能はUNBOUNDの方がパフォーマンスが良いとされます。)

BINDのインストール

ここでは通常通り、yumでインストールを行います。

yum install bind

パケットフィルタリングの許可

ファイヤウォールを有効化している場合、そのままだと外部からアクセスできなくなってしまうので許可します。

 firewall-cmd --permanent --add-services = dns
 firewall-cmd --reload

ゾーンファイルの編集

ゾーンファイルを編集してBINDで管理するサーバーの設定を行います。
通常 /etc/named/xxxx.com.zone というファイル名になり管理するドメイン名をゾーンファイルに設定するかと思います。

$TTL 1D
xxx.com. IN SOA dns.xxx.com. admin.xxx.com. (
2018020503
1D
1H
1W
3H)
xxx.com. IN NS dns.xxx.com.
dns.xxx.com. IN A 192.168.32.100
www.xxx.com. IN A 192.168.32.101
ftp.xxx.com. IN CNAME www.xxx.com.
xxx.com. IN MX 10 mail.xxx.com.
  • TTL : キャッシュの有効期限になります。
  • シリアル番号 : 2018020503と記載されている番号が今回はシリアル番号となります。
    これは通常管理のため「年月日」 + 「更新番号になります。」
    つまりこの場合、20180205に作成され3会更新されたことを表します。
  • IN NS : ネームサーバーを表します。
  • IN A : Aレコードを表しそのドメインがどのIPのサーバーと紐づいているかを表します。
  • IN CNAME : CNAMEは別名を表します。
  • IN MX : MXレコードはメールサーバーを指定します。

named.confの設定

yumでインストールした段階でnamed.confは自動的に作成されます。
ここでは名前解決を受け付けるIPと上記で作成したzoneファイルの読込先を指定します。

options {
        listen-on port 53 {
                           127.0.0.1;
                           192.168.32.70;
                           }
....
        allow-query { any; };
....
        recursion no;
....
zone "xxx.com." IN {
        type master;
        file "/etc/named/xxxx.com.zone"
}

listen-on portでは名前解決を受け付けるホストからのアドレスを指定しています。
今回は、ローカルからの名前解決と外部からの名前解決を受けるけるため、
このDNSサーバー自体のアドレス「192.168.32.70」を指定します。
これがないと外部からこのサーバー自身のアドレス「192.168.32.70」に問い合わせが来ても名前解決の応答を返さなくなります。
allow-query : ここではanyを指定しどこからでも名前解決の問い合わせを受け付けるようにします。
recursion : これは再帰問い合わせを行うかの設定を入れます。DNSコンテンツサーバーでは再帰問い合わせを行わないので、noとします。もしもDNSキャッシュサーバーとしても利用する場合はyesにします。
zone : ここでは先ほど作成したゾーンファイルの読み込み先を指定します。
ちなみにここでtypeでこのDNSコンテンツサーバーをtypeでmasterサーバかslaveサーバか指定することができます。

設定ファイルの確認

設定ファイルの作成が問題なくできましたら最後に設定が正しく行われたかの動作確認を行います。

named-checkconf
named-checkzone xxx.com /etc/named/xxx.com.zone

サービスの起動設定

設定ファイルも問題なければサービスのきどうを行います。
また必要ならサービスの永続化も行います。

systemctl start named.service
systemctlis-active named.service

永続化します。

systemctl enable named.service
systemctl is-enable named.service

名前解決ができているかの確認

最後にnslookupコマンドにて名前解決ができているかの確認を行います。

nslookup www.xxx.com 192.168.32.XX

nslookupではドメイン名の後にDNSのサーバーアドレスを指定します。
これで対象のサーバーアドレスが返って来れば問題ありません。