BINDを使ってLAN向けDNSサーバを作ろう!
ここでは、BINDを使ったLAN内用DNSの構築手順について掲載してあります。
非固定IPの場合、外部向けのDNSを立てることができないので、今回はLAN内でのみ参照をするDNSサーバを構築します。
尚、説明で使用しているドメイン"mhserv.info"やネットワークアドレス"192.168.100"は各自の環境に合わせて変更してください。
※CentOS 5のサポートは2017年3月をもって終了していますが、旧コンテンツとしてこちらのページは残しておきます。
DNSとは…?
ブラウザで「http://142.250.207.4/」に接続すると、一体どこに繋がるでしょうか?
試してみると分かりますが、これはGoogleのトップページに繋がります。しかし、これでは覚えづらい、分かりづらい、どこに繋がるか分からず不安、と良い事なしですよね。
そこで、「http://www.google.com/」なんてURL(名前:ドメイン)を付けてあげます。このURLを見れば、どこに繋がるかだいたい分かりますね。
このように、IPアドレスとドメインを相互変換するシステムのことをDNS(Domain Name System)といいます。
BINDとは…?
Berkeley Internet Name Domainの略で、世界で最も普及しているDNSサーバです。
BINDのインストール
BINDと関連のパッケージをインストールします。
[root@co5 ~]# yum -y install bind-chroot caching-nameserver bind-utils
Installed:
bind-chroot.x86_64 30:9.3.6-25.P1.el5_11.12
caching-nameserver.x86_64 30:9.3.6-25.P1.el5_11.12
bind-utils.x86_64 30:9.3.6-25.P1.el5_11.12
Dependency Installed:
bind.x86_64 30:9.3.6-25.P1.el5_11.12 bind-libs.x86_64 30:9.3.6-25.P1.el5_11.12
Complete!
BINDの設定
CentOS 5では設定ファイルが用意されていないので、サンプルファイルからコピーします。
[root@co5 ~]# cp /var/named/chroot/etc/named.caching-nameserver.conf /var/named/chroot/etc/named.conf
[root@co5 ~]# chgrp named /var/named/chroot/etc/named.conf
続いて、設定を行います。
ドメインやfowardersに設定するDNSサーバは環境に合わせて変更してください。
[root@co5 ~]# vi /var/named/chroot/etc/named.conf
options {
// 追記
version "unknown";
listen-on port 53 { 127.0.0.1; };
↓
// listen-on port 53 { 127.0.0.1; };
listen-on-v6 port 53 { ::1; };
↓
// listen-on-v6 port 53 { ::1; };
allow-query { localhost; };
allow-query-cache { localhost; };
↓
allow-query { localhost; localnets; };
allow-query-cache { localhost; localnets; };
// 以下を追記
allow-recursion { localhost; localnets; };
allow-transfer { localhost; localnets; };
forwarders { 192.168.100.1; }; ※bindに登録がなかった場合に参照するDNSサーバ
};
// 以下を最後尾に追記
view "internal" {
match-clients { localnets; };
match-destinations { localnets; };
recursion yes;
include "/var/named/named.mhserv.info.zone"; ※取得したドメイン
};
LAN内向けゾーン定義ファイルの作成
BINDが参照するLAN内でのゾーン定義ファイルを作成し、以下を入力します。
ドメイン名、IPアドレスは環境に合わせて変更してください。
[root@co5 ~]# vi /var/named/chroot/var/named/named.mhserv.info.zone
zone "mhserv.info" { type master; file "mhserv.info.db"; }; zone "100.168.192.in-addr.arpa" { type master; file "100.168.192.in-addr.arpa.db"; };
LAN内向け正引きゾーンDBの作成
ドメインからIPアドレスを参照する正引きゾーンの一覧を作成します。
ドメインの後ろにピリオド"."が付くので、忘れずに記入してください。
設定の内容についての詳しい説明はWebOS Goodies様の記事がとても参考になります。
[root@co5 ~]# vi /var/named/chroot/var/named/mhserv.info.db
$TTL 86400 @ IN SOA mhserv.info. root.mhserv.info.( 2024011901 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ; Minimum ) IN NS mhserv.info. IN MX 10 mhserv.info. @ IN A 192.168.100.245 * IN A 192.168.100.245
LAN内向け逆引きゾーンDBの作成
続いて、IPアドレスからドメインを参照する逆引きゾーンの一覧を作成します。
こちらもドメインの後ろにピリオド"."が付くので、忘れずに記入してください。
[root@co5 ~]# vi /var/named/chroot/var/named/100.168.192.in-addr.arpa.db
$TTL 86400 @ IN SOA mhserv.info. root.mhserv.info.( 2024011901 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ; Minimum ) IN NS mhserv.info. 245 IN PTR mhserv.info. 245 IN PTR co5.mhserv.info.
ルートゾーンの更新
ルートゾーンのサーバ情報を更新します。
世界に13台しかないらしいです。
[root@co5 ~]# dig . ns @198.41.0.4 > /var/named/chroot/var/named/named.ca
ルートゾーンのサーバ情報は滅多に更新されませんが、定期的に確認、更新を行うようにします。
スクリプトはCentOSで自宅サーバー構築様のものを使わせていただきます。
[root@co5 ~]# vi /etc/cron.monthly/named.root_update
#!/bin/bash
new=`mktemp`
errors=`mktemp`
dig . ns @198.41.0.4 > $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@co5 ~]# chmod 700 /etc/cron.monthly/named.root_update
BINDの起動
設定が終わったら、BINDを起動します。
[root@co5 ~]# /etc/rc.d/init.d/named start
named を起動中: [ OK ]
[root@co5 ~]# chkconfig named on
[root@co5 ~]# chkconfig --list named
named 0:off 1:off 2:on 3:on 4:on 5:on 6:off
サーバ機のDNSを変更
サーバのDNSを自分自身を参照するように変更します。
[root@co5 ~]# echo "nameserver 127.0.0.1" > /etc/resolv.conf
[root@co5 ~]# /etc/rc.d/init.d/network restart
インターフェース eth0 を終了中: [ OK ] ループバックインターフェースを終了中 [ OK ] ループバックインターフェイスを呼び込み中 [ OK ] インターフェース eth0 を活性化中: [ OK ]
WindowsでのDNSの設定
Windows機でネットワークインターフェースにDNSの設定を行います。
動作確認
DNSサーバを設定したWindows機で、IPアドレスやドメインが引けるかを確認します。
今回新しく登場したコマンド
- dig
[広告]
トップページ
CentOS 5
○準備
○仮想化準備(VMware)
○仮想化準備(Hyper-V)
○仮想化準備(Proxmox)
○基本操作
○導入
○セキュリティ対策
○Dynamic DNS
○NTPサーバ
○データベース
○WEBサーバ
○FTPサーバ
○メールサーバ
○DNSサーバ
○ファイルサーバ
○その他