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
|
|
コメントを残す