Product SiteDocumentation Site

10.6. ドメインネームサーバ (DNS)

10.6.1. 原理とメカニズム

ドメインネームサービス (DNS) は Internet の基礎要素です: DNS はホスト名を IP アドレスに (その逆も) 対応付け、5.153.231.42001:41c8:1000:21::21:4 の代わりに www.debian.org を使えるようにします。
DNS レコードはゾーン分けされています; それぞれのゾーンはドメイン (またはサブドメイン) か IP アドレス範囲 (なぜなら、IP アドレスは通常連続した範囲を割り当てられるからです) にマッチします。プライマリサーバはあるゾーンに含まれる内容の情報を提供する権威的なサーバです; セカンダリサーバは、通常別のマシン上でホストされ、定期的にプライマリゾーンのコピーをとります。
各ゾーンには、様々な種類のレコード (リソースレコード) が含まれます:
  • A: IPv4 アドレス。
  • CNAME: 別名 (canonical name)。
  • MX: mail exchange、電子メールサーバ。MX レコードは他の電子メールサーバが与えられたあるアドレス宛の電子メールの送信先を見つけるために使われます。それぞれの MX レコードには優先順位があります。最も優先順位の高いサーバ (最も低い番号のサーバ) を最初に試行します (傍注BACK TO BASICS SMTP参照); 最初のサーバからの応答がなかった場合、他のサーバを優先度の高い順に試行します。
  • PTR: ある IP アドレスに対する名前の対応付け。このレコードはある IP アドレス範囲に対して対応付けられた「逆引き DNS」ゾーンに保存されます。例えば、1.168.192.in-addr.arpa192.168.1.0/24 範囲に含まれる全アドレスの逆引き対応が保存されているゾーンです。
  • AAAA: IPv6 アドレス。
  • NS: 名前をネームサーバに対応付けます。それぞれのドメインは最低 1 つの NS レコードを持っています。NS レコードでは、このドメインに対する問い合わせに答える事ができる DNS サーバを指定します; これは通常そのドメインに対するプライマリおよびセカンダリサーバです。NS レコードを使って DNS の権限委譲を指定することも可能です; 例えば、falcot.com ゾーンの NS レコードには internal.falcot.com が含まれます。これは internal.falcot.com ゾーンは別のサーバが担当することを意味します。もちろん、このサーバは internal.falcot.com ゾーンを宣言しなければいけません。
The reference name server, Bind, was developed and is maintained by ISC (Internet Software Consortium). It is provided in Debian by the bind9 package. Version 9 brings two major changes compared to previous versions. First, the DNS server can now run under an unprivileged user, so that a security vulnerability in the server does not grant root privileges to the attacker (as was seen repeatedly with versions 8.x).
2 番目は、Bind が DNS レコードの署名 (認証されている) に DNSSEC 標準をサポートするようになった変更です。これにより、中間者攻撃中に DNS レコードがなりすましされても、それを遮ることが可能になりました。

10.6.2. 設定

バージョンに依らず bind の設定ファイルは同じ構造をしています。
Falcot の管理者は、このドメインに関連する情報を保存するためにプライマリ falcot.com ゾーンを、ローカルネットワーク内の IP アドレスとの逆引き対応を付けるために 168.192.in-addr.arpa ゾーンを、作成しました。
以下に Falcot のファイルから抜粋した設定を載せます。これは DNS サーバ設定の足掛かりになります:

例10.12 /etc/bind/named.conf.local の抜粋

zone "falcot.com" {
        type master;
        file "/etc/bind/db.falcot.com";
        allow-query { any; };
        allow-transfer {
                195.20.105.149/32 ; // ns0.xname.org
                193.23.158.13/32 ; // ns1.xname.org
        };
};

zone "internal.falcot.com" {
        type master;
        file "/etc/bind/db.internal.falcot.com";
        allow-query { 192.168.0.0/16; };
};

zone "168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/db.192.168";
        allow-query { 192.168.0.0/16; };
};

例10.13 /etc/bind/db.falcot.com の抜粋

; falcot.com Zone 
; admin.falcot.com. => zone contact: admin@falcot.com
$TTL    604800
@       IN      SOA     falcot.com. admin.falcot.com. (
                        20040121        ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
; The @ refers to the zone name ("falcot.com" here)
; or to $ORIGIN if that directive has been used
;
@       IN      NS      ns
@       IN      NS      ns0.xname.org.

internal IN      NS      192.168.0.2

@       IN      A       212.94.201.10
@       IN      MX      5 mail
@       IN      MX      10 mail2

ns      IN      A       212.94.201.10
mail    IN      A       212.94.201.10
mail2   IN      A       212.94.201.11
www     IN      A       212.94.201.11

dns     IN      CNAME   ns

例10.14 /etc/bind/db.192.168 の抜粋

; Reverse zone for 192.168.0.0/16
; admin.falcot.com. => zone contact: admin@falcot.com
$TTL    604800
@       IN      SOA     ns.internal.falcot.com. admin.falcot.com. (
                        20040121        ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL

        IN      NS      ns.internal.falcot.com.

; 192.168.0.1 -> arrakis
1.0     IN      PTR     arrakis.internal.falcot.com.
; 192.168.0.2 -> neptune
2.0     IN      PTR     neptune.internal.falcot.com.

; 192.168.3.1 -> pau
1.3     IN      PTR     pau.internal.falcot.com.