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導入手順
(1)BINDインストール
[root@ufuso ~]# yum -y install bind bind-chroot caching-nameserver ← 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! |
(2)chroot化
[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スクリプト実行 |
(3)BIND設定
[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"; forwarders{ 192.168.24.1; ← ルーター経由接続環境の場合はルーターのIPアドレ スを指定。PPPoE接続環境の場合はプロバイダから通知されたDNSサーバー (プライマリ&セカンダリ)のIPアドレスを指定 }; }; 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"; }; [root@ufuso ~]# vi /var/named/chroot/etc/named.ufuso.dip.jp.zone ← ufuso.dip.jpの内部向けゾーン定義ファイル作成 zone "ufuso.dip.jp" { type master; file "ufuso.dip.jp.db"; }; zone "24.168.192.in-addr.arpa" { type master; file "24.168.192.in-addr.arpa.db"; }; [root@ufuso ~]# echo OPTIONS="-4" >> /etc/sysconfig/named ← IPv4のみ有効にする(error (network unreachable) resolvingというエラーログの 出力抑止) |
(5)ルートゾーン自動更新設定
[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/ ← 毎月自動実行されるディレク トリへ移動 |
(6)内部向け正引きゾーンデータベース(ドメイン名⇒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.240 ← サーバーのプライベートIPを指定(ufuso.dip.jp用) * IN A 192.168.24.240 ← サーバーのプライベートIPを指定(*.ufuso.dip.jp用) |
(7)内部向け逆引きゾーンデータベース(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. ← ネームサーバー定義 240 IN PTR ufuso.dip.jp. ← IPアドレスに関連付けるホスト名を定義 |
※ゾーン情報変更時は、Serial行を年月日通番2桁(YYYYMMDDXX)のようにして、必ず変更前よりも大きい数値に変更すること(例:変更前が2005011001なら、変更後は2005011002にする)。
(8)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 ~]# sed -i 's/DNS1=.*/DNS1=127.0.0.1/g' /etc/sysconfig/network-scripts/ifcfg-eth0
← サーバー自身を問合せ先DNSサーバーに変更
※ブリッジ接続をしている場合は、ifcfg-eth0をifcfg-br0に変更のこと。
[root@ufuso ~]# /etc/rc.d/init.d/network restart ← network再起動
インターフェース eth0 を終了中: デバイスの状態: 3 (切断済み)
[ OK ]
ループバックインターフェースを終了中 [ OK ]
ループバックインターフェイスを呼び込み中 [ OK ]
インターフェース eth0 を活性化中: アクティブ接続の状態: アクティベート済み
アクティブ接続のパス: /org/freedesktop/NetworkManager/ActiveConnection/4
[ OK ]
|
(9)UDPの53番ポートとTCPの53番ポートをオープンする
ルーターの設定で、UDPの53番ポートとTCPの53番ポートへのアクセスをサーバーに転送するようにする。下図はauひかりのルーターでの設定例。
(10)BIND確認(クライアントがWindowsの場合)
C:>nslookup ← nslookup起動 Default Server: ufuso.dip.jp Address: 192.168.24.240 > ufuso.dip.jp ← サーバーの正引きテスト Server: ufuso.dip.jp Address: 192.168.24.240 Name: ufuso.dip.jp Address: 192.168.24.240 ← IPアドレスが返ってきた > 192.168.24.240 ← サーバーの逆引きテスト Server: ufuso.dip.jp Address: 192.168.24.240 Name: ufuso.dip.jp ← ドメイン名が返ってきた Address: 192.168.24.240 > exit ← nslookup停止 C:> |
(11)BIND確認(クライアントがLinuxの場合)
[root@ufuso ~]# dig ufuso.dip.jp ← サーバーの正引きテスト ; <<>> 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.240 ;; AUTHORITY SECTION: ufuso.dip.jp. 86400 IN NS ufuso.dip.jp. ;; Query time: 1 msec ;; SERVER: 192.168.24.240#53(192.168.24.240) ;; WHEN: Wed Nov 30 01:38:54 2011 ;; MSG SIZE rcvd: 60 [root@ufuso ~]# dig -x 192.168.24.240 ← サーバーの逆引きテスト ; <<>> DiG 9.7.0-P2-RedHat-9.7.0-5.P2.el6_0.1 <<>> -x 192.168.24.240 ;; 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: ;240.24.168.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 240.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.240 ;; Query time: 1 msec ;; SERVER: 192.168.24.240#53(192.168.24.240) ;; WHEN: Wed Nov 30 01:39:08 2011 ;; MSG SIZE rcvd: 101 |
※どうしても、WindowsPCから自宅サーバーにアクセスできない場合は、「内部DNSが機能せずWindows端末からサーバーにアクセスできない場合」を参考にしてください。
コメントを残す