最終更新日 2005/4/20  戻る  483326 人 REMOTE = 38.103.63.59 REFERER =

★DNSのWANへの公開

いよいよWAN(インターネット側)へのDNSの公開です.私のインターネット環境はBFlets-family100+bb.excite(固定IP)月3000円です.固定IPさえあればWAN側へもDNSの公開ができます.もう一つDNSをたてるにはスレーブDNSがいります.GraniteCanyon http://soa.granitecanyon.com/ や ZoneEdit http://zoneedit.comなどでも設定できますが,私はたにきんさんhttp://www.b-dash.net/にお願いしました.(GraniteCanyonの設定方法はhttp://www.oiden.net/Flets/HowTo7/HowTo7_3/index.htmlに,ZoneEditの設定方法はhttp://www.koro.info/web/dmn/ze_2nd.aspにあります.)
bindの設定が終わり最後にやる事はレジストラへのネームサーバの登録です.私のレジストラはDotster http://www.dotsterjapan.com/japanese/home/default.htm,ネームサーバーはns.yaguma.comです.レジストラの設定画面からログインし,まずネームサーバ登録(ホスト名とIPアドレスを入力する)してからネームサーバ更新(プライマリDNS ns.yaguma.comとスレーブDNS ns2.b-dash.netを入力)します.これでしばらくすればwhoisに反映されるようになります.ポートの53番をあけておくのを忘れないように.
今回ここまで来るのにずいぶんの時間がかかってしまいました.dotsterのヘルプがあまりよくないことと私の見落としが原因でした.dotsterのページははっきり言ってわかりにくいです.英語のページよりはましかもしれませんが.わかりづらい文章やおかしな日本語の使い方が所々見られます.またネームサーバの更新,登録が複数の場所で可能なんですがある所ではOK,ある所ではNGとよくわからないところがあります.でも人によっては迷わないかもしれませんし,試行錯誤すれば最後には目的に到達するでしょう.

1.bind9の導入

Vine Linuxにはbind8が用意されていますが,bindはもっともクラッカーに狙われやすいのでよりセキュリティ的に頑丈になったbind9を導入します.chroot jail方式で導入します.これを使うとbindはjailの中が自分の世界と思って外に出ていけません.詳しくはChroot-BIND HOWTOhttp://www.linux.or.jp/JF/JFdocs/Chroot-BIND-HOWTO.htmlを見てください.簡単に下記にまとめておきます.

a.bind8を削除する
# rpm -e caching-nameserver
# rpm -e bind-utiles
# rpm -e bind
以前に作っておいた設定ファイルが必要なら削除する前にとっておくこと.(/etc/named.conf,/var/named/*)

b.bind9をインストールする
http://www.isc.org/products/BIND/から現在の最新バージョンであるBIND 9.2.1を入手する.
# tar xzvf bind-9.2.1.tar.gz
# cd bind-9.2.1
# ./configure
# make
# make install
これでお終い.簡単ですね.

c.bind8を削除した時点でbindが使うユーザnamedも削除されていますので,これを登録します.次のような行を /etc/passwd に加えます。
named:x:200:200:Nameserver:/chroot/named:/bin/false
そして次の行を /etc/group に加えます。
named:x:200:
これでbindがつかうユーザnamedはできました.

d.chrootのディレクトリ構造を作る
# mkdir -p /chroot/named
# cd /chroot/named
# mkdir -p dev etc/namedb/slave var/run
以前に作っておいた設定ファイルを必要に応じてコピー.
# cp -p /etc/named.conf /chroot/named/etc/
# cp -a /var/named/* /chroot/named/etc/namedb/

e.chrootのディレクトリ構造のユーザ・グループ名の設定と必要なファイルの設定
# chown -R named:named /chroot/named/etc/namedb/slave
# chown named:named /chroot/named/var/run
# mknod /chroot/named/dev/null c 1 3
# mknod /chroot/named/dev/random c 1 8
# chmod 666 /chroot/named/dev/{null,random}
この辺りは私にとってはおまじないみたいなもの.よく意味が分かっていません.

f.ログファイルを設定
/etc/rc.d/init.d/syslog内にある以下の一行.
SYSLOGD_OPTIONS="-m 0 -a"を
SYSLOGD_OPTIONS="-m 0 -a /chroot/named/dev/log"
に変更する.こうすることによってログがとれるようになると書いてありました.変更したら # service syslog restart を.

g.パーミッションを厳しくする.
# chown root /chroot
# chmod 700 /chroot
# chown named:named /chroot/named
# chmod 700 /chroot/named

h./etc/rc.d/init.d/namedとして下記のファイルを追加

#!/bin/sh
#
# named This shell script takes care of starting and stopping
# named (BIND DNS server).
#
# chkconfig: 345 55 45
# description: named (BIND) is a Domain Name Server (DNS) \
# that is used to resolve host names to IP addresses.
# probe: true
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -f /usr/local/sbin/named ] || exit 0
[ -f /chroot/named/etc/named.conf ] || exit 0
# See how we were called.
case "$1" in
  start)
    # Start daemons.
    echo -n "Starting named: "
    daemon /usr/local/sbin/named -u named -t /chroot/named -c /etc/named.conf
    echo
    touch /var/lock/subsys/named
    ;;
  stop)
    # Stop daemons.
    echo -n "Shutting down named: "
    killproc named
    rm -f /var/lock/subsys/named
    echo
    ;;
  status)
    status named
    exit $?
    ;;
  restart)
    $0 stop
    $0 start
    exit $?
    ;;
  reload)
    /usr/local/sbin/rndc reload
    exit $?
    ;; 
  probe)
    # named knows how to reload intelligently; we don't want linuxconf
    # to offer to restart every time
    /usr/local/sbin/rndc reload >/dev/null 2>&1 || echo start
    exit 0
    ;;
  *)
    echo "Usage: named {start|stop|status|restart|reload}"
    exit 1
esac
exit 0

# chmod 700 /etc/rc.d/init.d/named
# service named start
はいこれでbindは動き始めます.

2.設定ファイル

bind9になってからview機能ができ,lan側設定とwan側設定を簡単にできるようになりました.jail内にいるとbindは/chroot/namedが/になりますのでoptionsのディレクトリ名は/chroot/namedがありません.また,2個目のdomainを取ったときの設定はこちらにあります.
http://yaguma.com/Server/2domain.html

/chroot/named/etc/named.conf
options {
    directory "/etc/namedb";
    pid-file "/var/run/named.pid";
    statistics-file "/var/run/named.stats";
};
// ローカルネットワークの設定
acl localnet {
    192.168.1.0/24;
    127.0.0.1;
};
// lan側の設定
view "domestic" {
    match-clients { localnet; };
// ルートのゾーンファイル
    zone "." {
        type hint;
        file "named.ca";
    };
// localhost正引き
    zone "localhost" {
        type master;
        file "localhost.zone";
    };
// localhost逆引き
    zone "0.0.127.in-addr.arpa" {
        type master;
        file "named.local";
    };
// 自ドメイン正引き
    zone "yaguma.com" {
        type master;
        file "yaguma.com.local";
    };
// 自ドメイン逆引き
    zone "1.168.192.in-addr.arpa" {
        type master;
        file "yaguma.com.rev";
    };
};
// wan側設定
view "world" {
    match-clients { any; };
// 自ドメイン正引き
    zone "yaguma.com" {
        type master;
        file "yaguma.com.zone";
// たにきんさんにお願いしたスレーブDNSのIP.ここ以外の転送は不可.
        allow-transfer { 219.117.212.40; };
    };
};

lan側の正引きファイル
/chroot/named/etc/namedb/yaguma.com.local
TTL 1D
@ IN SOA ns.yaguma.com. tanaka.yaguma.com. (
                          2002122101 ;serial
                          3H ;refresh
                          7200 ;retry
                          604800 ;expire
                          86400 ) ;minimum
       IN     NS      ns.yaguma.com.
       IN     MX   10 mail.yaguma.com.
       IN     A       192.168.1.101
ns     IN     A       192.168.1.101
www    IN     A       192.168.1.101
mail   IN     A       192.168.1.101
bfle   IN     A       192.168.1.1
savb   IN     A       192.168.1.100
sav    IN     A       192.168.1.101
vine   IN     A       192.168.1.102
*      IN     A       192.168.1.101
sav,savb,vineと3台のコンピューターをAレコードに登録しています.bfleはルータです.www,mail,savはnsのCNAMEとして書くこともできます.あまり感心しないことですが.
www    IN     CNAME   ns
mail   IN     CNAME   ns
sav    IN     CNAME   ns

lan側の逆引きファイル
$TTL 1D
@ IN SOA ns.yaguma.com. tanaka.yaguma.com. (
                          2002122101 ;serial
                          3H ;refresh
                          7200 ;retry
                          604800 ;expire
                          86400 ;minimum
                          )
       IN     NS      ns.yaguma.com.
1      IN     PTR     bfle.yaguma.com.
100    IN     PTR     savb.yaguma.com.
101    IN     PTR     sav.yaguma.com.
102    IN     PTR     vine.yaguma.com.

wan側の正引きファイル
$TTL 1D
@ IN SOA ns.yaguma.com. tanaka.yaguma.com. (
                          2002122401 ;serial
                          3H ;refresh
                          3600 ;retry
                          604800 ;expire
                          86400 ;minimum
                          )
      IN     NS     ns.yaguma.com. ;Primary
      IN     NS     ns2.b-dash.net. ;Slave
      IN     MX 10  yaguma.com.
      IN     A      219.111.9.211
ns    IN     A      219.111.9.211
www   IN     A      219.111.9.211

wan側逆引きファイルはISPから権限委譲されていないので書いていません.逆引きを設定したとしても
# nslookup 219.111.9.211
Server: 127.0.0.1
Address: 127.0.0.1#53
11.9.111.219.in-addr.arpa name = 211.9.111.219.st.excite.co.jp.
という結果で正確な逆引きはできません.

謝辞 上記の設定に際して以下のHPを参考にさせていただきました.
おいでんさんホームページ http://www.oiden.net/
Dream-Seedさんホームページ http://www.dream-seed.com/


Copyright 2002-2003 Kai All Rights Reserved & This site is Link Free 戻る