logo Technical Power
HOME | Index | Blog | BBS | About
TIPS INDEX
djbdnsとは
DNSの仕組み
スキーム
各プログラムの説明

Network設計

インストール
    dnscache (DNS の Resolve & Cache)
    tinydns (NS 応答一般)
    axfrdns (DNS,TCP応答 & 委譲,ゾーン転送)

運用・管理

よくある間違い

(参考)逆引き

参考文献
djbdnsとは
DNSにある機能を、各動作毎に分割したプログラム群です。
DNSには大別して2つの機能があります。

  1. 外部へ名前解決(Resolver:リゾルバ)
  2. 自身が管理している資源への問い合わせ回答(Name Server)

bindでは、この2つの機能が1つのプログラムに入っている為か、
クリティカルなbugが数多く発見されており、その bug を塞ぐパッチの公開に関しても黒いです。

また、設定する際の記述がわかりにくく、設定ミスもしやすいでしょう。

djbdnsは、このDNSの2つの機能を完全に分けています。また、プログラムが高速・安全*1であり、 運用・記述・設定・動作がbindに比べ、とてもわかりやすくなっています。

DNSの仕組み
名前解決の仕組み(再帰問い合わせ と 名前解決)

外部ドメイン解決(Resolver:リゾルバ) 外部ドメイン名解決の為、再帰問い合わせ(Recursive)を行う。
依頼を受けたDNSサーバが 外部へ何度も問い合わせをし、名前解決の結果をクライアントに返す。 この際、キャッシュ(名前解決の結果を保存)しておき、同じ問い合わせに関しては即答する。
資源ドメイン解決(Name Server)
自分が管理する資源の名前解決(Name Server)
問い合わせに対して、自分が管理するドメインネーム、もしくはIPアドレスを返す。 コンテンツサーバ*2とも言うらしい。


マスターとスレーブの違い
マスター ドメイン情報の最新を持っているサーバ。親。データ更新する際はこのサーバ上のデータを弄る。
また、データを更新した際は、シリアル番号を前の物より大きくする。
スレーブ ドメイン情報のコピーを持つサーバ。子。データ更新はゾーン転送(TCP:53)にて行われる。
マスターが持つシリアル番号を定期的に問い合わせし、自分のシリアル番号と比較する。
自分が古い番号であれば、マスターに最新データを要求し、更新して同期する。


スレーブの同期(ゾーン転送)



プライマリとセカンダリの違い
    例えば、xa10.comのネームサーバ(NS)は、ns1.xa10.com、ns2.xa10comとします。

    DNSにwww.xa10.comを問い合わせすると、どちらか片方に問い合わせをして解決します。
    どちらに問い合わせるかは、基本的にラウンドロビンもしくはランダムと考えてください。

    このような仕組みの為、プライマリ・セカンダリというよりも、
    プライマリ・プライマリと言う方が的を射ています。

    また、問い合わせに応答しないDNSがある場合は、別のDNSに問い合わせします。



SOAレコード情報
シリアル番号 同期用(ゾーン転送)に使います。データサイズは32bitであり、データサイズよりも大きな値を設定すると同期を失敗します。
リフレッシュ間隔 ゾーン更新確認間隔を指定します。長すぎると同期までのタイムラグが増大し、短過ぎるとマスターへのDOSアタックに変わります。
リトライ間隔 ゾーン転送失敗時、再度ゾーン転送を試みる時間の設定です。上のリフレッシュ間隔より短い時間を指定します。
ゾーン有効期限 ゾーン転送が止まるなどして、スレーブに保存されたデータがこの時間を経過した場合は、当該ゾーンへの問い合わせ要求に返答しなくなります。   古い内容を返すより、返答そのものをしない方がいいという考えだそうです。1週間程度を指定する事が多いようです
ネガティブキャッシュTTL 存在しない、失敗した、という結果をキャッシュする時間。
リフレッシュ時間は86400secが設定される事が多く、問い合わせで存在しなかった場合、「存在しない」という情報がリフレッシュ間隔である86400secキャッシュされてしまう。 その為、存在しない場合は、早く問い合わせさせる為に、別途このような時間指定がある
スキーム
各プログラムと役割
ProgramPort役割
tinydnsudp:53自己資源の名前解決。ドメイン運用管理する際に利用する。
resolver
axfrdnstcp:53tcpでの名前解決担当。
ゾーン転送やDNSメッセージに512bytes以上必用な場合はTCPが利用される
dnscacheudp:53名前解決代行。ユーザー側からDNSサーバと言われている役目はコレ。
recersive&cache

相関図




Port



各プログラムの説明
tinydns
    ドメインを運用する際に利用します。利用ポートは、UDP:53

    SOAレコード応答内の管理者宛先は決まっていて、 hostmaster@自分の資源管理ドメイン名 です。 これは変更可能ですが、特に変更する必用は無いはずです。

    FQDNは、Fully Qualified Domain Name の略で、ホスト名を含む、www.xa10.com等を指します。
    xa10.com はドメイン名、wwwはホスト名、ドメイン名+ホスト名のwww.xa10.comはFQDNです。


axfrdns
    tinydnsと同様に独自ドメインを運用する際に利用します。利用ポートは、TCP:53

    参照しているDBは、tinydnsで設定した物と同じです。参照→スキーム

    DNSの仕組みとして、外部へのDNSサーバへゾーン転送(セカンダリ)をする場合、もしくは返答するレコードデータが大きい場合にTCPを利用します。

    ゾーン転送先がbindでなく、tinydnsであれば、rsyncを用いた方が良いとされています。


dnscache
    DNSの再帰問い合わせ(Recursive)を行い、その情報をcacheをします。利用ポートは、UDP:53
    bindに比べて高速であるらしい。この辺りは各自実験して下さい。

    独自ドメインを運用しないのであれば、このdaemonのみの運用になります。


Network設計
  • 外部からのMyドメイン解決を行う tinydns, (axfrdns)
  • 内部からのDNS問い合わせを解決する。dnscache
  • 内部からMyドメイン解決の場合は、ローカルIPを返す。
  • 192.168.1.20 が tinydns
  • 192.168.1.21 が dnscache
    (同一インターフェースに複数のIPアドレスを設定する方法についてはipaliasを参照)


    論理構成図

    実際の構成図
インストール
daemontools と ucspi-tcp のインストールが必用。
後に、djbdns をインストールする。

FreeBSDなら、portsからdjbdnsをmakeすれば、関連する物すべてがinstallされる。

ソースファイル

  • ucspi-tcp-0.88.tar.gz
  • daemontools-0.76.tar.gz
  • djbdns-1.05.tar.gz

Lunux等でsrcからのmakeとINSTALLする手順

# md /usr/djbdns
# cd /usr/djbdns

# wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
# wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
# wget http://cr.yp.to/djbdns/djbdns-1.05.tar.gz

# tar xvzf ucspi-tcp-0.88.tar.gz
# tar xvzf daemontools-0.76.tar.gz
# tar xvzf djbdns-1.05.tar.gz

# cd djbdns-1.05
# make
# make setup check	djbdns 完了

# cd ../ucspi-tcp-0.88
# make
# make setup check	ucspi 完了

# cd ../admin/daemontools-0.76
# package/install	daemontools 完了

また、各プログラム別にユーザーが必用であるので、この時点で作っておきます。
なおlogは、mutlilogを使用しています。

    Program 実行User 所属Group log-User
    dnscache dnscache djb dnslog
    tinydns tinydns djb dnslog
    axfrdns axfrdns djb dnslog
    multilog dnslog djb -

これらのユーザはログインする事はありません。FreeBSDであればnologinで制限をかけましょう

登録したグループ
# grep djb /etc/group	
djb:*:70:

登録したユーザ
# grep djbdns /etc/passwd
dnscache:*:40:70:djbdns_dnscache:/nonexistent:/sbin/nologin
tinydns:*:41:70:djbdns_tinydns:/nonexistent:/sbin/nologin
axfrdns:*:42:70:djbdns_axfrdns:/nonexistent:/sbin/nologin
dnslog:*:45:70:djbdns_dnslog:/nonexistent:/sbin/nologin
dnscacheの設定
サーバ自身の解決もdnscache経由にする為、/etc/resolv.confに自分のアドレスを追加します。

resolv.confの内容

dnscacheサーバIPを指定
# more resolv.conf
nameserver      192.168.1.21
ユーザーが設定済みであれば、付属のConfigコマンドで設定が可能。

インストール+基本設定

dnscache-conf {実行user} {log-user} {install-Dir} {稼働IP}
# dnscache-conf dnscache dnslog /etc/dnscache 192.168.1.21
詳細設定は、{install-Dir} 内部のファイルで行う。

詳細設定

192.168.*.* からの問い合わせを受け付ける
# cd /etc/dnscache/root/ip
# touch 192.168	

127.0.0.1 からの問い合わせを受け付ける
# touch 127.0.0.1


*.xa10.com は、192.168.1.20 (tinydns) に問い合わせる。
# cd /etc/dnscache/root/servers
# echo 192.168.1.20 > xa10.com

192.168.1.* の逆引きは、192.168.1.20 (tinydns) に問い合わせる。
# echo 192.168.1.20 > .1.168.192.in-addr.arpa

210.253.232.80 の逆引きは、192.168.1.20 (tinydns) に問い合わせる。
# echo 192.168.1.20 > .80.232.253.210.in-addr.arpa
各フォルダとファイルの意味。
    Dir Name File-Name Description
    env CACHESIZE Cacheのサイズ。デフォルト 1,000,000 bytes
    DATALIMIT キャッシュに生存させる時間。デフォルト 3,000,000 sec ≒ 83 h
    IP dnscacheが動作するIPアドレス。(=dnschache-conf の {稼働IP})
    IPSEND ? 0.0.0.0
    ROOT ./dnscahce/root がどこにあるのか記述されている
    Dir Name File-Name Description
    root ip 許可するIPアドレスをファイル名にする
    servers 直接問い合わせ先サーバを記述。
    ファイル名でドメイン指定、中に問い合わせ先を記述
    Name File or Dir Description
    seed File ランダム関数を生成する初期値だと思われる。
    run File* dnscache起動スクリプト
    supervise Dir 現在実行している状況が記述されている。
    log Dir daemontools の multilog を参照。

Tree figure

./dscache
    │
    ├-env		各ファイルの詳細は上記
    │ ├-CACHESIZE
    │ ├-DATALIMIT
    │ ├-IP
    │ ├-IPSEND
    │ └-ROOT
    │
    ├-log[+]	log用フォルダ
    │
    ├-root
    │ ├-ip	利用許可するipをファイル名で登録
    │ └-servers	ドメインの直接問い合わせ先指定
    │
    ├-run		dnscache起動スクリプト
    ├-seed
    └-supervise[+]
動作確認

    確認に、 nsloolup を利用しました。もちろんdigでもOK
    以下の方法で動作確認します。

dnscacheをsvscanへ登録する。
まだsvscanを稼働してない場合は、Installし稼働させてください。 参照 daemontools

# ln -s /etc/dnscache /var/service

dnscacheが立ち上がっているかの確認
# svstat /var/service/dnscache	
/service/dnscache: up (pid 72081) 23 seconds

dnscacheの動作確認

試しに、yahooを問い合わせ。

# nslookup
dnscacheを立ち上げたIPを指定して問い合わせ
> server 192.168.1.21
Default Server:  dnscache.xa10.com
Address:  192.168.1.21


> www.yahoo.co.jp
Server:  dnscache.xa10.com
Address:  192.168.1.21	---(1)

Non-authoritative answer:	---(2)
Name:    www.yahoo.co.jp	---(3)
Addresses:  210.81.150.5, 211.14.15.5	---(4)

(1) dnscache(192.168.1.21) から、応答があって
(2) 192.168.1.21は、yahoo.co.jpのSOA(資産管理権限)は無いけども、
(3) www.yahoo.co.jp は、
(4) 210.81.150.5 もしくは、211.14.15.5 である、と解決できている。
tinydnsの設定
ユーザーが設定済みであれば、付属のConfigコマンドで設定が可能。

設定

tinydns-conf {実行user} {log-user} {install-Dir} {稼働IP}
# tinydns-conf tinydns dnslog /etc/dnscache 192.168.1.20
詳細設定は、{install-Dir} 内部のファイルで行う。

環境設定

# cd /etc/tinydns
# cd root

xa10.com の DNSサーバは aaa.bbb.ccc.ddd
# ./add-ns xa10.com aaa.bbb.ccc.ddd

aaa.bbb.ccc. の逆引きDNSは、aaa.bbb.ccc.ddd
# ./add-ns ccc.bbb.aaa.in-addr.arpa aaa.bbb.ccc.ddd
各フォルダとファイルの意味。

    Dir Name File-Name Description
    env IP dnscacheが動作するIPアドレス。
    ROOT ./tinydns/root がどこにあるのか記述されている
    Dir Name File-Name Description
    root data TXT型のDNSデータベース 同フォルダにてmakeするとして data.cdb となる
    add-ns 名前解決を聞くサーバを記述。(NSレコード) data 追記される
    add-host ドメインネームと、それに対応するIPアドレスを data に追記
    add-mx Mailサーバ のIPアドレスを登録
    add-childns 子ドメインの登録。解決先を指定
    add-alias CNAMEと同じ扱い。逆引き不可
    Name File or Dir Description
    seed File ランダム関数を生成する初期値だと思われる。
    supervise Dir 現在実行している状況が記述されている。
    log Dir daemontools の multilog を参照。

    Tree figure
    
    ./tinydns
       ├-env		各ファイルの詳細は上記
       │  ├-IP
       │  └-ROOT
       │
       ├-log[+]	log用フォルダ
       │
       ├-root		詳細は上記参照
       │  ├-Makefile
       │  ├-add-alias
       │  ├-add-childns
       │  ├-add-host
       │  ├-add-mx
       │  ├-add-ns
       │  └-data
       │
       ├-run		tinydns起動スクリプト
       ├-seed
       └-supervise[+]
    
    
dnsへ登録

    ./add-ns等のツールが用意されていますが、使わない方が良いです。
    ここにサンプルと記述例を示すので、それを参考にviで直接dataを弄ったほうが良いでしょう。

    理由は以下の通りです。

    例えば、ns.xa10.comをSOAのNSとして登録したいと思います。

    しかし./add-ns ns.xa10.com 210.253.232.80 と実行すると、勝手に a.ns.xa10.comと登録されます
    再度登録すると、b.ns.xa10.com と登録されます。

    つまり、勝手にaやbを頭に付けてくれます。余計なお世話ですね。

dataに追記等した後は、必ずmakeをする。そうしないとdata.cdbに反映されません。
変更した後は、svc -t /var/service/tinydns のコマンドを入れ、再起動させます。
※実際には再起動させなくてもmakeのみで反映されるようです。

tinydnsは、NS(SOA)が設定されていないレコード情報は返しません。

例えば、example.com のNSレコードが登録されていないと、
Aレコードwww.example.com:192.168.0.100を登録しても、Aレコードを返してくれません。

dataサンプル

#----------------------------------------------------------------
# Grouping
# %{Group}:{IP}
#----------------------------------------------------------------
# 192.168.*と172.16.*と127.0.01はグループluに所属する例
%lu:192.168
%lu:172.16
%lu:127.0.0.1

# 上記以外 (記述無しの場合は指定された物以外の全て)
%ex:



#----------------------------------------------------------------
# NSレコード(SOA) (PTR同時生成)
# .{domain}:{ip}:{NameServer}:{ttl}:{timestamp}:{lo}
#----------------------------------------------------------------
# グループluからの問い合わせ返答レコード
.xa10.com:192.168.1.20:ns.xa10.com:86400::lu

# グループexからの問い合わせ返答レコード
.xa10.com:210.253.232.209:ns.xa10.com:86400::ex

# セカンダリDNS ns.example.com の指定 (委託先が自分の管轄で無い場合IPは無くて良い)
.xa10.com::robin.kurou.com:::ex

# 逆引き用
.209.232.253.210.in-addr.arpa::ns.xa10.com
.168.192.in-addr.arpa::ns.xa10.com:::lu

# いずれのレコードもTTL以降は省略可能




#----------------------------------------------------------------
# Aレコード (PTR同時生成)
# {=fqdn}:{ip}:{ttl}:{timestamp}:{lo}
#----------------------------------------------------------------
=router.xa10.com:192.168.1.254:300::lu
=www.xa10.com:192.168.1.20:300::lu
=alice.xa10.com:192.168.1.20:300::lu
=alice2.xa10.com:192.168.1.21:300::lu
=a30.xa10.com:192.168.1.40:300::lu

# IPのみ変えて複数行登録することで、負荷分散も可能
# 負荷分散サンプル
#=www.xa10.com:192.168.1.20:300::lu
#=www.xa10.com:192.168.1.21:300::lu
#=www.xa10.com:192.168.1.22:300::lu


#----------------------------------------------------------------
# CNAMEレコード (PTRレコード生成なし) 
# +{fqdn}:{ip}:{ttl}:{timestamp}:{lo}
#----------------------------------------------------------------
+*.xa10.com:210.253.232.80:300::ex
+*.xa10.com:192.168.1.20:300::lu

# ワイルドカード*も使用可能。ロンゲストマッチ方式


#----------------------------------------------------------------
# MXレコード (Aレコード同時生成)
# @{fqdn}:{ip-address}:{Mailserver}:{distance}:{ttl}:{timestamp}:{lo}
#----------------------------------------------------------------
@xa10.com:192.168.1.20:mail.xa10.com:0:300::lu
@xa10.com:210.253.232.209:mail.xa10.com:0:300::ex

{distance}がMail送信先の優先値。大きい数字を優先する




#
#
#=================================================================
# あまり使わないコード
#


#----------------------------------------------------------------
# PTRレコード
#  ^{fqdn}:{p}:{ttl}:{timestamp}:{lo}
#
#   p   PTRを問い合わせた際に返答するドメイン名
#----------------------------------------------------------------
#^80.232.253.210.in-addr.arpa:dns1.xa10.com:300


#----------------------------------------------------------------
# SOAレコード (様々なSOAの値を独自設定して使いたい人用)
#  Z{fqdn}:{mname}:{rname}:{ser}:{ref}:{ret}:{exp}:{min}:{ttl}:{timestamp}:{lo}
#
#   mname プライマリネームサーバ(FQDN)
#   rname 連絡用メールアドレス
#         hoge@example.comならば hoge.exapmle.com と@を.として記述する
#         デフォルト値 hostmaster?
#   ser   シリアル番号 デフォルト値 ファイル更新日時
#   ref   リフレッシュ間隔 デフォルト値 16384 sec
#   ret   リトライ間隔 デフォルト値 2048 sec
#   exp   有効期間 デフォルト値 1048576 sec
#   min   最低有効期間 デフォルト値 2560 sec
#----------------------------------------------------------------
#Zwww.xa10.com:ns1.xa10.com:hostmaster.xa10.com::::::300


#----------------------------------------------------------------
# 移譲NSレコード
#  &{fqdn}:{ip}:{x}:{ttl}:{timestamp}:{lo}
#
#   fqdn   委譲するドメイン
#   ip     委譲するネームサーバのIPアドレス
#   x      委譲するネームサーバのドメイン名
#----------------------------------------------------------------
#&another.xa10.com:1.2.3.4:ns.another.xa10.com:300::
{ttl} について*3
external TAI64 timestamp 形式で記述

+www.heaven.af.mil:1.2.3.4:0:4000000038af1379
+www.heaven.af.mil:1.2.3.7::4000000038af1379

www.heaven.af.mil が 4000000038af1379 (2000-02-19 22:04:31 UTC) までは
1.2.3.4 というアドレスを持ち、以降は IP アドレス 1.2.3.7となる

各レコードの意味
レコード名 正式名称 詳細
SOA Start Of Authority 資源の権限情報。誰が管理しているか、シリアル番号、
リフレッシュタイム、失効時間等の情報
NS Name Server ドメインやFQDNなど、名前解決するサーバの情報
nsを設定するとSOAも設定される
A Address FQDNに対応するIPレコード。1:1の記述をする
bindと違い逆引も同時に設定もされる
CNAME Canonical NAME FQDNに対応するIPレコード。1:nが可能。逆引設定されない
MX Mail eXchanger メールサーバと優先度の情報
PTR PoinTeR IP 1.2.3.4 の問い合わせ 4.3.2.1.in-addr.arpa に対してFQDNを返す。
詳細は(参考)逆引き

data編集後、data.cdbへの反映

# cd /etc/tinydns/root/
# vi data

vi等でdata編集後

# make
`data.cdb' is up to date.
dataの設定確認
tinydns-get を利用して確認

dataディレクトリに移動
# cd /var/service/tinydns/root

luグループの192.168.1.10としてAレコード問い合わせ
# tinydns-get a ns.xa10.com 192.168.1.10
1 ns.xa10.com:
100 bytes, 1+2+2+0 records, response, authoritative, noerror
query: 1 ns.xa10.com
answer: ns.xa10.com 300 A 192.168.1.20
answer: ns.xa10.com 300 A 192.168.1.20
authority: xa10.com 300 NS ns.xa10.com
authority: xa10.com 300 NS lain.kurou.com

ローカルIPで返答している



同様にexグループとして問い合わせ
# tinydns-get a ns.xa10.com 200.200.200.200
1 ns.xa10.com:
84 bytes, 1+1+2+0 records, response, authoritative, noerror
query: 1 ns.xa10.com
answer: ns.xa10.com 300 A 210.253.232.80
authority: xa10.com 300 NS ns.xa10.com
authority: xa10.com 300 NS lain.kurou.com

グローバルIPで返答している
また、nslookup,dig,dnsq 等を利用して直接問い合わせして確認すると良いです。
axfrdnsの設定
TCP用のDNSプログラムです。

tinydnsのDBをそのまま使用し、ゾーン転送等にも使われます。
これはtinydnsと同じIPで動作します。

ユーザーが設定済みであれば、付属のConfigコマンドで設定が可能です。

設定

dnscache-conf {実行user} {log-user} {install-Dir} {tinydns-Dir} {稼働IP}
# axfrdns-conf axfrdns dnslog /etc/axfrdns /etc/tinydns 192.168.1.20
詳細設定は、{install-Dir} 内部のファイルで行います。

転送先、転送許可ゾーンを作成するのにtcpserver(tcprules)を利用しています。
tcpというtextファイルをエディタで調整し、makeでtcp.cdbが生成されます。

詳細設定

# cd /etc/axfrdns
# vi tcp
 ----作業----
# make
File: tcp
# sample line:  1.2.3.4:allow,AXFR="heaven.af.mil/3.2.1.in-addr.arpa"
# IP or ドメインを表記し、その後ろに転送許可ゾーンを記述
# 転送許可するゾーンが複数ある場合は / で区切る

# exapmle.com に、xa10.comゾーンを転送許可
example.com:allow,AXFR="xa10.com"

# 102.201.102.121に、xa10.com、exapmle.com、210.253.232.80逆引きゾーン転送を許可
102.201.102.121:allow,AXFR="xa10.com/example.com/.80.232.253.210.in-addr.arpa"
:deny

各フォルダとファイルの意味。

    Name File-Name Description
    env IP axfrdnsが動作するIPアドレス。
    ROOT ./axfrdns/root がどこにあるのか記述されている
    Name File or Dir Description
    make File* tcp というファイルを元に tcp.cdb を作成する
    tcp File txtファイル。makeで tcp.cdb (binary)となる
    log Dir 実際にフィルタとして使うbinaryファイル。ファイルtcpをmakeする事で生成される

    Tree figure
    
    ./axfrdns
       ├-env		各ファイルの詳細は上記
       │ ├-IP
       │ └-ROOT
       │
       ├-log[+]	log用フォルダ
       │
       ├-make*	tcp.cdbを作り出すスクリプト
       ├-run
       ├-tcp		フィルタリスト(txt型)
       ├-tcp.cdb	フィルタリストをbinary化したもの
       └-supervise[+]
    
動作確認

    svscanに登録後、許可したIPから nslookup の ls -d {ドメイン} で確認する。

    axfrdnsのsvscan登録
    svscanに登録
    # ln -s /etc/axfrdns /service
    
    axfrdnsが立ち上がっているかの確認
    # svstat /service/axfrdns	
    /service/axfrdns: up (pid 72084) 34 seconds
    

    axfrdnsの動作確認
    # nslookup
    axfrdns(tinydns)を立ち上げたIPを指定
    > server 192.168.1.20
    Default Server:  ns.xa10.com
    Address:  192.168.1.20
    
    xa10.com のリスト表示
    > ls -d xa10.com
    [ns.xa10.com]
    $ORIGIN xa10.com.
    @             42m40s IN SOA   ns hostmaster (
                                  1039970474    ; serial
                                  4h33m4s       ; refresh
                                  34m8s         ; retry
                                  1w5d3h16m16s  ; expiry
                                  42m40s )             ; minimum
    
                  5M IN NS        dns
    ns            5M IN A         192.168.1.20
    @             5M IN NS        lain.kurou.com.
    ns            5M IN A         192.168.1.20
    *             5M IN A         192.168.1.20
    
    @             5M IN MX        0 mail
    mail          5M IN A         192.168.1.20
    router        1D IN A         192.168.1.254
    alice         1D IN A         192.168.1.20
    a30           1D IN A         192.168.1.50
    @             42m40s IN SOA   ns hostmaster (
                                  1039970474    ; serial
                                  4h33m4s       ; refresh
                                  34m8s         ; retry
                                  1w5d3h16m16s  ; expiry
                                  42m40s )              ; minimum
    
    
運用・管理
基本はdaemontools(現在改装中)を参照。
IPアドレスの移行時にはTTLを短くし、{timestamp}を利用すると綺麗に移行できます。

daemontoolsを利用する理由

    Programが停止していたら自動で起動してくれます。非常にありがたい機能です。
    稼働当初はcronを利用して定期的にsvstatの結果を自分宛にメールすると良いです。

cronの利用方法(/etc/crontabへ追記)

#djbdns 動作状況を08:00に管理者へメール
0 8 * * *   root   /usr/local/bin/svstat /var/services/* /var/services/*/log/

daemontoolsを調べるのが面倒な方は、svstatコマンドで現在の稼働状況を確認してください。
# svstat /var/services/* /var/services/*/log
/var/service/axfrdns: up (pid 813) 23583809 seconds
/var/service/dnscache: up (pid 814) 23583809 seconds
/var/service/telnetd: up (pid 829) 23583808 seconds
/var/service/tinydns: up (pid 820) 23583809 seconds
/var/service/axfrdns/log: up (pid 819) 23583809 seconds
/var/service/dnscache/log: up (pid 815) 23583809 seconds
/var/service/tinydns/log: up (pid 822) 23583810 seconds
よくある間違い
友人と相互にセカンダリを請け負っている。NSレコードの記述ルールに従ってIPを明記した。
    知人のNSサーバのIPはあなたが解決して良い物ではありません。 友人のドメインを管轄する上位サーバに委託されている物です。 FQDNを記述してIPは無記入にしてください。

    引っ越しやプロバイダ変更で友人のIPアドレスが何時変わるか判りません。友人ドメインのNSレコードのIPは友人がレジストラを通して管理するのです。



SOAやNSレコードのTTLを短くした。
    86400sec(1day)を推奨します。 短すぎると自ドメイン問い合わせするクライアントが頻繁に上位DNSサーバに問い合わせに行きます。 各サイトがそれをやってしまうと上位DNSサーバへのDDoS攻撃と同じになってしまうからです。


AレコードのTTLを短くした。
    どれだけ短くしてもOKです。これは↑のNSレコード問題とは違い、自分のサーバに問い合わせが来ます。もし大手のサイトであれば設定前に増強しておきましょう


レジストラにIPとドメインを登録したので、上位DNSサーバのTTLが有効になるのでは?
    上位サーバはno-autorityです。自サーバはauthorityです。管理権限は自サーバにあります。クライアント側ではauthorityのSOA,NSレコードの各情報で上書きされます。 唯一、自サーバに問い合わせが失敗した場合は、上位サーバのSOAが有効になるのではないでしょうか。


自ドメインにNSを問い合わせると、同じIPを指すNSレコードが複数表示されてしまう
    dataを見直してください。nsレコード作成でAレコードも設定されますので、NSレコードのAレコードを別途登録する必要が在りません。


PTRレコードは必ず設定すべきだ
    普段PTRレコードは利用されません。spam対策でmailサーバチェックに利用されるぐらいです。在った方が親切だとは思います:-)
(参考) 逆引きについて
逆引きとは、IPアドレスから、FQDNが何か解決する為に使います。
AレコードのFQDNからIPを解決するのに対し、全く逆を行うわけです。

IPアドレスは、203.141.131.135 であれば、上位bitである203から探します。

この時、ドメインと同じように探す為、
135.131.141.203.in-addr.arpa という形に置き換えて検索を行っています。

    正引きの順番
      1) ./
      2) .com.
      3) .xa10.com.
      4) www.xa10.com → 210.253.232.209

    逆引きの順番

      .in-addr.arpa:
      .210.in-addr.arpa:
      .253.210.in-addr.arpa:
      .232.253.210.in-addr.arpa:
      209.232.253.210.in-addr.arpa: → www.xa10.com
参考文献
HOME | Index | Blog | BBS | About
Copyright (c) 2006 Technical Power http://www.xa10.com