1 views

■概要

外部から自宅サーバー「http://ufuso.dip.jp」にアクセスすると、プロバイダーから提供されているルーター(192.168.24.1)がちゃんと自宅サーバー(192.168.24.2)に繋いでくれますが、自宅のWindowsノートパソコン(192.168.24.3)から自宅サーバー(192.168.24.2)にアクセスすると繋いでくれません。ドメインufuso.dip.jpがIPアドレス192.168.24.2と同じパソコンのものだよと教えてくれるDNSサーバー(BIND)が家庭内LAN内には無いからです。

そこで、自宅サーバーに自宅のWindowsノートパソコンからアクセスできるように自宅内専用のDNSサーバー(内部DNSサーバー)を構築してIPアドレス(192.168.24.2)だけではなく、ufuso.dip.jpでもアクセスできるようにしました。

ieServer.Net(無料)Dynamic DO!.jp(無料)お名前.com(有料)などからドメインを取得済であること

ドメイン名の説明はこちら

■BINDインストール

[root@ufuso ~]# yum -y install bind bind-chroot ← bind,bind-chrootインストール
Installed:
  bind.x86_64 32:9.8.2-0.10.rc1.el6_3.2                                         
  bind-chroot.x86_64 32:9.8.2-0.10.rc1.el6_3.2                                  

Complete!

■BIND設定

(1)BIND設定

[root@ufuso ~]# vi bind-chroot-admin ← bind-chroot-adminスクリプト作成

#!/bin/sh

# bind-chroot install check
rpm -q bind-chroot > /dev/null 2>&1
[ $? -ne 0 ] && echo bind-chroot not install && exit 1

# bind-chroot enabled
sed -i '/^ROOTDIR=/d' /etc/sysconfig/named
echo ROOTDIR=/var/named/chroot >> /etc/sysconfig/named

# file copy
filelist=`mktemp`
rpm -ql bind|grep ^/etc >> ${filelist}
rpm -ql bind|grep ^/var >> ${filelist}
for file in `cat ${filelist}`
do
  # directory make
  if [ -d ${file} ]; then
      DIRNAME=/var/named/chroot${file}
      [ ! -d ${DIRNAME} ] && mkdir -p ${DIRNAME}
  fi
  # file copy
  if [ -f ${file} ]; then
      DIRNAME=/var/named/chroot`dirname ${file}`
      [ ! -d ${DIRNAME} ] && mkdir -p ${DIRNAME}
      /bin/cp -a ${file} ${DIRNAME}
  fi
done
rm -f ${filelist}

chown named:named /var/named/chroot/var/named/data
chmod 770 /var/named/chroot/var/named/data
chown named:named /var/named/chroot/var/named/dynamic

exit


[root@ufuso ~]# sh bind-chroot-admin ← bind-chroot-adminスクリプト実行

[root@ufuso ~]# vi /var/named/chroot/etc/named.conf ← BIND設定ファイル編集
/
// 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.
//

options {
        #listen-on port 53 { 127.0.0.1; }; ← 行頭に#を追加して無効化
        #listen-on-v6 port 53 { ::1; }; ← 行頭に#を追加して無効化
        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";
        allow-query     { localhost; localnets; }; ← サーバーと同じネットワーク内から
の問合せも許可
        recursion yes;

        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";
        managed-keys-directory "/var/named/dynamic";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
        category lame-servers { null; }; ← 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.ufuso.dip.jp.zone"; ← 自ドメインの追加
};

[root@ufuso ~]# vi /var/named/chroot/etc/named.ufuso.dip.jp.zone
  ← ufuso.dip.jpの内部向けゾーン定義ファイル作成
// 正引きゾーン(kajuhome.com)の指定
    zone "ufuso.dip.jp" {
        type master;
        file "ufuso.dip.jp.db";       <--- ファイル名に注視
        allow-update { none; };
    };
    // 逆引きゾーン(192.168.24.0/24)の指定
    zone "24.168.192.in-addr.arpa" {
        type master;
        file "24.168.192.in-addr.arpa.db";
        allow-update { none; };
    };

[root@ufuso ~]# echo OPTIONS="-4" >> /etc/sysconfig/named
  ← IPv4のみ有効にする(error (network unreachable) resolvingというエラーログの
出力抑止)

■ルートゾーン自動更新設定

[root@ufuso ~]# dig . ns @198.41.0.4 +bufsize=1024 > /var/named/chroot/var/named/named.ca  ← ルート
ゾーン(named.ca)最新化

[root@ufuso ~]# 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@ufuso ~]# chmod 700 named.root_update ← 実行権限付加

[root@ufuso ~]# mv named.root_update /etc/cron.monthly/ ← 毎月自動実行されるディレク
トリへ移動

■内部向け正引きゾーンデータベース(ドメイン名⇒IPアドレス)作成

[root@ufuso ~]# vi /var/named/chroot/var/named/ufuso.dip.jp.db ← 正引きゾーンデータベース作成

$TTL    86400
@       IN      SOA     ufuso.dip.jp.  root.ufuso.dip.jp.(
                                      2011062001 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
        IN NS    ufuso.dip.jp. ← ネームサーバー定義
        IN MX 10 ufuso.dip.jp. ← メールサーバー定義
@       IN A     192.168.24.2 ← サーバーのプライベートIPを指定(ufuso.dip.jp用)
*       IN A     192.168.24.2 ← サーバーのプライベートIPを指定(*.ufuso.dip.jp用)

■内部向け逆引きゾーンデータベース(IPアドレス⇒ドメイン名)作成

[root@ufuso ~]#  vi /var/named/chroot/var/named/24.168.192.in-addr.arpa.db
 ← 逆引きゾーンデータベース作成

$TTL    86400
@       IN      SOA     ufuso.dip.jp.  root.ufuso.dip.jp.(
                                      2011062001 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
              IN      NS    ufuso.dip.jp. ← ネームサーバー定義
2             IN      PTR   ufuso.dip.jp. ← IPアドレスに関連付けるホスト名を定義

※ゾーン情報変更時は、Serial行を年月日通番2桁(YYYYMMDDXX)のようにして、必ず変更前よりも大きい数値に変更すること(例:変更前が2005011001なら、変更後は2005011002にする)。

■BIND起動

(1)BIND起動

[root@ufuso ~]# /etc/rc.d/init.d/named start ← BIND起動
Generating /etc/rndc.key:                                  [  OK  ]
named を起動中:                                            [  OK  ]

[root@ufuso ~]# chkconfig named on ← BIND自動起動設定

[root@ufuso ~]# chkconfig --list named ← BIND自動起動設定の確認
named           0:off   1:off   2:on    3:on    4:on    5:on    6:off

(2)UDPの53番ポートとTCPの53番ポートをオープンする
ルーターの設定で、UDPの53番ポートとTCPの53番ポートへのアクセスをサーバーに転送するようにする。

■BIND確認

(1)BIND確認(クライアントがWindowsの場合)

C:>nslookup ← nslookup起動
Default Server:  ufuso.dip.jp
Address:  192.168.24.2

> ufuso.dip.jp ← Linuxサーバーの正引きテスト
Server:  ufuso.dip.jp
Address:  192.168.24.2

Name:    ufuso.dip.jp
Address:  192.168.24.2 ← IPアドレスが返ってきた

> 192.168.24.2 ← Linuxサーバーの逆引きテスト

Server:  ufuso.dip.jp
Address:  192.168.24.2

Name:    ufuso.dip.jp ← ドメイン名が返ってきた
Address:  192.168.24.2
> exit ← nslookup停止

C:>

(2)BIND確認(クライアントがLinuxの場合)


[root@ufuso ~]# dig ufuso.dip.jp ← Linuxサーバーの正引きテスト

; <<>> DiG 9.7.0-P2-RedHat-9.7.0-5.P2.el6_0.1 <<>> ufuso.dip.jp
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52474
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;ufuso.dip.jp.			IN	A

;; ANSWER SECTION:
ufuso.dip.jp.		86400	IN	A	192.168.24.2

;; AUTHORITY SECTION:
ufuso.dip.jp.		86400	IN	NS	ufuso.dip.jp.

;; Query time: 1 msec
;; SERVER: 192.168.24.2#53(192.168.24.2)
;; WHEN: Wed Nov 30 01:38:54 2011
;; MSG SIZE  rcvd: 60

[root@ufuso ~]# dig -x 192.168.24.2 ← Linuxサーバーの逆引きテスト

; <<>> DiG 9.7.0-P2-RedHat-9.7.0-5.P2.el6_0.1 <<>> -x 192.168.24.2
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51096
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;2.24.168.192.in-addr.arpa.	IN	PTR

;; ANSWER SECTION:
2.24.168.192.in-addr.arpa. 86400 IN	PTR	ufuso.dip.jp.

;; AUTHORITY SECTION:
24.168.192.in-addr.arpa. 86400	IN	NS	ufuso.dip.jp.

;; ADDITIONAL SECTION:
ufuso.dip.jp.		86400	IN	A	192.168.24.2

;; Query time: 1 msec
;; SERVER: 192.168.24.2#53(192.168.24.2)
;; WHEN: Wed Nov 30 01:39:08 2011
;; MSG SIZE  rcvd: 101

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください