takt@Wiki

DNS

最終更新:

匿名ユーザー

- view
だれでも歓迎! 編集

DNSサーバの予備知識


  • マスターサーバ(プライマリーサーバ)
自社でドメインを構築する際にまず必要なのはこのマスターサーバになります。
マスターサーバ上にのみオリジナルのゾーンデータが存在します。

  • スレーブサーバ(セカンダリサーバ)
バックアップ用のネームサーバです。
マスターサーバからゾーンデータをコピーして稼動します。
スレーブサーバは何台あってもかまいません。
事務所が複数ある場合などは各地にスレーブサーバを置いてDNSの付加を分散させるようなこともできます。

  • キャッシングサーバ
キャッシングサーバは自分ではゾーンデータを持ちません。
ユーザのクエリを受けて自分から問い合わせに行きますが、
他のネームサーバから問い合わせを受けることはありません。
マスターやスレーブが外部に対してDNSサービスを提供するのと比べて、
キャッシングサーバは内部のDNSを使うユーザに対して提供されます。
一度問い合わせた情報はサーバ内のキャッシュに保存し、
次に同じ問い合わせが来たときには高速に返答を返すことができます。
キャッシングサーバの名前の由来はここにあります。



DNS install


ファイルの取得
#wget ftp.isc.org/bind/bind-9.3.1.tar.gz
#cd /isc/bind9/9.3.1/bind-9.3.1.tar.gz

インストール
#tar xvfz bind-9.2.2.tar.gz
#cd bind-9.2.2
#./configure
#make
#make install

ユーザーの追加
#useradd -d /var/named -s /bin/false named

キーの生成
#cd /var/named
#dnssec-keygen -a hmac-md5 -b 128 -n user rndc 

キーファイル確認
#more /etc/rndc.key

/etc/rndc.confにkeyを記述
#vi /etc/rndc.conf

options {
   default-server localhost;
   default-key rndc_key;
};

server localhost {
   key rndc_key;
};

# keyファイルをインクルード
include "/etc/rndc.key";


named.confの編集
#/etc/named.conf

options {
   directory "/var/named";
   pid-file "/var/run/named/named.pid";
   allow-transfer { none; };

   allow-query {
     127.0.0.1;
     192.168.0.0/24;
   }

   allow-transfer {
     127.0.0.1;
     192.168.0.0/24;
   }

   forward first;
   forwarders {
     143.90.130.165;
     143.90.130.35;
   }

   version "DNS Server";

//  query-source address * port 53;

};

// 
// a caching only nameserver config
// 
controls {
   inet 127.0.0.1 allow { localhost; } keys { rndc_key; };
};

zone "." IN {
   type hint;
   file "named.ca";
};

zone "localhost" IN {
   type master;
   file "localhost.zone";
   allow-update { none; };
};

zone "0.0.127.in-addr.arpa" IN {
   type master;
   file "localhost.rev";
   allow-update { none; };
};

# keyファイルをインクルード
include "/etc/rndc.key";


PID用ディレクトリ生成
#mkdir /var/run/named/
#chown named.named /var/run/named/

ルートゾーン作成
#/usr/local/bin/dig @e.root-servers.net . ns > /var/named/named.ca

BIND起動
#/usr/local/sbin/named -u named

キャッシングサーバが完了

起動スクリプト作成
#!/bin/sh
#
# named           This shell script takes care of startin g 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
# securlevel: 40
# 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 /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
        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" option is not suppoted yet in bind-9.1.3.
        #if [ -f /etc/rndc.conf ] ; then
        #       /usr/sbin/rndc -s localhost status || status named
        #else
        #       status named
        #fi
        status named
        exit $?
        ;;
  restart)
        #/usr/sbin/rndc restart  ## current rndc doesn't support "restart".
        $0 stop
        $0 start
        exit $?
        ;;
  reload)
        /usr/sbin/rndc reload > /dev/null 2>&1 || killall -HUP named
        exit $?
        ;;
  probe)
        # named knows how to reload intelligently; we don't want linuxconf
        # to offer to restart every time
        /usr/sbin/rndc reload >/dev/null 2>&1 || echo start
        exit 0
        ;;

  *)
        echo "Usage: named {start|stop|status|restart}"
        exit 1
esac

exit 0



#DNSの参照を決めるファイルは
/etc/resolv.conf
#nameserver 192.168.0.2
#search localdomain


#hostsとdnsの優先順位を決めるファイルは
/etc/host.conf→/etc/nsswitch.conf

#127.0.0.1     localhost.localdomain localhost


#hosts:        files nisplus nis dns


# digコマンドなどでルート情報が見れるか確認
# 成功例

[root@localhost etc]# dig

; <<>> DiG 9.3.1 <<>>
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20186
;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13

;; QUESTION SECTION:
;.                              IN      NS

;; ANSWER SECTION:
.                       188703  IN      NS      D.ROOT-SERVERS.NET.
.                       188703  IN      NS      E.ROOT-SERVERS.NET.
.                       188703  IN      NS      F.ROOT-SERVERS.NET.
.                       188703  IN      NS      G.ROOT-SERVERS.NET.
.                       188703  IN      NS      H.ROOT-SERVERS.NET.
.                       188703  IN      NS      I.ROOT-SERVERS.NET.
.                       188703  IN      NS      J.ROOT-SERVERS.NET.
.                       188703  IN      NS      K.ROOT-SERVERS.NET.
.                       188703  IN      NS      L.ROOT-SERVERS.NET.
.                       188703  IN      NS      M.ROOT-SERVERS.NET.
.                       188703  IN      NS      A.ROOT-SERVERS.NET.
.                       188703  IN      NS      B.ROOT-SERVERS.NET.
.                       188703  IN      NS      C.ROOT-SERVERS.NET.

;; ADDITIONAL SECTION:
A.ROOT-SERVERS.NET.     275103  IN      A       198.41.0.4
B.ROOT-SERVERS.NET.     275103  IN      A       192.228.79.201
C.ROOT-SERVERS.NET.     275103  IN      A       192.33.4.12
D.ROOT-SERVERS.NET.     275103  IN      A       128.8.10.90
E.ROOT-SERVERS.NET.     275103  IN      A       192.203.230.10
F.ROOT-SERVERS.NET.     275103  IN      A       192.5.5.241
G.ROOT-SERVERS.NET.     275103  IN      A       192.112.36.4
H.ROOT-SERVERS.NET.     275103  IN      A       128.63.2.53
I.ROOT-SERVERS.NET.     275103  IN      A       192.36.148.17
J.ROOT-SERVERS.NET.     275103  IN      A       192.58.128.30
K.ROOT-SERVERS.NET.     275103  IN      A       193.0.14.129
L.ROOT-SERVERS.NET.     275103  IN      A       198.32.64.12
M.ROOT-SERVERS.NET.     275103  IN      A       202.12.27.33

;; Query time: 4 msec
;; SERVER: 192.168.0.2#53(192.168.0.2)
;; WHEN: Wed Apr 13 10:40:52 2005
;; MSG SIZE  rcvd: 436


# クライアントがWINDOWSの時はnslookupコマンド

# 成功例
C:\>nslookup -q=NS .
Server:  dns.localdomain
Address:  192.168.0.2

Non-authoritative answer:
(root)  nameserver = G.ROOT-SERVERS.NET
(root)  nameserver = H.ROOT-SERVERS.NET
(root)  nameserver = I.ROOT-SERVERS.NET
(root)  nameserver = J.ROOT-SERVERS.NET
(root)  nameserver = K.ROOT-SERVERS.NET
(root)  nameserver = L.ROOT-SERVERS.NET
(root)  nameserver = M.ROOT-SERVERS.NET
(root)  nameserver = A.ROOT-SERVERS.NET
(root)  nameserver = B.ROOT-SERVERS.NET
(root)  nameserver = C.ROOT-SERVERS.NET
(root)  nameserver = D.ROOT-SERVERS.NET
(root)  nameserver = E.ROOT-SERVERS.NET
(root)  nameserver = F.ROOT-SERVERS.NET

A.ROOT-SERVERS.NET      internet address = 198.41.0.4
B.ROOT-SERVERS.NET      internet address = 192.228.79.201
C.ROOT-SERVERS.NET      internet address = 192.33.4.12
D.ROOT-SERVERS.NET      internet address = 128.8.10.90
E.ROOT-SERVERS.NET      internet address = 192.203.230.10
F.ROOT-SERVERS.NET      internet address = 192.5.5.241
G.ROOT-SERVERS.NET      internet address = 192.112.36.4
H.ROOT-SERVERS.NET      internet address = 128.63.2.53
I.ROOT-SERVERS.NET      internet address = 192.36.148.17
J.ROOT-SERVERS.NET      internet address = 192.58.128.30
K.ROOT-SERVERS.NET      internet address = 193.0.14.129
L.ROOT-SERVERS.NET      internet address = 198.32.64.12
M.ROOT-SERVERS.NET      internet address = 202.12.27.33


# マスターサーバー設定
#vi /etc/named.conf

zone "localdomain" IN {
    type master;
    file "localdomain.zone";
    allow-update { none; };
};

zone "0.168.192.in-addr.arpa" IN {
    type master;
    file "localdomain.rev";
    allow-update { none; };
};


#vi localdomain.zone

$TTL 86400
@       IN    SOA  dns.localdomain.  root.localhost. (
        2005041210    ; Serial
        3600          ; Refresh
        3600          ; Retry
        604800        ; Expire
        86400         ; Minimum TTL
)
              IN    NS      dns.localdomain.
              IN    A       192.168.0.2

router        IN    A       192.168.0.1
dns           IN    A       192.168.0.2
mars          IN    A       192.168.0.10
edge          IN    A       192.168.0.20
neptune       IN    A       192.168.0.30
venus         IN    A       192.168.0.40
server2003    IN    A       192.168.0.60
nemesis       IN    A       192.168.0.90

dhcp          IN    CNAME   dns
www           IN    CNAME   edge
fileserver    IN    CNAME   mars
megamail      IN    CNAME   venus


#vi localdomain.rev

$TTL 86400
@       IN    SOA  dns.localdomain.  root.localhost. (
        2005041211    ; Serial
        3600          ; Refresh
        3600          ; Retry
        604800        ; Expire
        86400         ; Minimum TTL
)
        IN    NS      dns.localdomain.
        IN    A       255.255.255.0
        IN    PTR     localdomain.

1       IN    PTR     router.localdomain.
2       IN    PTR     dns.localdomain.
10      IN    PTR     mars.localdomain.
20      IN    PTR     edge.localdomain.
30      IN    PTR     neptune.localdomain.
40      IN    PTR     venus.localdomain.
60      IN    PTR     server2003.localdomain.
90      IN    PTR     nemesis.localdomain.


namedの再起動
#service named restart

www.yahoo.co.jpなどで確認
#ping www.yahool.co.jp

# 参考ファイル
/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/hosts
/etc/resolv.conf

タグ:

+ タグ編集
  • タグ:
ウィキ募集バナー