【入門】CentOS7 BINDを使ったDNSサーバー構築
- 2019.11.02
- 2023.03.03
- サーバー

みなさんこんにちは さくちゃん です。
本日はBINDを使ってDNSサーバーを構築していきます。
では早速やっていきましょう。
【復習】DNSサーバーの仕組み
DNSサーバを構築するにあたり、DNSサーバーの仕組みの理解は必須になります。
また、DNSサーバーの流れがイメージ出来ていないと、後々修正が出来なくなってしまいます。
まだDNSサーバーの仕組みを理解出来ていないという方は、まずここから学びましょう!
BINDのインストール
ではやっていきましょう。
まずはBINDのインストールです。
下のコマンドでBINDをインストールします。
yum -y install bind // インストールコマンド
設定ファイルの編集
インストールが出来たら、次はBINDの設定ファイルを編集していきます。
BINDの設定を変更する場合は「named.conf」を編集していきます。
vi /etc/named.conf # 設定ファイルを開く
※基本設定ファイルは「etc」に保存されます。
※viコマンドの使い方はこちらを参照
設定ファイル(named.conf)を開くとデフォルトはこのようになっています。
options {
listen on port 53 { 127.0.0.1; };
listen on v6 port 53 {::1;};
directory “/var/named”;
dump file “/var/named/data/cache_dump.db”;
statistics file “/var/named/data/named_stats.txt”;
memstatistics file “/var/named/data/named_mem_stats.txt”;
recursing file “/var/named/data/named.
secroots file “/var/named/data/named.secroots”;
allow query {localhost; };
recursion.
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface
recursion yes;
dnssec enable yes;
dnssec validation yes;
/* Path to ISC DLV key
bind keys file “/etc/named.iscdlv.key”;
managed keys directory “/var/named/dynamic”;
pid file “/run/named/named.pid”;
sessionsession–keyfile “/run/named/session.key”;keyfile “/run/named/session.key”;
};
logging {
channel default_debug {
file “data/na med.run”;
severity dynamic;
};
};
zone ” . ” IN {
type hint;
file “name.ca”;
};
include “/etc/named.rfc1912.zones”;
include “/etc/named.root.key”;
では実際に編集していきましょう!
編集する箇所は、下のようになります。
options {
listen on port 53 { 127.0.0.1; }; # サーバーのIPアドレスを指定。ポート53はDNSが使用するポート番号
listen on v6 port 53 { ::1; }; # 上と同様で、IPv6を使用する場合に使用
directory "/var/named";
dump file "/var/named/data/cache_dump.db";
statistics file "/var/named/data/named_stats.txt";
memstatistics file "/var/named/data/named_mem_stats.txt";
recursing file "/var/named/data/named.
secroots file "/var/named/data/named.secroots";
allow query { XXX.XXX.XXX.XXX; }; # 問い合わせを許可するIPアドレス。
allow query { any; }; # 全てのIPアドレスから許可する場合は「any」を指定
recursion.
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface<br>
recursion yes; # *1再帰的な問い合わせを許可する。許可しない場合はno
forwarders{ 8.8.8.8; }; # *2 自身で名前解決できない場合に問い合わせを転送するDNSサーバーのIPアドレス
dnssec enable yes;
dnssec validation yes;
/* Path to ISC DLV key
bind keys file "/etc/named.iscdlv.key";
managed keys directory "/var/named/dynamic";
pid file "/run/named/named.pid";
sessionsession--keyfile "/run/named/session.key";keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/na med.run";
severity dynamic;
};
};
# ↓デフォルトで設定されている、rootDNSサーバー
zone " . " IN {
type hint;
file "name.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
※1 キャッシュサーバーとして利用する場合は、「yes」と指定
※2 「8.8.8.8」はgoogleが提供しているパブリックDNS。
BINDの起動
設定ファイルの編集が終えたら、BINDを起動させます。
起動させるには、下のコマンドを使います。
systemctl start named # BINDの起動
その他のコマンド
ステータスの確認
BINDが稼働(active)、停止(stop)しているか確認するコマンドです。
systemctl status named # ステータスの確認
再起動
BINDを起動した後に、BINDの設定ファイル(named.conf)を編集した場合は、設定を反映させるために、必ずBINDの再起動を行います。
systemctl restart named # BINDの再起動
BINDの自動起動設定
サーバーを停止、再起動した後に、BINDが自動で起動するようにするコマンドです。
systemctl enable named # BINDの自動起動
注意点
BINDの起動、再起動時に多いのですが、起動、再起動をした後に下のようなエラーができることが多いです。
systemctl restart named
# error
Job for named.service failed because the control process exited with error code. See "systemctl status named.service" and "journalctl -xe" for details.
これは、先ほど設定したBINDの設定ファイル(named.conf)の構文にミスがある時に起こるものです。
この場合は、エラーを修正する必要があります。修正しないとうまく起動しません。
まずはエラーの原因を探します。
エラーの原因は、下のコマンドのどちらかを実行するとエラーがわかります。
どちらでもいいのですが、個人的には「journalctl -xe」をよく使います。
journalctl -xe
systemctl status named
上のコマンドを実行すると、エラー内容が返ってきます。
エラーの原因はいくつかあるのですが、今回は一例として、下のエラー内容を紹介します。
11月 01 14:31:52 xxx.xxx.xxx.xxx bash[23841]: /etc/named.conf:78: '}'
expected near end of file
このエラー内容は、「named.confの78行目に構文ミスがあります」という意味を指します。
エラー内容は英語で表示されるため、少し面倒ですが、必ずヒントがあるのでめげずに読み解きましょう!
「Google翻訳」などを使い、翻訳するのも一つの手です。
もっと詳しく知りたい方は、以下の記事も合わせて読んでみるといいですよ。
-
前の記事
viコマンド(エディタ)の使い方 2019.11.01
-
次の記事
【初心者必見】ゾーンファイルの作成方法 2019.11.03