DNSサーバの予備知識
- マスターサーバ(プライマリーサーバ)
自社でドメインを構築する際にまず必要なのはこのマスターサーバになります。
マスターサーバ上にのみオリジナルのゾーンデータが存在します。
マスターサーバ上にのみオリジナルのゾーンデータが存在します。
- スレーブサーバ(セカンダリサーバ)
バックアップ用のネームサーバです。
マスターサーバからゾーンデータをコピーして稼動します。
スレーブサーバは何台あってもかまいません。
事務所が複数ある場合などは各地にスレーブサーバを置いてDNSの付加を分散させるようなこともできます。
マスターサーバからゾーンデータをコピーして稼動します。
スレーブサーバは何台あってもかまいません。
事務所が複数ある場合などは各地にスレーブサーバを置いてDNSの付加を分散させるようなこともできます。
- キャッシングサーバ
キャッシングサーバは自分ではゾーンデータを持ちません。
ユーザのクエリを受けて自分から問い合わせに行きますが、
他のネームサーバから問い合わせを受けることはありません。
マスターやスレーブが外部に対して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