DNS(ネーム)サーバーの設定

Menu

自宅サーバメニューに戻る

はじめに

DNSサーバはインターネットにとって大変重要な機能を提供します。これがなければ、世界中のPCを行き来する今日のインターネットの発展はなかったでしょう。しかし、Dynamic DNSでの運用であれば、DNSサーバの設置は必要ありません。むしろ設置が困難なだけに、誤った設置を行い、メールサーバが運用できないなんてことにもなります。あくまでも予備知識として理解しようとするページです。でも、うまく設置できれば、ネットワークトラフィックを低減することもできます。

DNS サーバーの一般的知識

  1. DNS サーバーとは、IPアドレスとドメインを関連づけるデータを提供する。
-----関連づけの方向----

正引き----ドメイン名からIPアドレス返すこと。(例 hoge.e-sen.com → 192.168.0.1 )

逆引き---IPアドレスからドメイン名を返すこと。(例 192.168.0.1 → hoge.e-sen.com)

例は、あくまでプライベートアドレスなので、Lan内での話。インターネットの世界では、プライベートアドレスの部分がグローバルアドレスになる。

-----HOSTSファイルによる名前の解決----

数台程度のLAN内部での名前の解決は、HOSTSファイルを利用するのが便利で簡単。この場合は、DNSサーバはいりません。次のようなファイルを拡張子なしの hosts 名で作成し、c:\winnt\system32\drivers\etc フォルダに入れておけばよい。同じ要領で、このファイルをすべてのネットワーク内のPCにコピーすること。同フォルダには sam という拡張子を持つサンプルファイルがあるので参照すること

127.0.0.1     localhost
192.168.0.1  hoge.e-sen.com
192.168.0.2  foo.e-sen.com

すべてのPCのアドレスをデータとして持っているわけではなく、自分が担当するゾーン内のPCについての情報を持っているだけ。そこに含まれないデータはある規則に従って、他のネームサーバに問い合わせる仕組みが備わっていれば良い。

  1. DNSサーバーがどんな機能を持っていなければならないか?
  1. ネームサーバは、自分が管理すべきゾーンを知っていること。
  2. 自分が管理すべきゾーンの情報を持っていること。
  3. 自分が管理しているゾーン以外の情報をどこに問い合わせるかを知っていること。これらの情報を与えるためにゾーンデータベースがあります。
     
  1. DNSサーバーのタイプ(種類)
マスターサーバ(プライマリサーバ) ゾーンデータベースの正本(マスター)を持つサーバ。自分の持っているデータから応答する。1つのゾーンには必ず1つのマスターサーバが存在しなければならない。
スレーブサーバ(セカンダリサーバ) マスターサーバのゾーンデータベースをコピーしてきて名前の解決を行うサーバ。マスターサーバのサービス停止などの非常時や、マスターサーバの負荷分散を目的に、少なくとも1台のスレーブサーバを設置することが推奨されています。
キャッシングオンリーサーバ 自分ではゾーンデータベースを持たず、名前の問い合わせがあったときに他のネームサーバに問い合わせをし、その結果を一定期間保持する(キャッシュする)サーバ。
  1. ファイル構成

ゾーンデータベースを格納したファイルをゾーンファイルと呼び、そのファイルの中に記述された情報のデータそのものをリソースレコードと呼びます。ゾーンファイルは、以下の5つ(1の正引き用ゾーンファイルに、3のローカルループバック用正引きゾーンファイルを含めて扱われるのが通常のため4つ)のゾーンファイルによって構成される。

ダイナミック DNS の設定

当サイトが取得している e-sen.com というドメインですが、ダイナミック DNSサービスは 、このドメインと IP アドレス を 動的にアサインし、インターネットから e-sen.com というドメイン名でアクセスできるようにしていると考えられます。これによって私のサイト ( 正確にはルーター ) までたどり着けば、ルーター のポートフォワーディング設定で各種サーバーへ導くことができるようになります。

HOST

TTL

Type

クライアントに回答する項目

 

e-sen.com

60

A

211.131.132.132 ←グローバルアドレスの例

(1)

*.e-sen.com

43200

CNAME

e-sen.com.

(2)

www.e-sen.com

43200

CNAME

e-sen.com.

(3)

e-sen.com

43200

MX

5 e-sen.com.

(4)

上の例は、DynDNS.orgのCustom DNS での設定例ですが、外部からのクライアント ( メールの場合は、メールサーバー SMTP ) に回答されている項目は次のように考えられます。

  1. 外部のクライアントが e-sen.com を要求した場合には、(1) に該当するので、グローバルアドレスである 211.131.132.132 を返す。
  2. 外部のクライアントが www.e-sen.com を要求した場合、(3) に該当するが、これは、e-sen.com の別名とされているので、(1) により e-sen.com のグローバルアドレスである 211.131.132.132 を返す。
  3. 外部のクライアントが その他のホスト、ftp や ssh などを指定した場合は、(2) に該当するが、これは、e-sen.com の別名とされているので、(1) により e-sen.com のグローバルアドレスである 211.131.132.132 を返す。
  4.  外部のクライアントがメールの配送先としてe-sen.com を指定しているときは、(4) に該当するので、5 (メールサーバーの優先度)および e-sen.com を返すことになるが、それは、(1) により e-sen.com の グローバルアドレスである 211.131.132.132 を返す。
  5. なお、表中 TTL はクライアントやキャッシュサーバーに保存された情報の有効期間で、単位は秒。この時間を経過した情報は無効となるので、新たに DNS サーバーに問い合わせることとなる。

LAN 内部の DNS サーバーの設定

LAN内部でのホスト同士の名前の解決(この場合には、 hosts ファイルの代わりとしての利用)および、外部のドメイン情報がほしくなったPC がわざわざルーター外のDNSサーバに問い合わせないで、LAN内の DNS サーバーに問い合わせて(この場合は、キャッシュサーバーとして利用)、いち早く接続情報を手に入れ、目的のサイトへジャンプする。まぁ。こんな感じでしょうか!!

以下の例では、ドメイン名などの値を下表の通りとします。

ドメイン名

e-sen.com

www.e-sen.com

192.168.0.1

sub.e-sen.com

192.168.0.2

#以下はコメント行です。(コンマ)や(セミコロン)は大変重要です。忘れないように。ファイル名は、一例で、自由に設定できます。

/etc/named.conf

BIND のデフォルト起動用設定ファイル(DNSサーバーが管理するドメイン名、各設定ファイルの格納場所や名前、動作オプションなどを記述する。このファイル名は変更しない方が無難。)

options {
  directory "/var/named" ;#以下の4つのゾーンファイルの在処をしまします。
	forwarders {
		143.90.130.21;#契約しているプロバイダのDNSサーバのアドレス(プライマリ)
		143.90.130.38;#同上(セカンダリ)
		};
	forward only;#ほかのDNSサービスへの照会を禁止。
     version "" ;#バージョン情報の秘匿
};
# 以下ルートDNSサーバの指定(ファイル名は変えない方が無難。)

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

# 以下正引き用の設定(ファイル名とその在処を示す。ファイル名は何でも良い。)

zone "e-sen.com" {
  type master ;
  file "named.e-sen.com" ;
  allow-query {
    192.168.0.0/24 ;  
←Lan内部での問い合わせには応じるように設定
  };
  allow-transfer {
    192.168.0.0/24 ;
  };
};

# 以下逆引き用の設定(ファイル名とその在処を示す。ファイル名は何でも良い。)

zone "0.168.192.in-addr.arpa" {
  type master ;
  file "named.0.168.192.in-addr.arpa" ;
  allow-query {
    192.168.0.0/24 ;  
←Lan内部での問い合わせには応じるように設定
  };
  allow-transfer {
    192.168.0.0/24 ;
  };
};


# 以下ローカルループバックの設定(ファイル名とその在処を示す。ファイル名は何でも良い。)

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

 

/var/named/named.e-sen.com

上のnamed.conf で正引き用に指定したファイルの中身

$TTL 86400
e-sen.com. IN SOA www.e-sen.com. root.e-sen.com. (
111111749 ; serial
10800 
3600 
1209600 
86400 )
e-sen.com. IN NS www.e-sen.com.
e-sen.com. IN MX 10 www.e-sen.com.  
←これがメールサーバに必須のmxレコード
www.e-sen.com. IN A 192.168.0.1   
←これがDNSサーバに登録されたホスト
sub.e-sen.com IN A 192.168.0.2  ←ホストを追加する場合はこんな調子

 

/var/named/named.0.168.192.in-addr.arpa

上の named.conf で指定したファイルの中身(注)ファイル名は、アドレスを逆さまにしてホスト部をのぞいた名前(すなわちネットワーク部).+in-addr.arpaになります。ネットワークの次には必ずコンマを忘れずに。

$TTL 86400
0.168.192.in-addr.arpa. IN SOA e-sen.com. root.e-sen.com. (
111111749 ; serial
10800 
3600 
1209600 
86400 )
0.168.192.in-addr.arpa. IN NS www.e-sen.com.
1.0.168.192.in-addr.arpa. IN PTR www.e-sen.com  
←1台目の逆引き
2.0.168.192.in-addr.arpa. IN PTR sub.e-sen.com  
←2台目の逆引き

 

/var/named/named.local

上のnamed.confで指定したファイルの中身

@ IN SOA localhost. root.localhost. (
111111749 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
1 IN PTR localhost.
@ IN NS localhost.

ここまで設定したら、Bindを起動します。

# etc/rc.d/int.d/named start

動作のテスト

内部向けに正常に名前の解決ができているか確認します。

#nslookup コマンドで

>192.168.0.2

と入力して、

Server www.e-sen.com
address 192.168.0.1

Name sub.e-sen.com
address 192.168.0.2

と表示されれば、アドレスからのホスト名の検索、逆引きがうまく設定されるとなります。

また、

>sub.e-sen.com

と入力して、

Server www.e-sen.com
address 192.168.0.1

Name sub.e-sen.com
address 192.168.0.2

と表示されれば、ホスト名からのアドレスの検索、すなわち正引きがうまく設定されることになります。