こんにちは、やすです。
この記事では、DNS(BIND)に関連したファイルと主な設定項目について紹介します。
DNSサーバ(Domain Name Systems)とは、ホストの名前解決(IPアドレスとホスト名の紐づけ)をする役割のサーバのことです。
それぞれのサーバの「/etc/hosts」に、自分が関係するサーバ全てのIPとホスト名を記載してhostsを切っても良いのですが、これ結構大変ですよね。
DNSサーバを作っておき、みんなそこを参照するという方が楽です。
Linuxで標準的に使用されるDNSの機能は「BIND(バインド)」で、そのデーモン名は named 、動作設定ファイルは /etc/named.conf です。
DNSサーバ側の設定ファイル
/etc/named.conf
「/etc/named.conf」は、BINDのメイン設定ファイルです。
- ファイル内は「options」「logging」「zone」「include」「controls」の区画(ステートメントと言う)に分けられる。
- 文末は「;(セミコロン)」が必要。
初期設定
インストール直後だと下記でした。
[root@localhost ~]# cat /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html
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.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { localhost; };
/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
- If you are building a RECURSIVE (caching) DNS server, you need to enable
recursion.
- If your recursive DNS server has a public IP address, you MUST enable access
control to limit queries to your legitimate users. Failing to do so will
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 */
bindkeys-file "/etc/named.root.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
[root@localhost ~]#
options
各動作を設定するセクションです。
optionsステートメント内で使える主な設定項目は下記です。
設定項目 | 内容 |
---|---|
allow-query | DNS問い合わせを受け付けるホストを記載。 |
allow-transfer | DNSマスターサーバにて、ゾーン情報を転送するDNSスレーブサーバを指定。 |
blackhole | 問い合わせを受け付けないホストを記載する項目。 |
controls
BINDのデーモンである「named」を操作する「rndcコマンド」の使用を許可するホストを設定するセクションです。
DNSサーバにログインせずに、DNSの操作をさせたいホストがある場合は設定します。デフォルトだと項目がないですね。
zone
ゾーンは「管理するドメインの範囲(これをゾーンと言う)を設定する」セクションです。
#デフォルトだと下記のようになってた
zone "." IN {
type hint;
file "named.ca";
};
上記だと、「ヒントファイル(named.ca)」には、DNSサーバの情報を書き込んでおきます。
include
外部ファイルを読み込むステートメントです。
その位置に読み込んだ情報が反映されます。たとえばzone情報を別ファイルにして読み込むような形で使います。
#デフォルトだと下記だった
[root@localhost etc]# cat /etc/named.conf | grep include
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
[root@localhost etc]#
/etc/named.rfc1912.zones
ゾーン情報の中身です。
書式
ドメイン名(または名前) IN リソースタイプ 設定値
リソースタイプ | 説明 |
---|---|
SOA | |
MX(Mail Exchange) | メールサーバを指定 |
NS(Name Server) | Zone情報を持つサーバを指定 |
A(Address) | |
CNAME |
DNSクライアント側の設定ファイル
/etc/nsswitch
「/etc/nsswitch.conf」ファイルは、名前解決を行う優先順位を指定するファイルです。
デフォルトの設定値
hosts: files dns myhostname
DNSを使うための項目は「hosts」で、上記の記載だと「files(/etc/hosts)」で名前解決できなかったら「dns」で名前解決を行うという記載になります。
/etc/resolv.conf
「/etc/resolv.conf」ファイルは、DNSサーバを指定するファイルです。
書式
nameserver <DNSサーバのIPアドレス>
「nameserver」という設定項目に、利用するDNSサーバのIPアドレスもしくはホスト名を記載します。
まとめ
この記事では、BIND(DNS)関連の設定ファイルを紹介しました。
ではまた、バイバーイ♪