DNSサーバbindの架設ノート

13869 ワード

BindはLinuxの下で主流のDNSサーバ架設ソフトウェアであり、本編ではyumによるRHEL 7へのDNSサーバのインストールと構成について述べる
  • yumを通じてbindソフトウェアをオンラインでインストールし、ダウンロードしたバージョンは9.9.4
  • である.
    #yum -y install bind

    プライマリファイルの保存パス:
            /etc/named.confプライマリプロファイル
    /var/named領域ファイル格納パス
            /etc/rndc.conf    /etc/rndc.key rndcプロファイルとKEY保存パス
    順方向領域:FQDNアドレスをIPレコードに変換する
    逆方向領域:IPアドレスをFQDNに逆解する
    レコードタイプ:Aレコード:addressドメイン名対応IPアドレス
    NSレコード:name serverドメイン名サービスレコード,ドメイン名に対応するドメイン名解析サーバに対応するサーバを指定する
    一般的にドメイン名のDNSサーバーで、ここではAレコードを使用して、ペアで表示する必要があります
    CNAME:別名レコード、異なるドメイン名を
    MXレコード:メール交換レコード(mail exchange)、ここでメール交換のドメイン名を指定します.ここに優先順位があります.
    レベル、数字が小さいほど優先度が高くなります.例えば、複数のメールサーバがある場合、優先度の高いサーバが先に受信されます.
    SOA:Start of Authority、一般的な書式は:
    google.com.    IN    SOA    ns1.google.com.    adminmail.google.com
    そのうちgoogle.com.@で代用することができて、第4項はNS記録で、最後の項は管理者のメールボックスで、@は特殊な意義があって、使います.に代わる
    serialはシーケンスを更新し、シーケンス番号が変更された場合、サーバからリフレッシュ時間になるとプライマリサーバから同期します
    Refreshのリフレッシュ時間が長く、プライマリ・サーバからサーバが同期する間隔
    Retry再試行時間が長く、サーバーからプライマリサーバーとの同期に失敗した後、どのくらい後に再試行されますか?
    expireは失効時間が長く、サーバからプライマリサーバとの通信に失敗し、応答がなく、expireまで時間が長くなると、服から
    が無効になり、ゾーンファイルが削除されます.
    na ttl解析できないアドレスのキャッシュ時間
    デフォルトの単位は秒で、M(分)、H(時間)、D(日)、W(週)を使用できます.
    TTL値:DNSキャッシュの時間、デフォルト単位は秒
    領域タイプ:
    hint:ルート領域、一般用.表示
    マスター:メインエリア
    slave:スレーブ領域,声名スレーブ領域タイプの場合,マスター領域のアドレスmasters{Master_IP;}を指名しなければならない.
    forward:ドメイン名の解析を担当せず、指定したDNSサーバにドメイン名の解析のみを渡す転送領域
    一、単一サーバー構成
    次はgoogle.comを例にとると、ローカルセグメントは10.1.0.0/16,ns 1である.google.com(10.1.17.221)はNSサーバ、www.google.com(10.1.17.221),mail.google.com(10.1.17.222)、www 2はwwwの別名で、まずvim/etc/named.conf
    listen-on port 53 { 10.1.17.221; };  # , IP, 127.0.0.1
    directory       "/var/named";        # , 
    allow-query     { 10.1.0.0/16; };    # , , any
    zone "google.com" IN    {
            type master;
            file "google.zone";
    };
    # , /var/named/google.zone
    zone "17.1.10.in-addr.arpa"  IN {
            type master;
            file "zone.google";
    };
    # ,.in-addr.arpa , 17.1.10 10.1.17 

    /var/namedの下に入ってgoogleを新規作成します.zoneファイル
    $TTL    7200
    google.com.     IN      SOA     ns1.google.com. adminmail.google.com. (
                                    2015100301
                                    2H
                                    5M
                                    1W
                                    4H )
                    IN      NS      ns1
                    IN      MX 10   mail
    ns1             IN      A       10.1.17.221
    www             IN      A       10.1.17.221
    mail            IN      A       10.1.17.222
    www2            IN      CNAME   WWW

    Googleを編集します.zoneファイルのプロパティ
    #chmod 640 google.zone
    #chown root:named google.zone

    Google.zoneはzoneとしてコピーします.Googleで編集
    #cp -p google.zone zone.google
    #vim zone.google
    $TTL    7200
    @    IN      SOA     ns1.google.com. adminmail.google.com. (
                                    2015100301
                                    2H
                                    5M
                                    1W
                                    4H )
    @               IN      NS      ns1.google.com.
    221             IN      PTR     ns1.google.com.
    221             IN      PTR     www.google.com.
    222             IN      PTR     mail.google.com.

    プロファイルを確認し、ファイアウォールを開き、電源を入れて起動します.
    #named-checkconf 
    #systemctl enable named
    ln -s '/usr/lib/systemd/system/named.service' '/etc/systemd/system/multi-user.target.wants/named.service'
    #firewall-cmd --permanent --add-service=dns
    success
    #firewall-cmd --reload 
    success
    #named-checkzone google.com /var/named/google.zone 
    zone google.com/IN: loaded serial 2015100301
    OK
    #named-checkzone 17.1.10.in-addr.arpa /var/named/zone.google 
    zone 17.1.10.in-addr.arpa/IN: loaded serial 2015100301
    OK
    # systemctl start named

    dig解析の使用
    dig -t A www.google.com @10.1.17.221
    ; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> -t A www.google.com @10.1.17.221
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53996
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;www.google.com.   IN A
    ;; ANSWER SECTION:
    www.google.com.  7200 IN A 10.1.17.221
    ;; AUTHORITY SECTION:
    google.com.  7200 IN NS ns1.google.com.
    ;; ADDITIONAL SECTION:
    ns1.google.com.  7200 IN A 10.1.17.221
    ;; Query time: 0 msec
    ;; SERVER: 10.1.17.221#53(10.1.17.221)
    ;; WHEN: Sat Oct 03 18:16:06 CST 2015
    ;; MSG SIZE  rcvd: 93
    dig -t NS google.com @10.1.17.221
    ; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> -t NS google.com @10.1.17.221
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35541
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 2
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;google.com.   IN NS
    ;; ANSWER SECTION:
    google.com.  7200 IN NS ns1.google.com.
    ;; ADDITIONAL SECTION:
    ns1.google.com.  7200 IN A 10.1.17.221
    ;; Query time: 0 msec
    ;; SERVER: 10.1.17.221#53(10.1.17.221)
    ;; WHEN: Sat Oct 03 18:16:49 CST 2015
    ;; MSG SIZE  rcvd: 73

    逆解10.1.17.222
    dig -x 10.1.17.222 @10.1.17.221
    ; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> -x 10.1.17.222 @10.1.17.221
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46954
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;222.17.1.10.in-addr.arpa. IN PTR
    ;; ANSWER SECTION:
    222.17.1.10.in-addr.arpa. 7200 IN PTR mail.google.com.
    ;; AUTHORITY SECTION:
    17.1.10.in-addr.arpa. 7200 IN NS ns1.google.com.
    ;; ADDITIONAL SECTION:
    ns1.google.com.  7200 IN A 10.1.17.221
    ;; Query time: 0 msec
    ;; SERVER: 10.1.17.221#53(10.1.17.221)
    ;; WHEN: Sat Oct 03 18:17:37 CST 2015
    ;; MSG SIZE  rcvd: 116

    二、主従配置
    現在、サーバーが1台追加され、IPアドレスは10.1.17.249です.
    #yum -y install bind
    #systemctl enable bind
    #firewall-cmd --permanent --add-service=dns
    success
    # firewall-cmd --reload
    success

    マスター上のgoogleを構成します.zoneエリアファイル、2行を追加し、サーバからのnsレコードを定義し、シーケンス番号を2015100302に変更
    google.com.             IN      NS      ns2
    ns2             IN      A       10.1.17.249

    新しいロードプロファイル#systemctl restart namedから
    サーバからのプロファイル/etc/namedを構成する.conf
    listen-on port 53 { 10.1.17.249; };
    allow-query     { 10.1.0.0/16; };
    zone    "google.com" IN {
            type slave;
            masters { 10.1.17.221; };
            file    "slaves/google.zone";
    };
    zone    "17.1.10.in-addr.arpa" IN {
            type slave;
            masters { 10.1.17.221; };
            file "slaves/zone.google";
    };

    zoneファイルを新規作成せずにnamedサービスを開始
    #systemctl start named
    #tail -n 30 /var/log/messages
    Oct  3 10:54:48 sunny named[70231]: zone google.com/IN: transferred serial 2015100301
    Oct  3 10:54:48 sunny named[70231]: transfer of 'google.com/IN' from 10.1.17.221#53: Transfer completed: 1 messages, 8 records, 224 bytes, 0.002 secs (112000 bytes/sec)
    Oct  3 10:54:48 sunny named[70231]: zone 17.1.10.in-addr.arpa/IN: Transfer started.
    Oct  3 10:54:48 sunny named[70231]: transfer of '17.1.10.in-addr.arpa/IN' from 10.1.17.221#53: connected using 10.1.17.249#54080
    Oct  3 10:54:48 sunny named[70231]: zone 17.1.10.in-addr.arpa/IN: transferred serial 2015100301
    Oct  3 10:54:48 sunny named[70231]: transfer of '17.1.10.in-addr.arpa/IN' from 10.1.17.221#53: Transfer completed: 1 messages, 6 records, 207 bytes, 0.002 secs (103500 bytes/sec)

    /var/named/slavesディレクトリの表示
    # ll slaves/
    total 8
    -rw-r--r--. 1 named named 401 Oct  3 10:54 google.zone
    -rw-r--r--. 1 named named 333 Oct  3 10:54 zone.google

    エリアファイルが転送されました
    dig -t ns google.com @10.1.17.249
    ; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> -t ns google.com @10.1.17.249
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33041
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 3
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;google.com.   IN NS
    ;; ANSWER SECTION:
    google.com.  7200 IN NS ns2.google.com.
    google.com.  7200 IN NS ns1.google.com.
    ;; ADDITIONAL SECTION:
    ns1.google.com.  7200 IN A 10.1.17.221
    ns2.google.com.  7200 IN A 10.1.17.249
    ;; Query time: 0 msec
    ;; SERVER: 10.1.17.249#53(10.1.17.249)
    ;; WHEN: Sat Oct 03 11:01:46 CST 2015
    ;; MSG SIZE  rcvd: 107

    プライマリスレーブ同期に成功しました.ここで注意したいのは、NSレコードを追加する場合、ゾーンファイルのserialシリアル番号を+1操作する必要があります.これにより、サーバから同期したことをアクティブに通知できます.そうしないと、リフレッシュ時間まで同期する必要があります.
    三、転送サーバーの設定
    dnssec関連の構成をプライマリプロファイルで変更する必要があります
     
    dnssec-lookaside auto;

    ゾーンファイルの定義
    zone "google.com" IN    {
            type forward;
            forward first;
            forwarders      { 10.1.17.221; };
    };

    firstオプションは先に転送を表し、転送が無効な場合はルートにクエリーを行い、もう一つのオプションはonlyで、転送のみを表す
    forwardersは、どのDNSサーバに転送を要求するかを表します.
    dig -t A mail.google.com
    ; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> -t A mail.google.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51515
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;mail.google.com.  IN A
    ;; ANSWER SECTION:
    mail.google.com. 7200 IN A 10.1.17.222
    ;; AUTHORITY SECTION:
    google.com.  7200 IN NS ns2.google.com.
    google.com.  7200 IN NS ns1.google.com.
    ;; ADDITIONAL SECTION:
    ns2.google.com.  7200 IN A 10.1.17.249
    ns1.google.com.  7200 IN A 10.1.17.221
    ;; Query time: 2 msec
    ;; SERVER: 10.1.17.224#53(10.1.17.224)
    ;; WHEN: Sat Oct 03 11:47:31 CST 2015
    ;; MSG SIZE  rcvd: 128

    3台目のマシンでテストを行い、正常に表示できます
    四、サブドメインの定義
    現在tech.googleというサブドメインがあります.com.現在の3番目のサーバ10.1.17.224に渡して管理し、まずマスタの領域プロファイルをvim/var/named/google編集する.zone
    $TTL    7200
    google.com.     IN      SOA     ns1.google.com. adminmail.google.com. (
                                    2015100303    
                                    2H
                                    5M
                                    1W
                                    4H )
                    IN      NS      ns1
                    IN      MX 10   mail
    google.com.             IN      NS      ns2
    tech            IN      NS      ns1.tech
    ns1.tech            IN      A       10.1.17.224
    ns2             IN      A       10.1.17.249
    ns1             IN      A       10.1.17.221
    www             IN      A       10.1.17.221
    mail            IN      A       10.1.17.222
    www2            IN      CNAME   WWW
    # , tech ns A , dnssec-enable no;dnssec-validation no; no

    サブドメインのプライマリプロファイルの変更
    zone "tech.google.com" IN {
            type master;
            file "tech.google.zone";
    };

    新しいエリアファイルtech.google.zone、権限を設定します
    $TTL 7200
    @       IN      SOA     ns1.tech.google.com. admin.tech.google.com. (
                            2015100301
                            2H
                            5M
                            1W
                            4H  )
            IN      NS      ns1
    ns1     IN      A       10.1.17.224
    info    IN      A       10.1.17.226
    www     IN      A       10.1.17.225

    サブドメインでのテスト
     dig -t A www.tech.google.com
    ; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> -t A www.tech.google.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62468
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;www.tech.google.com.  IN A
    ;; ANSWER SECTION:
    www.tech.google.com. 7200 IN A 10.1.17.225
    ;; AUTHORITY SECTION:
    tech.google.com. 7200 IN NS ns1.tech.google.com.
    ;; ADDITIONAL SECTION:
    ns1.tech.google.com. 7200 IN A 10.1.17.224
    ;; Query time: 0 msec
    ;; SERVER: 10.1.17.224#53(10.1.17.224)
    ;; WHEN: Sat Oct 03 14:39:37 CST 2015
    ;; MSG SIZE  rcvd: 98

    権威応答として提示する
    次は親ドメインでテストします.
    dig -t A www.tech.google.com @10.1.17.221
    ; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> -t A www.tech.google.com @10.1.17.221
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23320
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;www.tech.google.com.  IN A
    ;; ANSWER SECTION:
    www.tech.google.com. 7183 IN A 10.1.17.225
    ;; AUTHORITY SECTION:
    tech.google.com. 6832 IN NS ns1.tech.google.com.
    ;; ADDITIONAL SECTION:
    ns1.tech.google.com. 6832 IN A 10.1.17.224
    ;; Query time: 0 msec
    ;; SERVER: 10.1.17.221#53(10.1.17.221)
    ;; WHEN: Sat Oct 03 22:38:38 CST 2015
    ;; MSG SIZE  rcvd: 98

    親ドメインで正常にテストされました
    四、viewビュー機能
    ネットワークアドレスソースによってDNSを異なるアドレスに解析することができ、CDN加速に使用することができ、bindはACL機能をサポートし、異なるACLを通じて異なるネットワークを定義する.
    #vim /etc/named.conf
    acl intranet { 10.1.0.0/16; };
    acl internet { ! 10.1.0.0/16; any; };
    view "lan" {
        match-client { "intranet" };
        zone "google.com" IN {
         type master;
         file "google.zone.lan";
        };
    };
    view "wan" {
        match-client { "internet" };
        zone "17.1.10.in-addr.arpa" IN {
         type master;
         file "google.zone.wan";
        };
    };
     zone , A , DNS