Directory Services

DNS


ドメインとろーよ!!
DNSの設定する前に、ドメインを取得しましょう。もしかしたら、誰かが使っているかもしれない、てきとーな名前で設定するのは、やめましょう。
ドメイン名の取得と維持にはお金がかかります。どちらも、代行業者を利用すると、便利です。私の場合は、
名づけてねっと
を利用しています。
DNS Server
ここでは、Solaris 8/9に最初っからくっついてくるbind 8.x.xを前提とします。きちんとパッチを当てておきましょう。IPv6を利用しないのであれば、メンテナンスは、もっとも楽(瑕疵が見つかってもパッチ当てですむ(^^;)だと思います。
どーしても、最新版じゃなきゃいやなそこのあなた、または、Linuxなど、他のUNIXを利用しているあなた、ISCから拾ってきて、勝手にbuildしてください。
よし、設定だ!
くわしいことは、雑誌の特集記事や書籍に譲ります。以下の文献をご覧ください。
でもって、簡単な(めんどくさいところはすっ飛ばすんでよろしく)解説。
まず、Dynamic DNSの機能を利用するかしないか、きめましょー
くたばれMicrosoft Windows 2000/2003 ServerのくされActive Directoryを利用する場合には、これを利用すると便利です。
ただし、利用したが最後、メンテナンスは、nsupdateコマンドを利用することになります。(このコマンドの使い方は解説しません)
前提条件
ここで解説する設定は、おうちのネットワークを外部に公開するための設定ではありません。故に、固定IPアドレスや、IPv6を利用して、外部に公開することを企てている場合には、多少、設定を変更する必要があります。詳しくは、ご利用のプロバイダのサービス窓口にお問い合わせください。
また外部のDDNS ServiceとルータのDMZ(か?)機能などを利用して、外部に公開することを企てている場合は、ご自分で解決なさってください。
ディレクトリをほじって、ファイルをつくる
まあ、設定ファイルを置くディレクトリは、どんな名前でもよいのですが、ここでは、以下のようにしておきましょう。
mkdir /etc/YOUR.DOMAIN
cd /etc/YOUR.DOMAIN
でもってここに、
の合計6つのファイルを作成することになります。
named.conf
こんなファイルを作ります。これで、boot.conf以外のファイル名を指定しているので、気にくわなかったら、変えてください。
また、DDNS機能を有効にする場合、ネットワークに属するすべてのクライアントからの変更リクエストを受け付けるのは、考え物です。自分自身と、Windows Active Directory Serverだけぐらいに絞りましょう。
# YOUR.DOMAIN named.conf
options {
directory "/etc/YOUR.DOMAIN";
# プロバイダ指定のname serverはIPアドレスで指定してネ
forwarders { nameserver1; nameserver2; };
};

zone "." in {
type hint;
file "root.cache";
};

zone "localhost" in {
type master;
file "localhost.zone";
};

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

zone "YOUR.DOMAIN" in {
type master;
file "YOUR.DOMAIN.zone";
# DDNS機能を利用するなら...
# allow-update { localhost; adserver1; adserver2; };
};

zone "CCC.BBB.AAA.in-addr.arpa" in {
type master;
file "YOUR.DOMAIN.rev";
# DDNS機能を利用するなら...
# allow-update { localhost; adserver1; adserver2; };
};
なーんか、最近「allow-query AAA.BBB.CCC.0;」でsyntax errorになるみたい。
root.cache
こいつは、本来ならば、InterNICから拾ってくるnamed.rootを使います。が、公開サーバーではないなら、以下の設定になります。
ホスト名の最後に「.」がついていることと、IPアドレスに、そのマシンの実際のアドレスを指定することに注意してください。
; root.cache
99999999 IN NS ns.YOUR.DOMAIN.
ns.YOUR.DOMAIN. 99999999 IN A AAA.BBB.CCC.xxx

Serialの数字の決定
DDNSの機能を利用しないのであれば、YYYYMMDDxxの形式をを利用すると、何時変更したのかが一目瞭然になるので、よいかと思います。なお、最大値は、2147483647(上記形式だと、2147年12月31日までの表現)なので、注意しましょう。また、DDNSの機能を利用するのであれば、0から始めるとよいんじゃないかと。
localhost.zone
まあ、TTLの値や、SOAレコードの中の数字とname serverの名前を除いては、たいてい、同じ内容でしょう...
; localhost.zone
$ORIGIN localhost.
$TTL. 3600
@ IN SOA ns.YOUR.DOMAIN. root.ns.YOUR.DOMAIN.
(YYYYMMDDxx ; Serial
3600 ; Refresh
300 ; Retry
3600000 ; Expiry
86400) ; Minimum

IN NS ns.YOUR.DOMAIN.
localhost. IN A 127.0.0.1

localhost.rev
これも、TTLの値や、SOAレコードの中の数字とname serverの名前を除いては、たいてい、同じ内容でしょう...
; localhost.rev
$ORIGIN 0.0.127.in-addr.arpa.
$TTL. 3600
@ IN SOA ns.YOUR.DOMAIN. root.ns.YOUR.DOMAIN.
(YYYYMMDDxx ; Serial
3600 ; Refresh
300 ; Retry
3600000 ; Expiry
86400) ; Minimum

IN NS ns.YOUR.DOMAIN.
1 IN PTR localhost.

YOUR.DOMAIN.zone
ここでは、name server自身のアドレス登録部分までしか、書きません。他のマシンの情報を追加したりするのは、ご自由にどうぞ。
; YOUR.DOMAIN.zone
$ORIGIN YOUR.DOMAIN.
$TTL. 3600
@ IN SOA ns.YOUR.DOMAIN. root.ns.YOUR.DOMAIN.
(YYYYMMDDxx ; Serial
3600 ; Refresh
300 ; Retry
3600000 ; Expiry
86400) ; Minimum

IN NS ns.YOUR.DOMAIN.
ns IN A AAA.BBB.CCC.xxx

なお、ここに示している、named.confの例で、DDNS機能を有効にするために、コメントをはずした場合は、上記ファイルを手でいじるのは、これが最後になります。いつでも復帰できるように、コピーを残しておきましょう。
また、名づけてねっとなどのURL転送サービスを利用して、www.YOUR.DOMAINなサーバーをホストしている場合は、
www IN CNAME URL転送サービスをしているマシンのFQDN

とか追加しておくとよいかと。CNAMEの先に書くマシン名は、
nslookup www.YOUR.DOMAIN
とでもすれば、出てきます。最後に「.」をつけるの忘れないようにネ!
YOUR.DOMAIN.rev
これも、ame server自身のアドレス登録部分までしか、書きません。他のマシンの情報を追加したりするのは、ご自由にどうぞ。
; YOUR.DOMAIN.rev
$ORIGIN CCC.BBB.AAA.in-addr.arpa.
$TTL. 3600
@ IN SOA ns.YOUR.DOMAIN. root.ns.YOUR.DOMAIN.
(YYYYMMDDxx ; Serial
3600 ; Refresh
300 ; Retry
3600000 ; Expiry
86400) ; Minimum

IN NS ns.YOUR.DOMAIN.
xxx IN PTR ns.YOUR.DOMAIN.

なお、ここに示している、named.confの例で、DDNS機能を有効にするために、コメントをはずした場合は、上記ファイルを手でいじるのは、これが最後になります。いつでも復帰できるように、コピーを残しておきましょう。
/etc/resolv.conf
ふふふ、ここまでくれば、終わったも同然。
domain YOUR.DOMAIN
nameserver 127.0.0.1
に書き換えましょう。
テストしないとね
/usr/sbin/in.namedを起動して、nslookupコマンドで、localhostや、自分や、登録した他のマシンや、外部のweb siteの名前などが、きちんと引けることを確認しましょう。
引けない場合は、がんばって、自分で調べましょう:-)
/etc/nsswitch.conf
hostsの行を
hosts: files dns
としましょう。これで、/etc/hostsにないものは、DNSで引きにいくようになります。
ln -s /etc/YOUR.DOMAIN/named.conf /etc/named.conf
最後に、次にOSを再起動したときには、自動的にnamedが立ち上がるように
ln -s /etc/YOUR.DOMAIN/named.conf /etc/named.conf
しておきましょう。
うりゃー、Active Directory対応じゃ
世の中、悲しいもので、Windows Serverがはびこっております。Windows NT ServerのNT Domain機能は、Sambaで代用できるようになりましたが、Windows 2000 ServerのDomain機能は、Active Directoryを使うしかありません。1台だけなら、DNSの設定はいりませんが、2台以上でreplication(アカウント情報がすっ飛ぶと悲しいから、必ず2台以上設置しましょう)する場合には、DNSの設定が必須になります。
でもって、DDNS機能が有効だと、設定の時に、そのDNS serverを指定してあげればよいのですが、くされWindowsに何されるかわからないので、ここでは、DDNS非対応時に、どう対処するかを書いておきます。
とりあえず、最初の1台目のActive Directory Server化
すでに、なんらかの理由で、Active Directory Serverが立ち上がっているなら、読み飛ばしてください。ないなら、「スタート」→「プログラム(P)」→「管理ツール」から「サーバーの構成」を起動して、Active Directoryを設定してください。
もちろん、新規フォレストとして、あなたの取得した「YOUR.DOMAIN」のサーバーとして構成することが可能です。
でもって、DNSに登録できないと「Microsoft DNSをインストールする?」って聞かれるけど、いれないよーに。
再起動して必要な情報をGet!
無事にActive Directoryの設定が終わると、再起動を即されるので、従いましょう。
再起動後、SystemDrive:\winnt\system32\config\netlogon.dnsができているので、ftpなり、なんらかの方法でDNS Server側に取得します。
このファイルは、こんな情報がのっています。
なお、<DomainGuid>はドメイン固有のGUIDで、<DsaGuid>はマシン固有のGUIDになります。
また、1台目のActive Direcotry Serverの名前を「ad0.YOUR.DOMAIN」としていますので、この部分は、あなたの環境の1台目のActive Directory Serverの名前に置き換えてください。
YOUR.DOMAIN. 600 IN A AAA.BBB.CCC.yyy
_ldap._tcp.YOUR.DOMAIN. 600 IN SRV 0 100 389 ad0.YOUR.DOMAIN.
_ldap._tcp.Default-First-Site-Name._sites.YOUR.DOMAIN. 600 IN SRV 0 100 389 ad0.YOUR.DOMAIN.
_ldap._tcp.pdc._msdcs.YOUR.DOMAIN. 600 IN SRV 0 100 389 ad0.YOUR.DOMAIN.
_ldap._tcp.gc._msdcs.YOUR.DOMAIN. 600 IN SRV 0 100 3268 ad0.YOUR.DOMAIN.
_ldap._tcp.Default-First-Site-Name._sites.gc._msdcs.YOUR.DOMAIN. 600 IN SRV 0 100 3268 ad0.YOUR.DOMAIN.
_ldap._tcp.<DomainGuid>.domains._msdcs.YOUR.DOMAIN. 600 IN SRV 0 100 389 ad0.YOUR.DOMAIN.
<DsaGuid>._msdcs.YOUR.DOMAIN. 600 IN CNAME ad0.YOUR.DOMAIN.
_kerberos._tcp.dc._msdcs.YOUR.DOMAIN. 600 IN SRV 0 100 88 ad0.YOUR.DOMAIN.
_kerberos._tcp.Default-First-Site-Name._sites.dc._msdcs.YOUR.DOMAIN. 600 IN SRV 0 100 88 ad0.YOUR.DOMAIN.
_ldap._tcp.dc._msdcs.YOUR.DOMAIN. 600 IN SRV 0 100 389 ad0.YOUR.DOMAIN.
_ldap._tcp.Default-First-Site-Name._sites.dc._msdcs.YOUR.DOMAIN. 600 IN SRV 0 100 389 ad0.YOUR.DOMAIN.
_kerberos._tcp.YOUR.DOMAIN. 600 IN SRV 0 100 88 ad0.YOUR.DOMAIN.
_kerberos._tcp.Default-First-Site-Name._sites.YOUR.DOMAIN. 600 IN SRV 0 100 88 ad0.YOUR.DOMAIN.
_gc._tcp.YOUR.DOMAIN. 600 IN SRV 0 100 3268 ad0.YOUR.DOMAIN.
_gc._tcp.Default-First-Site-Name._sites.YOUR.DOMAIN. 600 IN SRV 0 100 3268 ad0.YOUR.DOMAIN.
_kerberos._udp.YOUR.DOMAIN. 600 IN SRV 0 100 88 ad0.YOUR.DOMAIN.
_kpasswd._tcp.YOUR.DOMAIN. 600 IN SRV 0 100 464 ad0.YOUR.DOMAIN.
_kpasswd._udp.YOUR.DOMAIN. 600 IN SRV 0 100 464 ad0.YOUR.DOMAIN.
gc._msdcs.YOUR.DOMAIN. 600 IN A AAA.BBB.CCC.yyy

なげー...
DNSへの登録
変更をするときには、各ファイルのSerialの値を増加させるのを忘れないよーにしましょう。
まずは、YOUR.DOMAIN.revに、1台目のActive Directory Serverのアドレスを登録してください。DDNSを利用すると、勝手に逆引きアドレスも登録するようなので、たぶん、必要なんでしょう。TTLがつくところが、ミソかと。
yyy 20M IN PTR ad0.YOUR.DOMAIN.

でもって、YOUR.DOMAIN.zoneに登録するのは、netlogon.dnsの情報を元に、以下のように加工したものを登録します。
_ldap._tcp 600 IN SRV 0 100 389 ad0
_ldap._tcp.Default-First-Site-Name._sites 600 IN SRV 0 100 389 ad0
_ldap._tcp.pdc._msdcs_ldap._tcp.pdc._msdcs 600 IN SRV 0 100 389 ad0
_ldap._tcp.gc._msdcs 600 IN SRV 0 100 3268 ad0
_ldap._tcp.Default-First-Site-Name._sites.gc._msdcs 600 IN SRV 0 100 3268 ad0
_ldap._tcp.<DomainGuid>.domains._msdcs 600 IN SRV 0 100 389 ad0
<DsaGuid>._msdcs 600 IN CNAME ad0
_kerberos._tcp.dc._msdcs 600 IN SRV 0 100 88 ad0
_kerberos._tcp.Default-First-Site-Name._sites.dc._msdcs 600 IN SRV 0 100 88 ad0
_ldap._tcp.dc._msdcs 600 IN SRV 0 100 389 ad0
_ldap._tcp.Default-First-Site-Name._sites.dc._msdcs 600 IN SRV 0 100 389 ad0
_kerberos._tcp 600 IN SRV 0 100 88 ad0
_kerberos._tcp.Default-First-Site-Name._sites 600 IN SRV 0 100 88 ad0
_gc._tcp 600 IN SRV 0 100 3268 ad0
_gc._tcp.Default-First-Site-Name._sites 600 IN SRV 0 100 3268 ad0
_kerberos._udp 600 IN SRV 0 100 88 ad0
_kpasswd._tcp 600 IN SRV 0 100 464 ad0
_kpasswd._udp 600 IN SRV 0 100 464 ad0

よーく見るとわかりますが、Aレコードのデータは登録しません。
これは、DDNSを使って得られた結果を基にしています。いちおう、DDNSじゃない環境で、同じ状態にしてみましたが、特に問題ないようです。
2台目以降 [2003/05/05内容加筆]
1台目を登録してしまえば、後は、簡単。2台目も同じように、Active Directory Serverの設定をします。ただし、フォレストは同じで、2台目のサーバーになることに注意してください。また、DNSに正しく1台目の情報が反映されていないと、この作業が失敗するので、注意してください。
設定が終わり、再起動が完了したら、同じように、DNSに反映してください。反映してしばらくすると、Active Directoryの内容をreplicationできるようになったと、イベントログのファイル複製サービスのところに「警告」(なんでやねん?)が記録されるはずです。
で、書き損ねたことと、公開後にわかったこと(^^;
「ldap._tcp.pdc._msdcs」は、PDC emulatorの位置を示すものらしいので、ひとーつしか登録しない模様。NT4.0との互換性の「ない」モードにおいても、最初に登録されたActive Directory Server「のみ」登録されるみたいです。
さらに、2台目以降は、自動的には、Global Catalogue Serverにはならないみたいで、なってないときには、「*.gc.*」なんてエントリーは追加登録されない/しなくてよいみたいです。が、せっかくのマルチマスタの機能を利用しないのは損ってことで、以下のようにして、追加したActive Directory ServerもGlobal Catalogue Serverにしちゃいましょう。
まずは、管理ツールメニューから「Active Directoryサイトとサービス」を起動して、サイトのサーバーを展開して、NT Settingsのプロパティーを出します。
出したら、「グローバルカタログ」をチェック!!
ちなみに、グローバルカタログサーバーになれるのは、5分後みたい。
おまけ
Active Directory関係の役に立ったWeb Site。
slaveのnamed.conf
slave側はYOUR.COMAIN.{zone,rev}を作る必要はありませんが、それ以外のものは作りましょう。

# YOUR.DOMAIN named.conf
options {
directory "/etc/YOUR.DOMAIN";
# プロバイダ指定のname serverはIPアドレスで指定してネ
forwarders { nameserver1; nameserver2; };
allow-query AAA.BBB.CCC.0;
};

zone "." in {
type hint;
file "root.cache";
};

zone "localhost" in {
type master;
file "localhost.zone";
};

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

zone "YOUR.DOMAIN" in {
type slave;
file "YOUR.DOMAIN.zone.2nd";
# master nameserverをIPアドレスで指定してネ
masters { masterserver; };
# DDNS機能を利用するなら...
# allow-update { localhost; adserver1; adserver2; };
};

zone "CCC.BBB.AAA.in-addr.arpa" in {
type slave;
file "YOUR.DOMAIN.rev.2nd";
# master nameserverをIPアドレスで指定してネ
masters { masterserver; };
# DDNS機能を利用するなら...
# allow-update { localhost; adserver1; adserver2; };
};


Copyright (C) 2003-2004, のらねこひらまつ, All rights reserved.