DNS(Domain NameServer System) / BIND(Berkeley Internet Name Domain)

    1. DNS/BIND
      1. 前提とする環境
      2. DNSについてあれこれ
      3. DNS(プライマリ)server
      4. DNS(セカンダリ)server
      5. DNS(キャシュ)server
      6. IPベースバーチャルドメインとネームベースバーチャルドメイン
    2. ADSLとDDNS(Domain NameServer System)
    3. 日本語ドメイン

 前提とする環境 

経験からいえば「DNSの設定は混乱する」の感が今も拭えません。そこで次のように設定条件を明記してすすめます。

aaa.bbb.ccc.70/255.255.255.248  ドメイン tako.co.jp

aaa.bbb.ccc.70 ------------ ネットアドレス
aaa.bbb.ccc.71 ------------ Gateway(ルーター)
aaa.bbb.ccc.72 ------------ ns.tako.co.jp(プライマリDNS)
aaa.bbb.ccc.73 ------------ ns2.tako.co.jp(セカンダリDNS)
aaa.bbb.ccc.74 ------------ (未使用)
aaa.bbb.ccc.75 ------------ (未使用)
aaa.bbb.ccc.76 ------------ (未使用)
aaa.bbb.ccc.77 ------------ ブロードキャストアドレス

ネームベースバーチャルドメイン ------------ red.com
IPベースバーチャルドメイン   ------------ bule.com

ドメイン tako.co.jp の環境説明です。
最初のaaa.bbb.ccc.70と最後のaaa.bbb.ccc.77のグローバルIPアドレスは、ネットワークシステム上使用できません。また、aaa.bbb.ccc.71はルータに割り振っているのでこれも使えません。したがって取得した8個のうち5個のグローバルIPアドレスを使用してサーバ環境を構築することになります。
aaa.bbb.ccc.72がns.tako.co.jp(プライマリDNS)となっていますが、WWW、MAIL、FTPの各サーバも同機で稼働していることにします。いわゆるオールインワン型のサーバです。さらにaaa.bbb.ccc.72にはバーチャルのドットcomドメインを二つ預かっていることにします。ネームベースのバーチャルドメインがred.com、IPベースのバーチャルドメインがbule.comです。
これらの前提でDNSの設定を見ていくことにします。必要に応じてmail環境の設定や、wwwの設定も見ていくことにしましょう。またネームベースバーチャルドメインとIPベースバーチャルドメインの違いについては後述です。
なお、turbolinux server 7 ではインストール直後の関係ファイル初期設定値は以下でした。他のリストリビュージョンは確認していません。
/etc/named.conf         644		root(所有)	named(グループ)
/etc/resolv.conf        644		root		  root
/var/named/             755		root		  root
/var/named/named.ca     644		root		  named
/var/named/named.local  644		root		  named
[ 特注 ]
turbolinux server 7を使ってセカンダリDNSサーバを構築する場合、/var/named/ は 755 named named とします。
以前のバーションでは特にこの設定は必要ありませんでしたので、二日ほど悩みました。セカンダリDNSへゾーン転送されないのです。インストールが失敗しているのではないか、など散々でした。プライマリDNSの場合は、この操作は必要ありませんでした。



 1, DNSについてあれこれ 

DNSは、サーバを立ち上げるには必要不可欠なもので、機能しないとすべてのサービスは提供できないといえます。DNSの実装アプリケーションの一つがここでいうBINDです。DNSはなにをするかといえば……

名前解決(ホスト・ドメインとIPアドレスの変換)

www.odic.ne.jpを192.168.0.1に変換する。この一点ににつきると思います。
具体的には、以下のような流れといえます。
わたしたちがインターネット上から、通信相手のホストである端末コンピュータやパソコンにアクセスするには、目的のドメインを特定しなければなりません。例えばブラウザで、あるホームページにアクセスするにはURL欄に、www.odic.ne.jpといった具合に、インターネット上の住所といえるものを打ち込み指定することで、目的のホームページを閲覧することができます。このwwwがホスト名、odic.ne.jp がドメイン名、あわせてFQDN(Fully Qualified Domain Name)と呼びます。平たくいえば、odic.ne.jp家の、wwwさんです。?海里曚?mail嬢やftp君がいるといった具合でしょうか。
ドメインは世界的な検索データベースシステムの中にあります。このシステムによって目的の個別唯一のドメインにアクセスできます。ドメインを最終的に保証するのは、各サーバーのプライマリーDNSシステムです。ここで行われるのはホスト・ドメインとIPアドレスの変換です。このとき名前解決が行われた、といえるようです。わたしはこれを名前変換アクセスと呼びますが、このアクセスが終わります。DNSシステムはアクセス問い合わせ先?法?IPアドレスを返します。返されたIPアドレスを元に、わたしたちは目的端末に実務アクセスをし、目的が達成されることになります。
話を分かりやすくするために、今少しプロセスを具体的にしてみます。あなたがISP(インターネットサービスプロバイダー)に加入していて、www.odic.ne.jpにアクセスするとき、あなたはISPのDNSに接続要求をします。ISPのDNSはwww.odic.ne.jpに相当するIPアドレスを調べ、あなたに返します。あなたはそのIPアドレスを基にwww.odic.ne.jpに接続する、ということになります。正確にいうとISPのDNSがすべてを処理するとわたしは思っているのですが、少々あやふやです。分かれば追記することにします。
たぶん実際の流れを意訳しすぎると思われますが、押さえておきたいのは、インターネット上の通信はIPアドレスを基に行われる、ということでしょうか。これをふまえることでTCP/IPやバケット通信などの理解の前提をふまえることができる、と思います。
ここで当然、ややこしいことはせずに最初から、IPアドレスを使えばいいではないか、という疑問がもちあがるでしょう。このこたえは簡単です。わたしたちが32ビットで構成され、8ビット区切りの2進数を、10進数表記した乱数にも似た数字を、覚えづらいということです。これはIPv4(Internet Protocol version4)という、約43億個を識別する話ですが、IPv6になれば128ビットとなり、約43億の5乗個になるのですからなおさらです。だが、果たしてそうなのか?は、わたしには確かめようがなくおいているのですが、覚えづらい以外の説明に出会ったことはありません。
余談ですが、個別有名性の検索にデーターベースシステムが用いられていたとしても、つまりわたしたちの日常感覚からすれば無限と言っていい数のコンピュータの中から、ある一つを特定することに驚きます。さらにそれをこれまた、わたしたちの日常感覚からすれば一瞬に行うということにもなります。たぶん驚嘆に値するのは、このシステムのなかで、無限と一瞬の対極概念が無化されてしまうからでしょう。いまのわたしはそれがコンピュータであり、ネットワークだというしかないのですが、新たなる価値が生産されたという意味では、それはきわめて演劇営為であり演技は行使された、と与太をとばしたくなります。そして残念ながら、この情報交換の物語性を凌駕する、演技論を持ち得ていないのが,演劇表現の現状です。余談になりました。
つづいて、具体的に機能や設定を見ていくことにします。


 2, DNS(プライマリ)server 

DNSサーバにはプライマリ(Master マスターとも呼びます)、セカンダリ(Slave スレープとも呼びます)、キャシュなどの種類があります。多くのLinuxリストリビュージョンでは、その全体をインストールすることでキャシュDNSの機能を持っているものがほとんどです。キャシュDNSは自分自身のためであり、接続データーを記憶することで、プライマリの仕事量を軽減することができるでしょう。また、わたしはプライマリとセカンダリ一対のDNSでDNSシステムと考えています。運用経験的に、予備的なセカンダリDNSとは言い難く思います。
さて、BINDです。DNSの実務アプリケーションとして顕著です。バァージョンによって、少々設定が異なりますが、ここではv8.xとして話をすすめます。最新バージョンは9です。常駐デーモンはnamed。運用上関係のある設定書類は /etc/named.conf と /var/named下にあるテキスト書類となるでしょう。
具体的な設定事例をあげていきますが、その前に作業の全体イメージをつかむことで、設定・運用を間違いないものとします。
BINDはドメインをゾーンという概念で認識し、ですべてを管理します。DNSシステムそれ自体が、いってしまえば自分自身を管理する、その情報は一つ上の階層管理者に知らせる、ということで成り立っていますから、まずは自分自身とそれ以下を管理すれば十分ということでしょう。
ドメインをゾーン化することで、IPベースのバーチャルホストもネームベースのバーチャルホストも管理します。ゾーンで管理する、ということをふまえて、以下のいわばゾーン管理ファイルである /etc/named.conf を具体的に見ていくことにします。
    ns.tako.co.jp /etc/named.conf

// generated by named-bootconf.pl

options {
	directory "/var/named";
		allow-transfer { ← ゾーン転送を許可するIPアドレスの記述
    		aaa.bbb.ccc.73;  ← セカンダリDNS
		};
	/*
	 * If there is a firewall between you and nameservers you want
	 * to talk to, you might need to uncomment the query-source
	 * directive below.  Previous versions of BIND always asked
	 * questions using port 53, but BIND 8.1 uses an unprivileged
	 * port by default.
	 */
	// query-source address * port 53;
};

//
// a caching only nameserver config
//
zone "." {
	type hint;
	file "named.ca";
};

zone "0.0.127.in-addr.arpa" {
	type master;
	file "named.local";
};


zone "tako.co.jp" {
	type master;
	file "tako.co.jp";

};

zone "70.ccc.bbb.aaa.in-addr.arpa" {
	type master;
	file "70.ccc.bbb.aaa.in-addr.arpa";

};

zone "red.com" {      ← バーチャルドメイン
	type master;
	file "red.com";

};


● 以下はオールインワン型の場合

    ns.tako.co.jp /var/named/ns.tako.co.jp
$TTL 86400
@	IN	SOA	ns.tako.co.jp.	root.tako.co.jp.   (

	2002032502		;serial
	10800			;refresh
	3600			;retry
	604800			;expire
	86400)			;minimum TTL
;
		IN	NS			ns
		IN	NS			ns2.tako.co.jp. ← セカンダリDNS
		IN	MX 10			ns
;
ns		IN	A			aaa.bbb.ccc.72  ←  nsのIP
;
mail		IN	CNAME			ns
ftp		IN	CNAME			ns
www		IN	CNAME			ns
;
;host2		IN	A			aaa.bbb.ccc.73
;host3		IN	A			aaa.bbb.ccc.74

● ns(ネームサーバ)とmail(メールサーバ)が異なる場合(06.02.11記)

    ns.tako.co.jp /var/named/ns.tako.co.jp
$TTL 86400
@	IN	SOA	ns.tako.co.jp.	root.tako.co.jp.   (

	2002032502		;serial
	10800			;refresh
	3600			;retry
	604800			;expire
	86400)			;minimum TTL
;
		IN	NS			ns.tako.co.jp.
		IN	NS			ns2.tako.co.jp. ← セカンダリDNS
		IN	MX 10			mail.tako.co.jp.←  メールサーバ
;
ns		IN	A			aaa.bbb.ccc.72
;
ftp		IN	CNAME			ns.tako.co.jp.
www		IN	CNAME			ns.tako.co.jp.
;
mail		IN	A			aaa.bbb.ccc.73 ←  メールサーバのIP
;host3		IN	A			aaa.bbb.ccc.74

● 設定を他のネームサーバに早く反映させる場合(06.02.11記)

    ns.tako.co.jp /var/named/ns.tako.co.jp
$TTL 600
@	IN	SOA	ns.tako.co.jp.	root.tako.co.jp.   (

	2002032502		;serial
	10800			;refresh
	3600			;retry
	604800			;expire
	600)			;minimum TTL
;
		IN	NS			ns
		IN	NS			ns2.tako.co.jp.
		IN	MX 10			ns
;
ns		IN	A			aaa.bbb.ccc.72
;
mail		IN	CNAME			ns
ftp		IN	CNAME			ns
www		IN	CNAME			ns
;
;host2		IN	A			aaa.bbb.ccc.73
;host3		IN	A			aaa.bbb.ccc.74


 3, DNS(セカンダリ)server 

過日、グローバルIPアドレスの変更があったので、これを期にファイウォール増設を行うことにしました。実験機の方で仮想環境をたてて、あらかたのサービスを動かして診ました。しかし、セカンダリDNSサーバがうまくいきません。二年前のことを思い出しながら、あれやこれやと設定を変えてみたのですが、やはりセカンダリDNSサーバがプライマリDNSサーバのゾーンファイルを読み込んでくれません。
落ちは、セカンダリDNSサーバの /var/named のパーミッション間違い、ということでした。これは過日も経験したことで、ひとえに、この節の記述を怠っていたためと、反省する次第です。
以下を前提として、まとめてみました。

aaa.bbb.ccc.72 ------------ ns.tako.co.jp(プライマリDNS)
aaa.bbb.ccc.73 ------------ ns2.tako.co.jp(セカンダリDNS)

ns.tako.co.jp側の設定変更は次の三つのフィルです。

/etc/named.conf
/var/named/正引きゾーンファイル
/var/named/逆引ききゾーンファイル

/etc/named.conf ファイルには、ns2.tako.co.jp(セカンダリDNS)がゾーンファイルを参照できるように記述します。

    ns.tako.co.jp /etc/named.conf

options {
 directory "/var/named";
  allow-transfer {
  aaa.bbb.ccc.72
  aaa.bbb.ccc.73
  localhost;
  };
 version "";
};


環境によって記述内容は異なりますが、ポイントは「aaa.bbb.ccc.73」を記述する事です。
次はゾーンファイルの追記内容です。
    ns.tako.co.jp正引き /var/named/tako.co.jp

 IN   NS   ns2.tako.co.jp.

    ns.tako.co.jp逆引き /var/named/SUB70.ccc.bbb.aaa.in-addr.arpa

 IN   NS   ns2.tako.co.jp.


正引き、逆引きゾーンファイルの「serial」の番号を上げ「named」を再起動します。
次は、ns2.tako.co.jp(セカンダリDNS)側の設定変更です。これは /etc/named.conf だけです。
    ns2.tako.co.jp /etc/named.conf

zone "tako.co.jp" {
  type slave;
  masters {
  aaa.bbb.ccc.72;
  };
  file "tako.co.jp";
};

zone "SUB70.ccc.bbb.aaa.in-addr.arpa" {
  type slave;
  masters {
   aaa.bbb.ccc.72;
  };
  file "SUB70.ccc.bbb.aaa.in-addr.arpa";
};

内容は環境によって違います。またISPによってゾーンフィアル名の指定があると思いますが、この追記で「named」を再起動します。
設定変更は以上なのですが、TurbolinuxW8等では「/var/named 」ディレクトリの所有権がデフォルトで「root/root」なのでゾーンファイルが自動生成されません。これはDNSサーバが「root」でなく「named」で稼働しているので、ディレクトリ「/var/named」に「named」が書き込みができないためです。このままですと次のようなログがでます。
    /var/log/messagrs

Mar 7 05:36:02 ns2 named[1xx1]: transfer of 'tako.co.jp/IN' from aaa.bbb.ccc.72#53: failed while receiving responses: permission denied
Mar 7 05:36:02 ns2 named[1xx1]: transfer of 'tako.co.jp/IN' from aaa.bbb.ccc.72#53: end of transfer
Mar 7 05:36:03 ns2 named[1xx1]: dumping master file: tmp-XXXX4xOtcM: open: permission denied
Mar 7 05:36:03 ns2 named[1xx1]: transfer of 'SUB70.ccc.bbb.aaa.in-addr.arpa/IN' from aaa.bbb.ccc.72#53: failed while receiving responses: permission denied
Mar 7 05:36:03 ns2 named[1xx1]: transfer of 'SUB70.ccc.bbb.aaa.in-addr.arpa/IN' from aaa.bbb.ccc.72#53: end of transfer


書き込めないということなので「/var/named」の所有権を「named/named」に変更しなければなりません。この所有権変更で「named」を再起動すれば、ゾーンファイルが自動生成されます。(04.03.07)


 4, DNS(キャシュ)server 

 5, IPベースバーチャルドメインとネームベースバーチャルドメイン 


【注記】このページの作成にあたり、上記に掲げたURLや書籍を参考にしました。謝意を表します。具体的な引用については明記しました。
内容の間違いや、誤字は筆者の責任であり、関係する参照先の責任ではありません。

top     home:top     server library:top     PHP PostgreSQL MySQL サンプルスクリプト     SiteMap     Open SiteMap