FreeBSD:BIND-9.4.2設定

提供:KinusatiWiki
移動: 案内, 検索

目次

BIND-9.4.2インストール

独自DNSサーバを構築するため、BIND9.4.2をインストールする。

パッケージ導入

portsを利用する。

# portinstall bind94

OS基本BINDコマンドをリネームする

OS基本コマンドが存在するとバージョン違いでrndcコマンド系が動作しないためリネームする

# for FILE in /usr/sbin/named \
/usr/sbin/rndc-confgen \
/usr/bin/host \
/usr/sbin/dnssec-signzone \
/usr/bin/nsupdate \
/usr/sbin/rndc \
/usr/sbin/lwresd \
/usr/bin/dig \
/usr/sbin/dnssec-keygen \
/usr/sbin/named-checkzone \
/usr/sbin/named-checkconf \
/usr/bin/nslookup \
do
  mv $FILE $FILE.ORG
done

自動起動設定

/etc/rc.confに以下を追加。なおBINDはchrootで動作させる

named_enable="YES"
named_program="/usr/local/sbin/named"
named_flags="-c /etc/named.conf -u bind -t /var/named"
named_pidfile="/var/run/named.pid"
=> named_pidfileを明示的に指定しないと/etc/rc.d/named stopが正常に動作しない。

rndcを利用可能とする

BINDのコントロールに利用するrndcコマンドを設定する

rndc.keyを作成する

# /usr/local/sbin/rndc-confgen
=> 表示された"key"・"options"項目を/usr/local/etc/rndc.keyに記載する
key "rndc-key" {
       algorithm hmac-md5;
       secret "xxxxxxxxxx";
};
options {
       default-key "rndc-key";
       default-server 127.0.0.1;
       default-port 953;
};

rndc-confgenの設定をnamed.confに転機

rndc-confgenで表示されたコンフィグの中で、コメントアウトで表示された"key"・"controls"項目を/var/named/etc/named.confに転記する。このときコメントアウトは外す。

key "rndc-key" {
      algorithm hmac-md5;
      secret "xxxxxxxxxxx";
};
controls {
      inet 127.0.0.1 port 953
              allow { 127.0.0.1; } keys { "rndc-key"; };
};

named.conf設定 =

設定方針は以下の通り

  • ゾーン提供およびキャッシュサーバとして動作させる。フォワーダーにはIIJ DNSを利用する
  • secure bind templateおよびRFC, IANAの指針に基づき設定する
  • chrootで動作させる
  • ログファイルは/var/named/var/log/配下に出力する。ログファイルの保存は100m x 30世代とする。
  • BINDのバージョン問い合わせは適当なバージョンを返すこととする

named.confは以下の通り

acl "xfer" {
    2001.xx.xx::/48;
    ::1;
    127.0.0.1;
    xxx.xxx.xxx.xxx/28;
    yyy.yyy.yyy.yyy/24;
};

acl "internal" {
    2001.xx.xx::/48;
    ::1;
    127.0.0.1;
    xxx.xxx.xxx.xxx/28;
};
acl "trusted" {
    2001.xx.xx::/48;
    ::1;
    127.0.0.1;
    xxx.xxx.xxx.xxx/28;
};

acl "bogon" {
    0.0.0.0/8;
    1.0.0.0/8;
    2.0.0.0/8;
    5.0.0.0/8;
    10.0.0.0/8;
    14.0.0.0/8;
    23.0.0.0/8;
    27.0.0.0/8;
    31.0.0.0/8;
    36.0.0.0/8;
    37.0.0.0/8;
    39.0.0.0/8;
    42.0.0.0/8;
    46.0.0.0/8;
    49.0.0.0/8;
    50.0.0.0/8;
    100.0.0.0/8;
    101.0.0.0/8;
    102.0.0.0/8;
    103.0.0.0/8;
    104.0.0.0/8;
    105.0.0.0/8;
    106.0.0.0/8;
    107.0.0.0/8;
    108.0.0.0/8;
    109.0.0.0/8;
    110.0.0.0/8;
    111.0.0.0/8;
    112.0.0.0/8;
    113.0.0.0/8;
    169.254.0.0/16;
    172.16.0.0/12;
    175.0.0.0/8;
    176.0.0.0/8;
    177.0.0.0/8;
    178.0.0.0/8;
    179.0.0.0/8;
    180.0.0.0/8;
    181.0.0.0/8;
    182.0.0.0/8;
    183.0.0.0/8;
    184.0.0.0/8;
    185.0.0.0/8;
    192.0.2.0/24;
    192.168.0.0/16;
    197.0.0.0/8;
    198.18.0.0/15;
    223.0.0.0/8;
    224.0.0.0/3;

};

key "rndc-key" {
    algorithm hmac-md5;
    secret "xxxxxxxx";
};

controls {
    inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; };
};

logging {
    channel "log_default" {
        file "/var/log/named.log" versions 30 size 100m;
        severity info;
        print-time yes;
        print-category yes;
    };
    category default { log_default; };
    category general { log_default; };
    category security { log_default; };
    category config { log_default; };
    category resolver { log_default; };
    category xfer-in { log_default;};
    category xfer-out { log_default;};
    category notify { log_default;};
    category client { log_default;};
    category network { log_default;};
    category update { log_default;};
    category lame-servers { log_default;};
    channel "log_queries" {
        file "/var/log/queries.log" versions 30 size 100m;
        severity info;
        print-time yes;
        print-category yes;
    };
    category queries { log_queries; };

};

options {
    directory "/etc/namedb";
    pid-file "/var/run/named.pid";
    statistics-file "/var/stats/named.stats";
    dump-file "/var/dump/named.dump";
    zone-statistics yes;
    notify no;
    transfer-format many-answers;
    max-transfer-time-in 120;
    interface-interval 0;
    forward only;
    forwarders { 202.232.2.38; 202.232.2.39;}; // IIJ DNS

    disable-empty-zone "255.255.255.255.IN-ADDR.ARPA";
    disable-empty-zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA";
    disable-empty-zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA";

    allow-transfer { xfer; };
    allow-query { trusted; };
    blackhole { bogon; };
};

view "internal-in" in {
    match-clients { internal; };
    recursion yes;
    additional-from-auth yes;
    additional-from-cache yes;

    allow-transfer { xfer; };
    allow-query { any; };

    // Service ZONE
    zone "foo.bar.com"     { type master; file "master/foo.bar.com.db"; };

    // RFC 1912
    zone "localhost"        { type master; file "master/localhost-forward.db"; };
    zone "127.in-addr.arpa" { type master; file "master/localhost-reverse.db"; };
    zone "255.in-addr.arpa" { type master; file "master/empty.db"; };

    // RFC 1912-style zone for IPv6 localhost address
    zone "0.ip6.arpa"       { type master; file "master/localhost-reverse.db"; };

    // "This" Network (RFCs 1912 and 3330)
    zone "0.in-addr.arpa"           { type master; file "master/empty.db"; };

    // Private Use Networks (RFC 1918)
    zone "10.in-addr.arpa"          { type master; file "master/empty.db"; };
    zone "16.172.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "17.172.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "18.172.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "19.172.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "20.172.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "21.172.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "22.172.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "23.172.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "24.172.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "25.172.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "26.172.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "27.172.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "28.172.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "29.172.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "30.172.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "31.172.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "168.192.in-addr.arpa"     { type master; file "master/empty.db"; };

    // Link-local/APIPA (RFCs 3330 and 3927)
    zone "254.169.in-addr.arpa"     { type master; file "master/empty.db"; };

    // TEST-NET for Documentation (RFC 3330)
    zone "2.0.192.in-addr.arpa"     { type master; file "master/empty.db"; };

    // Router Benchmark Testing (RFC 3330)
    zone "18.198.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "19.198.in-addr.arpa"      { type master; file "master/empty.db"; };

    // IANA Reserved - Old Class E Space
    zone "240.in-addr.arpa"         { type master; file "master/empty.db"; };
    zone "241.in-addr.arpa"         { type master; file "master/empty.db"; };
    zone "242.in-addr.arpa"         { type master; file "master/empty.db"; };
    zone "243.in-addr.arpa"         { type master; file "master/empty.db"; };
    zone "244.in-addr.arpa"         { type master; file "master/empty.db"; };
    zone "245.in-addr.arpa"         { type master; file "master/empty.db"; };
    zone "246.in-addr.arpa"         { type master; file "master/empty.db"; };
    zone "247.in-addr.arpa"         { type master; file "master/empty.db"; };
    zone "248.in-addr.arpa"         { type master; file "master/empty.db"; };
    zone "249.in-addr.arpa"         { type master; file "master/empty.db"; };
    zone "250.in-addr.arpa"         { type master; file "master/empty.db"; };
    zone "251.in-addr.arpa"         { type master; file "master/empty.db"; };
    zone "252.in-addr.arpa"         { type master; file "master/empty.db"; };
    zone "253.in-addr.arpa"         { type master; file "master/empty.db"; };
    zone "254.in-addr.arpa"         { type master; file "master/empty.db"; };

    // IPv6 Unassigned Addresses (RFC 4291)
    zone "1.ip6.arpa"               { type master; file "master/empty.db"; };
    zone "3.ip6.arpa"               { type master; file "master/empty.db"; };
    zone "4.ip6.arpa"               { type master; file "master/empty.db"; };
    zone "5.ip6.arpa"               { type master; file "master/empty.db"; };
    zone "6.ip6.arpa"               { type master; file "master/empty.db"; };
    zone "7.ip6.arpa"               { type master; file "master/empty.db"; };
    zone "8.ip6.arpa"               { type master; file "master/empty.db"; };
    zone "9.ip6.arpa"               { type master; file "master/empty.db"; };
    zone "a.ip6.arpa"               { type master; file "master/empty.db"; };
    zone "b.ip6.arpa"               { type master; file "master/empty.db"; };
    zone "c.ip6.arpa"               { type master; file "master/empty.db"; };
    zone "d.ip6.arpa"               { type master; file "master/empty.db"; };
    zone "e.ip6.arpa"               { type master; file "master/empty.db"; };
    zone "0.f.ip6.arpa"             { type master; file "master/empty.db"; };
    zone "1.f.ip6.arpa"             { type master; file "master/empty.db"; };
    zone "2.f.ip6.arpa"             { type master; file "master/empty.db"; };
    zone "3.f.ip6.arpa"             { type master; file "master/empty.db"; };
    zone "4.f.ip6.arpa"             { type master; file "master/empty.db"; };
    zone "5.f.ip6.arpa"             { type master; file "master/empty.db"; };
    zone "6.f.ip6.arpa"             { type master; file "master/empty.db"; };
    zone "7.f.ip6.arpa"             { type master; file "master/empty.db"; };
    zone "8.f.ip6.arpa"             { type master; file "master/empty.db"; };
    zone "9.f.ip6.arpa"             { type master; file "master/empty.db"; };
    zone "a.f.ip6.arpa"             { type master; file "master/empty.db"; };
    zone "b.f.ip6.arpa"             { type master; file "master/empty.db"; };
    zone "0.e.f.ip6.arpa"           { type master; file "master/empty.db"; };
    zone "1.e.f.ip6.arpa"           { type master; file "master/empty.db"; };
    zone "2.e.f.ip6.arpa"           { type master; file "master/empty.db"; };
    zone "3.e.f.ip6.arpa"           { type master; file "master/empty.db"; };
    zone "4.e.f.ip6.arpa"           { type master; file "master/empty.db"; };
    zone "5.e.f.ip6.arpa"           { type master; file "master/empty.db"; };
    zone "6.e.f.ip6.arpa"           { type master; file "master/empty.db"; };
    zone "7.e.f.ip6.arpa"           { type master; file "master/empty.db"; };

    // IPv6 ULA (RFC 4193)
    zone "c.f.ip6.arpa"             { type master; file "master/empty.db"; };
    zone "d.f.ip6.arpa"             { type master; file "master/empty.db"; };

    // IPv6 Link Local (RFC 4291)
    zone "8.e.f.ip6.arpa"           { type master; file "master/empty.db"; };
    zone "9.e.f.ip6.arpa"           { type master; file "master/empty.db"; };
    zone "a.e.f.ip6.arpa"           { type master; file "master/empty.db"; };
    zone "b.e.f.ip6.arpa"           { type master; file "master/empty.db"; };

    // IPv6 Deprecated Site-Local Addresses (RFC 3879)
    zone "c.e.f.ip6.arpa"           { type master; file "master/empty.db"; };
    zone "d.e.f.ip6.arpa"           { type master; file "master/empty.db"; };
    zone "e.e.f.ip6.arpa"           { type master; file "master/empty.db"; };
    zone "f.e.f.ip6.arpa"           { type master; file "master/empty.db"; };

    // IP6.INT is Deprecated (RFC 4159)
    zone "ip6.int"                  { type master; file "master/empty.db"; };

};

view "external-in" in {
    match-clients { any; };
    recursion no;
    additional-from-auth no;
    additional-from-cache no;

    allow-transfer { xfer; };
    allow-query { any; };

    // Service ZONE
    zone "foo.bar.com"     { type master; file "master/foo.bar.com.db"; };

    // RFC 1912
    zone "localhost"        { type master; file "master/localhost-forward.db"; };
    zone "127.in-addr.arpa" { type master; file "master/localhost-reverse.db"; };
    zone "255.in-addr.arpa" { type master; file "master/empty.db"; };

    // RFC 1912-style zone for IPv6 localhost address
    zone "0.ip6.arpa"       { type master; file "master/localhost-reverse.db"; };

    // "This" Network (RFCs 1912 and 3330)
    zone "0.in-addr.arpa"           { type master; file "master/empty.db"; };

    // Private Use Networks (RFC 1918)
    zone "10.in-addr.arpa"          { type master; file "master/empty.db"; };
    zone "16.172.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "17.172.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "18.172.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "19.172.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "20.172.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "21.172.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "22.172.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "23.172.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "24.172.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "25.172.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "26.172.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "27.172.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "28.172.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "29.172.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "30.172.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "31.172.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "168.192.in-addr.arpa"     { type master; file "master/empty.db"; };

    // Link-local/APIPA (RFCs 3330 and 3927)
    zone "254.169.in-addr.arpa"     { type master; file "master/empty.db"; };

    // TEST-NET for Documentation (RFC 3330)
    zone "2.0.192.in-addr.arpa"     { type master; file "master/empty.db"; };

    // Router Benchmark Testing (RFC 3330)
    zone "18.198.in-addr.arpa"      { type master; file "master/empty.db"; };
    zone "19.198.in-addr.arpa"      { type master; file "master/empty.db"; };

    // IANA Reserved - Old Class E Space
    zone "240.in-addr.arpa"         { type master; file "master/empty.db"; };
    zone "241.in-addr.arpa"         { type master; file "master/empty.db"; };
    zone "242.in-addr.arpa"         { type master; file "master/empty.db"; };
    zone "243.in-addr.arpa"         { type master; file "master/empty.db"; };
    zone "244.in-addr.arpa"         { type master; file "master/empty.db"; };
    zone "245.in-addr.arpa"         { type master; file "master/empty.db"; };
    zone "246.in-addr.arpa"         { type master; file "master/empty.db"; };
    zone "247.in-addr.arpa"         { type master; file "master/empty.db"; };
    zone "248.in-addr.arpa"         { type master; file "master/empty.db"; };
    zone "249.in-addr.arpa"         { type master; file "master/empty.db"; };
    zone "250.in-addr.arpa"         { type master; file "master/empty.db"; };
    zone "251.in-addr.arpa"         { type master; file "master/empty.db"; };
    zone "252.in-addr.arpa"         { type master; file "master/empty.db"; };
    zone "253.in-addr.arpa"         { type master; file "master/empty.db"; };
    zone "254.in-addr.arpa"         { type master; file "master/empty.db"; };

    // IPv6 Unassigned Addresses (RFC 4291)
    zone "1.ip6.arpa"               { type master; file "master/empty.db"; };
    zone "3.ip6.arpa"               { type master; file "master/empty.db"; };
    zone "4.ip6.arpa"               { type master; file "master/empty.db"; };
    zone "5.ip6.arpa"               { type master; file "master/empty.db"; };
    zone "6.ip6.arpa"               { type master; file "master/empty.db"; };
    zone "7.ip6.arpa"               { type master; file "master/empty.db"; };
    zone "8.ip6.arpa"               { type master; file "master/empty.db"; };
    zone "9.ip6.arpa"               { type master; file "master/empty.db"; };
    zone "a.ip6.arpa"               { type master; file "master/empty.db"; };
    zone "b.ip6.arpa"               { type master; file "master/empty.db"; };
    zone "c.ip6.arpa"               { type master; file "master/empty.db"; };
    zone "d.ip6.arpa"               { type master; file "master/empty.db"; };
    zone "e.ip6.arpa"               { type master; file "master/empty.db"; };
    zone "0.f.ip6.arpa"             { type master; file "master/empty.db"; };
    zone "1.f.ip6.arpa"             { type master; file "master/empty.db"; };
    zone "2.f.ip6.arpa"             { type master; file "master/empty.db"; };
    zone "3.f.ip6.arpa"             { type master; file "master/empty.db"; };
    zone "4.f.ip6.arpa"             { type master; file "master/empty.db"; };
    zone "5.f.ip6.arpa"             { type master; file "master/empty.db"; };
    zone "6.f.ip6.arpa"             { type master; file "master/empty.db"; };
    zone "7.f.ip6.arpa"             { type master; file "master/empty.db"; };
    zone "8.f.ip6.arpa"             { type master; file "master/empty.db"; };
    zone "9.f.ip6.arpa"             { type master; file "master/empty.db"; };
    zone "a.f.ip6.arpa"             { type master; file "master/empty.db"; };
    zone "b.f.ip6.arpa"             { type master; file "master/empty.db"; };
    zone "0.e.f.ip6.arpa"           { type master; file "master/empty.db"; };
    zone "1.e.f.ip6.arpa"           { type master; file "master/empty.db"; };
    zone "2.e.f.ip6.arpa"           { type master; file "master/empty.db"; };
    zone "3.e.f.ip6.arpa"           { type master; file "master/empty.db"; };
    zone "4.e.f.ip6.arpa"           { type master; file "master/empty.db"; };
    zone "5.e.f.ip6.arpa"           { type master; file "master/empty.db"; };
    zone "6.e.f.ip6.arpa"           { type master; file "master/empty.db"; };
    zone "7.e.f.ip6.arpa"           { type master; file "master/empty.db"; };

    // IPv6 ULA (RFC 4193)
    zone "c.f.ip6.arpa"             { type master; file "master/empty.db"; };
    zone "d.f.ip6.arpa"             { type master; file "master/empty.db"; };

    // IPv6 Link Local (RFC 4291)
    zone "8.e.f.ip6.arpa"           { type master; file "master/empty.db"; };
    zone "9.e.f.ip6.arpa"           { type master; file "master/empty.db"; };
    zone "a.e.f.ip6.arpa"           { type master; file "master/empty.db"; };
    zone "b.e.f.ip6.arpa"           { type master; file "master/empty.db"; };

    // IPv6 Deprecated Site-Local Addresses (RFC 3879)
    zone "c.e.f.ip6.arpa"           { type master; file "master/empty.db"; };
    zone "d.e.f.ip6.arpa"           { type master; file "master/empty.db"; };
    zone "e.e.f.ip6.arpa"           { type master; file "master/empty.db"; };
    zone "f.e.f.ip6.arpa"           { type master; file "master/empty.db"; };

    // IP6.INT is Deprecated (RFC 4159)
    zone "ip6.int"                  { type master; file "master/empty.db"; };

};

view "external-chaos" chaos {
    match-clients { any; };
    recursion no;

    zone "." {
        type hint;
        file "/dev/null";
    };

    zone "bind" {
        type master;
        file "master/db.bind";
        allow-query { trusted; };
        allow-transfer { none; };
    };
};



master/localhost-forward.dbは以下の通り


; $FreeBSD: src/etc/namedb/master/localhost-forward.db,v 1.1 2007/06/18 05:58:23 dougb Exp $

$TTL 3h
localhost. SOA localhost. nobody.localhost. 42 1d 12h 1w 3h
        ; Serial, Refresh, Retry, Expire, Neg. cache TTL

        NS      localhost.

        A       127.0.0.1
        AAAA    ::1

master/localhost-reverse.db


; $FreeBSD: src/etc/namedb/master/localhost-reverse.db,v 1.1 2007/06/18 05:58:23 dougb Exp $

$TTL 3h
@ SOA localhost. nobody.localhost. 42 1d 12h 1w 3h
        ; Serial, Refresh, Retry, Expire, Neg. cache TTL

        NS      localhost.

1.0.0   PTR     localhost.

1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 PTR localhost.

master/empty.dbは以下の通り


; $FreeBSD: src/etc/namedb/master/empty.db,v 1.1 2007/06/18 05:58:23 dougb Exp $

$TTL 3h
@ SOA @ nobody.localhost. 42 1d 12h 1w 3h
        ; Serial, Refresh, Retry, Expire, Neg. cache TTL

@       NS      @

; Silence a BIND warning
@       A       127.0.0.1

master/db.bindは以下の通り

$TTL    1D
$ORIGIN bind.
@       1D      CHAOS   SOA     localhost. root.localhost. (
                2099999999      ; serial
                3H              ; refresh
                1H              ; retry
                1W              ; expiry
                1D )            ; minimum
        CHAOS NS        localhost.

version.bind.   CHAOS  TXT "BIND"
authors.bind.   CHAOS  TXT ""
個人用ツール