DNSサーバーを構築してLan内からドメイン名でアクセスできるようにします。

私が最初に購入したルータ「BBR4HG」の場合、DNSサーバーを構築しなくてもドメイン名でアクセスする事が可能でした。
しかし、次期購入ルータ「NetGenesis SuperOPT100」ではアクセスする事が不可でした。
また、サーバー機でルータ構築した場合もアクセスは不可だったのでDNSサーバーを構築する事にしました。

DNSサーバーのインストール


# rpm -q bind ← bindが入っているかチェック
bind-9.2.4-0vl1

無い場合はapt-getでインストールしてください。

# apt-get install caching-nameserver ← インストール


DNSサーバーの設定


# vi /etc/named.conf ← 設定ファイル編集

// generated by named-bootconf.pl
      
options {
        directory "/var/named";
        version "unknown"; ← 追記(バージョンを隠す)
        /*
        * 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;
      
        下記を追加
      
        ここから〜
      
        allow-query{
                127/8;
                192.168.0/24;
        };
        allow-recursion{
                127/8;
                192.168.0/24;
        };
        allow-transfer{
                127/8;
                192.168.0/24;
        };
        forwarders{
                192.168.1.1; ←外部ルータの場合はルータのIPアドレス
		11.22.111.222; ← サーバー機でルータ構築の場合はプロバイダのDNSサーバーを指定(プライマリ)
		11.22.111.223; ← サーバー機でルータ構築の場合はプロバイダのDNSサーバーを指定(セカンダリ)
        };
      
        〜ここまで
      
};
      
//
// a caching only nameserver config
//

下記を追加
ココから〜

//内向き設定
view "internal" {
        match-clients {
                127/8;
                192.168.0/24;
        };

〜ココまで

        zone "." {
                type hint;
                file "named.ca";
        };
        zone "localhost" {
                type master;
                file "localhost.zone";
                allow-update { none; };
        };
      
        zone "0.0.127.in-addr.arpa" {
                type master;
                file "named.local";
                allow-update { none; };
        };
        key "key" {
                algorithm hmac-md5;
                secret "0ZLqkfhdLJhFESAXWgOVWSNOtiPOxuhfYUV0aXvDveYxdcWvWcZmoXkdOsqg";
        };
      
下記を追記
ココから〜      

        zone "1.168.192.in-addr.arpa" { ← 逆引きゾーンの設定(IPアドレスは各自の環境)
                type master;
                file "1.168.192.in-addr.arpa.lan";
                allow-update { none; };
        };

        zone "xxxxx.com" { ← 正引きゾーンの設定
                type master;
                file "xxxxx.com.lan";     //ゾーンDBファイルの場所を指定
                allow-update { none; };
        };

        //複数ドメインで運用の場合この様にゾーンの追加を行う
        //ドメイン追加設定 ここから〜
        zone "xxxxx2.com" { ← 複数ドメイン用、正引きゾーンの設定
                type master;
                file "xxxxx2.com.lan";     //複数ドメイン用ゾーンDBファイルの場所を指定
                allow-update { none; };
        };
        //ドメイン追加設定 〜ここまで

};

〜ココまで

正引きゾーンDBの作成



正引きとは
ドメイン → IPアドレス

※ 各レコード(SOA、NS、A、MX、CNAME、PTR,等…)の説明はこちら


※ IPアドレス、ドメイン名は各自の環境に合わせてください。

# vi /var/named/xxxxx.com.lan ← 新規作成

$TTL    86400
@       IN      SOA     ns1.xxxxx.com.  root.xxxxx.com.(
                                      2004031901 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
        IN NS    ns1.xxxxx.com. ;ネームサーバー指定 ※最後のドット「.」に注意
        IN MX 10 xxxxx.com. ;メール転送先設定
        IN A     192.168.1.1 ← サーバーのIPアドレスを指定(xxxxx.com用)
ns1     IN A     192.168.1.1 ← サーバーのIPアドレスを指定(ネームサーバー用)
*       IN CNAME 192.168.1.1 ← サーバーのIPアドレスを指定(バーチャル用 *.xxxxx.com)

※ 複数のドメインで運用する場合

@ /etc/named.confファイルに、別ドメイン用の正引きゾーンの設定を追加
A 下記の様に各ドメインごとに正引きゾーンDBを作成
B 逆引きゾーンDBは新たに作成は必要なく元のファイルに追加ドメインの記述を追加すればOK

特にメイン用の正引きDBと大きく違う部分は無い感じです。
SOAレコード、NSレコード、MXレコードはメイン用の正引きゾーンDBと同じ内容でOK


※ IPアドレス、ドメイン名は各自の環境に合わせてください。

# vi /var/named/xxxxx2.com.lan ← 複数ドメイン用ファイル

$TTL    86400
@       IN      SOA     ns1.xxxxx.com.  root.xxxxx.com.(
                                      2004031901 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
        IN NS    ns1.xxxxx.com. ;ネームサーバー指定 ※最後のドット「.」に注意
        IN MX 10 xxxxx.com. ;メール転送先設定
        IN A     192.168.1.1 ← サーバーのIPアドレスを指定(xxxxx2.com用)
*       IN CNAME 192.168.1.1 ← サーバーのIPアドレスを指定(バーチャル用 *.xxxxx2.com)

逆引きゾーンDBの作成

逆引きとは
IPアドレス → ドメイン


※ IPアドレス、ドメイン名は各自の環境に合わせてください。

# vi /var/named/1.168.192.in-addr.arpa.lan ← 新規作成

$TTL    86400
@       IN      SOA     ns1.xxxxx.com.  root.xxxxx.com.(
                                      2004031901 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
        IN NS    ns1.xxxxx.com.
        IN MX 10 xxxxx.com.
11      IN PTR   xxxxx.com. ← サーバーIPアドレス最下位部(192.168.1.11)とドメイン指定

※ 複数のドメインで運用する場合は下記のように付け足していけばOK
11      IN PTR   xxxxx2.com. ← サーバーIPアドレス最下位部(192.168.1.11)とドメイン指定

各レコード(SOA、NS、A、MX、CNAME、PTR,等…)の説明

ゾーンDBファイルに記載する各レコードの説明です。

$TTL 86400 TTL = Time to Live (生存期間)の指定。
他のネームサーバーがゾーンデータをキャッシュする時間を秒数で指定。
当サイトの設定の $TTL 86400 = 86400秒(24時間=1日)となる。

SOAレコード SOA = Stert of Authority で指定したネームサーバーがこのゾーンの情報源である事を意味している。
@       IN      SOA     ns1.xxxxx.com.  root.xxxxx.com.(
SOA直後のフィールドはプライマリ(マスタ)ネームサーバーのホスト名=サーバーのホスト名を指定している。

@       IN      SOA     ns1.xxxxx.com.  root.xxxxx.com.(
次のフィールドは管理者のメールアドレスを指定している。
メールアドレスの「@」は「.」に置き換えて記述する。


下記の部分はセカンダリ(スレーブ)ネームサーバーに対する設定となる。
内部向けの場合は、一般的にセカンダリネームサーバーを構築しないのであまり意味が無い気もするが
一応、設定だけして置く。

2009080301 ; Serial
ゾーンデータのシリアルNoとなる。ゾーンデータ更新の際はこの数字を大きくする必要がある。
この値が大きくなっていると、ゾーンデータが更新されたと判断されゾーンデータの情報が
セカンダリネームサーバーに伝達される。
間違わないように西暦+月+日+2桁(3桁)と言う形式が多く使用されている。

28800      ; Refresh
セカンダリネームサーバーがゾーンデータの更新をチェックする間隔を指定。

14400      ; Retry
ゾーンデータの更新チェックがサーバーダウン等のエラーでできなかった場合、リトライする間隔を指定。

3600000    ; Expire
エラー等によりゾーンデータの更新が行われなかった場合、ゾーンデータを無効にするまでの時間。
長い間更新がされなかったゾーンデータは信頼性がなくなったと判断される。

86400 )    ; Minimum
ネームサーバーがダウンしている等、名前解決ができなかった場合「できなかった」という情報を
どれくらい保持しているかという時間を指定。
NSレコード NS = Name Server でこのドメインを管理しているネームサーバーのアドレスを指定する。
記述の最後にドット(.)が必須となる。

Aレコード A = Host Address はホストの名前を定義する。
最初にドメイン自体のIPアドレスを定義し、続いて他のホスト名を定義する。
        IN A     192.168.1.1
www     IN A     192.168.1.1
ns1     IN A     192.168.1.1
MXレコード MX = Mail eXchange はメールサーバーのアドレスを指定する。
MXの後の「10」は複数メールサーバーが存在する場合の優先度を指定している。
数値が小さいほど優先順位が高くなる(10←20←30)
記述の最後にドット(.)が必須となる。

CNAMEレコード CNAME = Canonical Name はエイリアス(別名)を定義する。
1つのIPアドレスに幾つかのホスト名を割り当てるときに使用する。

PTRレコード PTR = PoinTeR は主に逆引きゾーンDBで使用する。
IPアドレスから変換先のホスト名を定義する。

その他記号の説明

; (セミコロン) セミコロンの後の文字は無視されます。

IN IN = Intellingent Nerworks はインターネットで使用するレコードである事を定義している。

@ ゾーンの基点を意味していて、named.confのzone"xxxxx"で指定されたxxxxxと同じ意味がある。
named.confでzone"xxxxx.com"を指定していればゾーンファイルの@はxxxxx.comと同じ事である。

DNSサーバーの起動と自動起動設定


# /etc/rc.d/init.d/named start ← 起動
namedを起動中:                 [ OK ]


# chkconfig named on ← DNSサーバー自動起動設定

# chkconfig --list named ← DNSサーバー自動起動設定の確認
named           0:off   1:off   2:off   3:on    4:on    5:on    6:off← ランベル3〜5 が on か確認

問合せDNSサーバーをLinuxサーバーに変更する

外部ルータ使用の場合

ルーターのDHCP設定でDNSサーバーのIPアドレスをLinuxサーバーのIPアドレスに変更します。

サーバー機でルータ構築した場合


# vi /etc/resolv.conf ← 編集

nameserver 192.168.1.1 ← サーバーの問い合わせDNSサーバーを構築したDNSサーバーに変更

# cat /etc/resolv.conf | grep nameserver ← 設定確認(下記の様に反映されていればOK)
nameserver 192.168.1.1


# vi /etc/dhcpd.conf ← 編集

DHCPサーバーを構築している事が前提となります。


option domain-name-servers 192.168.1.1; ← DNSサーバーを構築したDNSサーバーに変更

# /etc/init.d/dhcpd restart ← DHCPサーバー再起動
dhcpd を停止中:                                   [  OK  ]
dhcpd を起動中:                                   [  OK  ]






Copyright c Vine Linuxで自宅サーバー. 2004 All Rights Reserved.