#【BIND で内向き DNS Server を構築する】
- bind の構築手順まとめ
◇ 演習環境
- OS: CentOS7
◇ 構築手順
1. インストール
- パッケージは CentOS6 までと変化なし
- セキュリティのお約束として chroot もインストール
yum install bind bind-chroot bind-utils
2. chroot ディレクトリのマウント
- bind 起動時に chroot ディレクトリをマウントしてくれるが念の為に実行する
/usr/libexec/setup-named-chroot.sh /var/named/chroot on
3. bind 設定
a. 設定ファイル編集
/etc/named.conf
@@ -11 +11 @@
- listen-on port 53 { 127.0.0.1; };
+ listen-on port 53 { 127.0.0.1; 192.168.100.11; };
@@ -17 +17 @@
- allow-query { localhost; };
+ allow-query { localhost; localnets; };
@@ -47,0 +51 @@
+ category lame-servers { null; };
@@ -57 +61 @@
-
+include "/etc/named/named.mydomain.org.zone";
- allow-query: localnets を追加し、ローカルネットワークからのクエリを許可
- lame-servers: エラーメッセージ( connection refused ) の抑止
b. 書式確認
named-checkconf /etc/named.conf
- 標準出力にエラーが出なければ問題なし
4. bind 起動オプション設定
- IPv4 のみ有効化とし、IPv6 関連の余計なエラー出力を抑止する
echo 'OPTIONS="-4"' >> /etc/sysconfig/named
5. ルートゾーン更新スクリプト設置
a. スクリプト作成
- あまり更新されることは無いが、更新された時に備えて設置する
/etc/cron.monthly/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
which systemctl > /dev/null 2>&1
if [ $? -eq 0 ]; then
systemctl restart named-chroot > /dev/null
else
/etc/rc.d/init.d/named restart > /dev/null
fi
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
b. 実行権限を付与
chmod 700 /etc/cron.monthly/named.root_update
5. 内向き Zone 定義ファイル作成
a. Zone ファイル作成
/etc/named/named.mydomain.org.zone
zone "mydomain.org" {
type master;
allow-update { localhost; localnets; };
};
zone "100.168.192.in-addr.arpa" {
type master;
file "100.168.192.in-addr.arpa.db";
allow-update { localhost; localnets; };
};
- allow-update: DDNS 設定の追加。dhcp から IP を払い出した際にゾーン更新を行う。
b. 書式確認
named-checkconf /etc/named/named.mydomain.org.zone
- 標準出力にエラーが出なければ問題なし
6. 内向き Zone 設定 (正引き)
a. Zone ファイル作成
/var/named/mydomain.org.db
$TTL 86400
@ IN SOA mydomain.org. root.mydomain.org. (
2016050401 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS mydomain.org.
IN MX 10 mydomain.org.
@ IN A 192.168.100.11
* IN A 192.168.100.11
master IN A 192.168.100.11
b. 書式確認
named-checkzone mydomain.org /var/named/mydomain.org.db
- OK が出れば記述誤り無し
7. 内向き Zone 設定 (逆引き)
a. Zone ファイル作成
/var/named/100.168.192.in-addr.arpa.db
$TTL 86400
@ IN SOA mydomain.org. root.mydomain.org. (
2016050401 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS mydomain.org.
11 IN PTR mydomain.org.
11 IN PTR master
b. 書式確認
named-checkzone 100.168.192.in-addr.arpa /var/named/100.168.192.in-addr.arpa.db
- OK が出れば記述誤り無し
8. 所有者変更
chown named:named /var/named -R
9. firewalld 設定
a. アクセス許可設定追加
firewall-cmd --add-service=dns --zone=public --permanent
b. 設定反映
firewall-cmd --reload
c. 反映確認
firewall-cmd --list-all
- services に dns が追加されれば反映完了
10. BIND 起動設定
a. BIND 起動
systemctl start named-chroot.service
b. BIND 自動起動設定追加
systemctl enable named-chroot.service
c. BIND 起動確認
systemctl status named-chroot.service
- 下記2つが確認出来れば起動完了
- Loaded: loaded (/usr/lib/systemd/system/named-chroot.service; enabled; vendor preset: disabled)
- Active: active (running)
11. Network 設定
a. インターフェースへ DNS 設定追加
vim /etc/sysconfig/network-scripts/ifcfg-enp0s3
----
-PEERDNS="yes"
+PEERDNS="no"
+DNS1="192.168.100.11"
- PEERDNS: DHCP を使用している場合、PEERDNS="no" を追加して DCHP から DNS 設定を受け取らないようにする
- DNS1: 自分自身を DNS サーバとして設定
b. 設定反映
systemctl restart NetworkManager
12. 動作確認
- ANSWER SECTION に設定した IP アドレスの応答があれば設定完了
dig master.mydomain.org @localhost