Misc/内部用DNSサーバー構築

2017-06-14 (水) 06:49:17 (157d)

内部用DNSサーバー作成だが、普通に作成すれば権限委譲されていないので問題なく内部用DNSサーバーとして仕様できる。

BINDの入手

ISC BIND

$ wget http://ftp.isc.org/isc/bind9/9.3.2/bind-9.3.2.tar.gz

BINDのインストール

$ tar xzvf bind-9.3.2.tar.gz
$ cd bind-9.3.2
$ ./configure
$ make
$ su
# make install

bind用ユーザー作成

# /usr/sbin/groupadd named
# /usr/sbin/useradd -g named -d /var/named -s /bin/false named

設定ファイル作成前準備

いらないファイルが useradd で配置されるはずなので削除

# cd /var/named
# rm -rf *
# rm -rf .*

設定ファイルの作成

named.ca

$ wget ftp://rs.internic.net/domain/named.root
$ su
# mv named.root /var/named

/usr/local/etc/named.conf

options {
   // zone ファイルの格納場所
   directory "/var/named";
   // BIND の利用を許す範囲を指定
   allow-query {
       // 自分自身( localhost )
       127.0.0.1;
       // 192.168.1.* ( Subnet 255.255.255.0 )
       192.168.1.0/24;
   };
   // スレーブ DNS のアドレスを記述。内向き DNS の場合は必要ないが一応記載。
   allow-transfer {
       // 自分自身( localhost )
       127.0.0.1;
       // 192.168.1.* ( Subnet 255.255.255.0 )
       192.168.1.0/24;
   };
   // 自前で名前解決できないとき、まずはプロバイダの DNS へ聞きに行く様にする。
   forwarders {
       XXX.XXX.XX.XX;  // プロバイダのプライマリ DNS の IP アドレス
       XXX.XXX.XX.XX;  // プロバイダのセカンダリ DNS の IP アドレス
   };
};

// ルート DNS の情報
zone "." {
   // ルート DNS の情報である事を明示
   type hint;
   // ファイル名
   file "named.ca";
};

// localhost の正引きの設定
zone "localhost" {
   // Master DNS Serverであることを示す
   type master;
   // ファイル名
   file "localhost.zone";
};

// localhost の逆引きの設定
zone "0.0.127.in-addr.arpa" {
   // Master DNS Serverであることを明示
   type master;
   // ファイル名
   file "0.0.127.in-addr.arpa";
};

// xx.net の正引きの設定(内部用ドメイン)
zone "xx.net" {
   // Master DNS Serverであることを明示
   // 内部から *.xx.net を引いたときにきちんと見えるよう設定
   type master;
   // ファイル名
   file "xx.net";
};

// 192.168.1.* の逆引きの設定
zone "1.168.192.in-addr.arpa" {
   // Master DNS Serverであることを明示
   type master;
   // ファイル名
   file "1.168.192.in-addr.arpa";
};

// yyy.yy の正引きの設定(DDNSドメイン)
zone "yyy.yy" {
   // Master DNS Serverであることを明示
   // 内部から yyyyyy.yyy.yy を引いたときにきちんと見えるよう設定
   type master;
   // ファイル名
   file "yyy.yy";
};

localhost.zone

$TTL 1D

@  IN  SOA  xxxxx.xx.net.  root.xxxxx.xx.net. (
       2006090300 ; シリアル番号
       3H
       1H
       1W
       1D )

           IN NS xxxxx.xx.net.
localhost. IN A  127.0.0.1

0.0.127.in-addr.arpa

$TTL  1D

@  IN  SOA  xxxxx.xx.net.  root.xxxxx.xx.net. (
       2006090300
       3H
       1H
       1W
       1D )

       IN  NS  xxxxx.xx.net.
1      IN  PTR localhost.

xx.net(内部用設定ファイル)

$TTL  1D

@  IN  SOA  xxxxx.xx.net.  root.xxxxx.xx.net. (
       2006090300
       3H
       1H
       1W
       1D )

            IN  NS      xxxxx.xx.net.
            IN  MX  10  xxxxx.xx.net. ; メールサーバのホスト名を指定
                                      ; 10 は優先順位。

router      IN  A       192.168.1.1
xxxxx       IN  A       192.168.1.10
xx.net      IN  A       192.168.1.10
chrono      IN  A       192.168.1.3

dns         IN  CNAME   sigel
www         IN  CNAME   sigel
smtp        IN  CNAME   sigel
pop         IN  CNAME   sigel

1.168.192.in-addr.arpa

$TTL  1D

@     IN  SOA  xxxxx.xx.net.  root.xxxxx.xx.net. (
      2006090300
      3H
      1H
      1W
      1D )

      IN  NS  xxxxx.xx.net.

           IN  PTR   xx.net.       ; 解決するドメイン
           IN  A     255.255.255.0 ; サブネットマスク

1          IN  PTR   router.xx.net.
10         IN  PTR   sigel.xx.net.
2          IN  PTR   chrono.xx.net.

yyy.yy(DDNSドメイン設定ファイル)

$TTL  1D

@  IN  SOA  yyyyy.yyy.yy.  root.yyyyyy.yyy.yy. (
       2006090300
       3H
       1H
       1W
       1D )

          IN  NS      yyyyyy.yyy.yy.
yyyyyy    IN  A       192.168.1.10

named.pidを作成可能にする

$ su
# chmod 777 /var/run

他のデーモン等が作成する pid ファイルは他ユーザーが書き込みできなくなっているようなのでこれで対応

自動起動設定

もともと入っていたパッケージ版bindの起動スクリプトを流用
起動スクリプトへのリンクは既にできているのでそのまま使う細かいことは気にしない(ぉ

  • /etc/init.d/named
#!/bin/bash
#
# named           This shell script takes care of starting and stopping
#                 named (BIND DNS server).
#
# chkconfig: - 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.
[ -r /etc/sysconfig/network ] && . /etc/sysconfig/network

# Check that networking is up.
[ "${NETWORKING}" = "no" ] && exit 0

# Source bind configuration
[ -r /etc/sysconfig/named ] && . /etc/sysconfig/named

[ -f /usr/local/sbin/named ] || exit 0
[ -r /etc/named.conf ] || exit 0

RETVAL=0
prog="named"

start() {
        # Start daemons.
        echo -n $"Starting $prog: "
        daemon /usr/local/sbin/named -u named ${OPTIONS}
   RETVAL=$?
   [ $RETVAL -eq 0 ] && touch /var/lock/subsys/named
   echo
   return $RETVAL
}
stop() {
        # Stop daemons.
        echo -n $"Shutting down $prog: "
#  /usr/sbin/rndc stop
        killproc named
   RETVAL=$?
   [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/named
        echo
   return $RETVAL
}
restart() {
   stop
   sleep 2
   start
}  

# See how we were called.
case "$1" in
   start)
       start
       ;;
   stop)
       stop
       ;;
   restart)
       restart
       ;;
   condrestart)
       [ -f /var/lock/subsys/named ] && restart || :
       ;;
   *)
           echo "Usage: named {start|stop|restart|condrestart}"
       exit 1
esac

exit $?

その他のファイルの設定

/etc/hosts

DNS サーバの情報と hosts の情報が不整合を起こさない為に localhost 以外はコメントアウト

/etc/resolv.conf

search          xx.net
nameserver      127.0.0.1
nameserver      プロバイダのDNSサーバー

/etc/nsswitch.conf

hostsの行にdnsが含まれていること

hosts:      files nisplus nis dns

/etc/host.conf

order hosts,bind

DDNSセットアップ

DDNSセットアップ

参考サイト


注意)このバージョンのsafariではjavascriptがうまく動作しないので、recaptchaはページ切り替え版を利用しています。
リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS