LoginSignup
6
8

More than 5 years have passed since last update.

BIND で内向き DNS Server を構築する

Last updated at Posted at 2016-05-04

【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つが確認出来れば起動完了
    1. Loaded: loaded (/usr/lib/systemd/system/named-chroot.service; enabled; vendor preset: disabled)
    2. 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
6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8