ヘルプ:DNSサーバー構築(BIND)(CentOS7)
メインページ > ヘルプ:目次 > ヘルプ:自宅サーバー構築(CentOS7) > DNSサーバー構築(BIND)(CentOS7)
- 自宅サーバー4号機にインストールし記事修正(2019年7月26日)
- ローカルIPアドレス:192.168.1.2
BINDインストール
bind、bind-chrootインストール
[root@host2 ~]# yum -y install bind bind-chroot
BIND設定
BIND設定
[root@host2 ~]# vi /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; }; ← コメントアウト(サーバーの全インターフェースの53番ポートをリスンする)
// listen-on-v6 port 53 { ::1; }; ← コメントアウト(IPv6を使わない場合)
version "unknown"; ← bindのバージョン情報の非表示化
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; localnets; }; ← コメントアウト
allow-transfer { none; }; ← 追加(ゾーン情報の転送を禁止)
・
・
recursion yes; ← 再帰問合せ機能を有効化(内部DNSサーバーとして動作)
allow-query { localhost; localnets; }; ← 内部からのみ問合せを許可
allow-recursion { localhost; localnets; }; ← 内部からのみ再帰問合せを許可
allow-query-cache { localhost; localnets; }; ← 内部からのみキャッシュ問合せを許可
forwarders{ 8.8.8.8; 8.8.4.4; }; ← 本DNSサーバー管理外の問合せ先としてGoogleの公開DNSサーバーを指定
・
・
dnssec-enable yes;
dnssec-validation yes;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.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;
};
category lame-servers { null; }; ← 追加(error (connection refused) resolvingというエラーログの出力抑止)
};
// 内部向け設定開始
view "internal" {
match-clients { localnets; };
match-destinations { localnets; };
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
include "/etc/named/named.localnets.zones";
};
// 内部向け設定終了
// 外部向けの設定開始※固定IPアドレス環境の場合のみ
view "external" {
match-clients { any; };
match-destinations { any; };
recursion no;
include "/etc/named/named.sudachi.jp.zone.wan";
};
// 外部向け設定終了
ゾーン定義ファイル作成
内部向けゾーン定義ファイル作成
[root@host2 ~]# vi /etc/named/named.localnets.zones
zone "1.168.192.in-addr.arpa" {
type master;
file "1.168.192.in-addr.arpa.db";
};
zone "sudachi.jp" {
type master;
file "sudachi.jp.db";
};
// 内部向けバーチャルホスト設定開始
zone "awajp.com" {
type master;
file "awajp.com.db";
};
zone "awanet.jp" {
type master;
file "awanet.jp.db";
};
zone "sudachinet.com" {
type master;
file "sudachinet.com.db";
};
zone "sudachinet.jp" {
type master;
file "sudachinet.jp.db";
};
zone "eeljp.net" {
type master;
file "eeljp.net.db";
};
// 内部向けバーチャルホスト設定終了
sudachi.jpの外部向けゾーン定義ファイル作成※固定IPアドレス環境の場合のみ
[root@host3 ~]# vi /etc/named/named.sudachi.jp.zone.wan
zone "sudachi.jp" {
type master;
file "sudachi.jp.db.wan";
allow-query { any; };
allow-transfer {
XXX.XXX.XXX.XX; ← このゾーン情報の転送先として(セカンダリネームサーバーのIPアドレス)を追加
};
notify yes; ← このゾーン情報変更時は即座に上記セカンダリへ反映させる
};
IPv4のみ有効にする
IPv4のみ有効にする(error (network unreachable) resolvingというエラーログの出力抑止)
[root@host2 ~]# echo OPTIONS="-4" >> /etc/sysconfig/named
ルートゾーン最新化
ルートゾーンは世界に13台しかないトップレベルドメインを管理するDNSサーバーのIPアドレスを管理しているファイルで、めったに更新されることはないが、念のため最新化しておく。
[root@host2 ~]# dig . ns @198.41.0.4 +bufsize=1024 > /var/named/chroot/var/named/named.ca
ルートゾーン自動更新
1ヶ月に一度、ルートゾーンが最新かチェックし、更新されていればルートゾーンの最新化及び、BINDの再起動を自動的に行うようにする。
[root@host2 ~]# vi named.root_update ← ルートゾーン最新化スクリプト作成
#!/bin/bash
new=`mktemp`
errors=`mktemp`
dig . ns @198.41.0.4 +bufsize=1024 > $new 2> $errors
if [ $? -eq 0 ]; then
sort_new=`mktemp`
sort_old=`mktemp`
diff_out=`mktemp`
sort $new > $sort_new
sort /var/named/chroot/var/named/named.ca > $sort_old
diff --ignore-matching-lines=^\; $sort_new $sort_old > $diff_out
if [ $? -ne 0 ]; then
(
echo '-------------------- old named.root --------------------'
cat /var/named/chroot/var/named/named.ca
echo
echo '-------------------- new named.root --------------------'
cat $new
echo '---------------------- difference ----------------------'
cat $diff_out
) | mail -s 'named.root updated' root
cp -f $new /var/named/chroot/var/named/named.ca
chown named. /var/named/chroot/var/named/named.ca
chmod 644 /var/named/chroot/var/named/named.ca
/etc/rc.d/init.d/named restart > /dev/null
fi
rm -f $sort_new $sort_old $diff_out
else
cat $errors | mail -s 'named.root update check error' root
fi
rm -f $new $errors
[root@host2 ~]# chmod 700 named.root_update ← ルートゾーン最新化スクリプトへ実行権限付加
[root@host2 ~]# mv named.root_update /etc/cron.monthly/ ← ルートゾーン最新化スクリプトを毎月自動実行されるディレクトリへ移動
内部向け正引きゾーンデータベース作成
内部向け正引きゾーンデータベース(ドメイン名⇒IPアドレス)作成
[root@host2 ~]# vi /var/named/sudachi.jp.db
$TTL 86400
@ IN SOA sudachi.jp. root.sudachi.jp.(
2019072701 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS ns1.sudachi.jp.
IN MX 10 sudachi.jp.
ns1 IN A 192.168.1.2 ← サーバーのプライベートIPアドレスを指定(ns1.sudachi.jp用)
@ IN A 192.168.1.3 ← サーバーのプライベートIPアドレスを指定(sudachi.jp用)
www IN A 192.168.1.3 ← サーバーのプライベートIPアドレスを指定(www.sudachi.jp用)
mail IN A 192.168.1.2 ← サーバーのプライベートIPアドレスを指定(mail.sudachi.jp用)
host2 IN A 192.168.1.2 ← サーバーのプライベートIPアドレスを指定(host2.sudachi.jp用)
host3 IN A 192.168.1.3 ← サーバーのプライベートIPアドレスを指定(host3.sudachi.jp用)
host4 IN A 192.168.1.4 ← サーバーのプライベートIPアドレスを指定(host4.sudachi.jp用)
* IN A 192.168.1.2 ← サーバーのプライベートIPアドレスを指定(*.sudachi.jp用)
内部向け正引きバーチャルホストゾーンデータベース(awajp.com⇒IPアドレス)作成
※バーチャルホストを利用する場合のみ
[root@host2 ~]# vi /var/named/awajp.com.db
$TTL 86400
@ IN SOA awajp.com. root.awajp.com.(
2019072701 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS ns1.sudachi.jp.
IN MX 10 awajp.com.
@ IN A 192.168.1.3 ← サーバーのプライベートIPアドレスを指定(awajp.com用)
www IN A 192.168.1.3 ← サーバーのプライベートIPアドレスを指定(www.awajp.com用)
内部向け正引きバーチャルホストゾーンデータベース(awanet.jp⇒IPアドレス)作成
※バーチャルホストを利用する場合のみ
[root@host2 ~]# vi /var/named/awanet.jp.db
$TTL 86400
@ IN SOA awanet.jp. root.awanet.jp.(
2019072701 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS ns1.sudachi.jp.
IN MX 10 awanet.jp.
@ IN A 192.168.1.3 ← サーバーのプライベートIPアドレスを指定(awanet.jp用)
www IN A 192.168.1.3 ← サーバーのプライベートIPアドレスを指定(www.awanet.jp用)
内部向け正引きバーチャルホストゾーンデータベース(eeljp.net⇒IPアドレス)作成
※バーチャルホストを利用する場合のみ
[root@host2 ~]# vi /var/named/eeljp.net.db
$TTL 86400
@ IN SOA eeljp.net. root.eeljp.net.(
2019072701 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS ns1.sudachi.jp.
IN MX 10 eeljp.net.
@ IN A 192.168.1.3 ← サーバーのプライベートIPアドレスを指定(eeljp.net用)
www IN A 192.168.1.3 ← サーバーのプライベートIPアドレスを指定(www.eeljp.net用)
内部向け正引きバーチャルホストゾーンデータベース(sudachinet.com⇒IPアドレス)作成
※バーチャルホストを利用する場合のみ
[root@host2 ~]# vi /var/named/sudachinet.com.db
$TTL 86400
@ IN SOA sudachinet.com. root.sudachinet.com.(
2019072701 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS ns1.sudachi.jp.
IN MX 10 sudachinet.com.
@ IN A 192.168.1.3 ← サーバーのプライベートIPアドレスを指定(sudachinet.com用)
www IN A 192.168.1.3 ← サーバーのプライベートIPアドレスを指定(www.sudachinet.com用)
内部向け正引きバーチャルホストゾーンデータベース(sudachinet.jp⇒IPアドレス)作成
※バーチャルホストを利用する場合のみ
[root@host2 ~]# vi /var/named/sudachinet.jp.db
$TTL 86400
@ IN SOA sudachinet.jp. root.sudachinet.jp.(
2019072701 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS ns1.sudachi.jp.
IN MX 10 sudachinet.jp.
@ IN A 192.168.1.3 ← サーバーのプライベートIPアドレスを指定(sudachinet.jp用)
www IN A 192.168.1.3 ← サーバーのプライベートIPアドレスを指定(www.sudachinet.jp用)
内部向け逆引きゾーンデータベース作成
内部向け逆引きゾーンデータベース(IPアドレス⇒ドメイン名)作成
[root@host2 ~]# vi /var/named/1.168.192.in-addr.arpa.db
$TTL 86400
@ IN SOA sudachi.jp. root.sudachi.jp.(
2019072701 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS ns1.sudachi.jp.
2 IN PTR ns1.sudachi.jp
3 IN PTR sudachi.jp. ← サーバーIPアドレス最下位部(192.168.1.3)とドメイン名を指定
外部向け正引きゾーンデータベース作成
外部向け正引きゾーンデータベース(ドメイン名⇒IPアドレス)作成
※固定IPアドレス環境の場合のみ
[root@host2 ~]# vi /var/named/sudachi.jp.db.wan ← 外部向け正引きゾーンデータベース作成
$TTL 86400
@ IN SOA ns1.sudachi.jp. root.sudachi.jp.(
2011041902 ; Serial
7200 ; Refresh
7200 ; Retry
2419200 ; Expire
86400 ) ; Minimum
IN NS ns1.sudachi.jp.
IN NS 2nd.dnsv.jp.
IN MX 10 sudachi.jp.
ns1 IN A XXX.XXX.XXX.XXX ← サーバーのグローバルIPアドレスを指定(ns1.sudachi.jp用)
@ IN A XXX.XXX.XXX.XXX ← サーバーのグローバルIPアドレスを指定(sudachi.jp用)
www IN A XXX.XXX.XXX.XXX ← サーバーのグローバルIPアドレスを指定(www.sudachi.jp用)
ftp IN A XXX.XXX.XXX.XXX ← サーバーのグローバルIPアドレスを指定(ftp.sudachi.jp用)
mail IN A XXX.XXX.XXX.XXX ← サーバーのグローバルIPアドレスを指定(mail.sudachi.jp用)
sudachi.jp. IN TXT "v=spf1 ip4:XXX.XXX.XXX.XXX ~all" ← サーバーのグローバルIPアドレスを指定(メールサーバーを構築する場合のみ)
BIND起動
BIND起動
[root@host2 ~]# systemctl start named-chroot ← BIND起動 [root@host2 ~]# systemctl enable named-chroot ← BIND自動起動設定
BIND状態取得
[root@host2 ~]# systemctl status named-chroot
● named-chroot.service - Berkeley Internet Name Domain (DNS)
Loaded: loaded (/usr/lib/systemd/system/named-chroot.service; enabled; vendor preset: disabled)
Active: active (running) since 金 2016-01-08 16:31:49 JST; 3min 27s ago
Main PID: 22098 (named)
CGroup: /system.slice/named-chroot.service
└─22098 /usr/sbin/named -u named -t /var/named/chroot
1月 08 16:31:49 host3.sudachi.jp named[22098]: zone sudachi.jp/IN/internal: loaded serial 201...902
1月 08 16:31:49 host3.sudachi.jp named[22098]: zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0...l 0
1月 08 16:31:49 host3.sudachi.jp named[22098]: zone sudachi.jp/IN/external: loaded serial 201...902
1月 08 16:31:49 host3.sudachi.jp named[22098]: zone localhost/IN/internal: loaded serial 0
1月 08 16:31:49 host3.sudachi.jp named[22098]: zone 1.168.192.in-addr.arpa/IN/internal: loade...902
1月 08 16:31:49 host3.sudachi.jp named[22098]: zone localhost.localdomain/IN/internal: loaded...l 0
1月 08 16:31:49 host3.sudachi.jp named[22098]: all zones loaded
1月 08 16:31:49 host3.sudachi.jp named[22098]: running
1月 08 16:31:49 host3.sudachi.jp named[22098]: zone sudachi.jp/IN/external: sending notifies ...02)
1月 08 16:31:49 host3.sudachi.jp systemd[1]: Started Berkeley Internet Name Domain (DNS).
Hint: Some lines were ellipsized, use -l to show in full.
