FreeBSDのbindを設定する

FreeBSDをインストールしたマシンのDNSを設定するメモ(固定IPが1つでポートフォワーディングによる運用の場合)。

FreeBSDではインストールした時点でbindが使えるようになっているので、設定ファイルを書くだけでDNSを運用することが出来る。

必要な情報は

  • ISPから割り当てられた固定IPアドレス
  • ドメイン
  • サーバの名称
  • サーバのIPアドレス

今回は

ISPから割り当てられた固定IPアドレス 192.168.2.1
ドメイン hogehoge.jp
サーバの名称 dns
サーバのIPアドレス 192.168.1.2

と仮定して設定。

  • /rtc/rc.confの確認
    /etc/rc.confを確認して「hostname」が設定されているか確認。hostnameにはホスト名+ドメイン名を指定する。今回はサーバの名称は「dns」、ドメインが「hogehoge.jp」なので

    [sourcecode lang=”text”]hostname="dns.hogehoge.jp"[/sourcecode]

    のように記述されていればOK。

  • /etc/resolv.conf の設定
    リゾルバの設定を行うために、resolv.confを設定。

    [sourcecode lang=”text”]domain            hogehoge.jp
    nameserver        192.168.1.2[/sourcecode]

    のように編集。
    nameserverの部分はサーバのIPアドレスを記述。

  • /etc/namedb/named.conf の設定
    bindの設定ファイル named.conf を修正。

    • WAN側とLAN側で設定を変えるためview文を使って切り分けを行う。
    • クライアント側のIPアドレスによってどちらの設定を見るかはview文の中に記述してあるmatch-clients文にて指定する。
    • match-clients内にanyと記述すると「それ以外」の意味になるので、LAN側で使用するviewは必ずany指定のviewより前に書かなければならない。
    • ルートキャッシュとローカルループバック逆引き用ゾーンファイルはそれぞれのviewに記述する。

    [sourcecode lang="text"]options {
    directory       "/etc/namedb";
    pid-file        "/var/run/named/pid";
    dump-file       "/var/dump/named_dump.db";
    statistics-file "/var/stats/named.stats";
    };
    logging {
    channel bind_log {
    file "/var/log/named.log" versions 3 size 10m;
    severity        info;
    print-time      yes;
    print-category  yes;
    };
    channel upd_log {
    file "/var/log/named_upd.log" versions 3 size 10m;
    severity        info;
    print-time      yes;
    print-category  yes;
    };
    category default { bind_log; };
    category update-security { upd_log; };
    category update { upd_log; };
    category lame-servers { null; };
    };
    view "internal" {
    match-clients {
    127.0.0.0/8;
    192.168.1.0/24;
    };
    zone "." {
    type hint;
    file "named.root";
    };
    zone "0.0.127.IN-ADDR.ARPA" {
    type master;
    file "master/localhost.rev";
    };
    zone "1.168.192.IN-ADDR.ARPA" {
    type master;
    file "master/local/1.168.192.rev";
    };
    zone "hogehoge.jp" {
    type master;
    file "master/local/hogehoge.jp.zone";
    };
    };
    view "external" {
    match-clients {
    any;
    };
    zone "." {
    type hint;
    file "named.root";
    };
    zone "0.0.127.IN-ADDR.ARPA" {
    type master;
    file "master/localhost.rev";
    };
    zone "hogehoge.jp" {
    type master;
    file "master/global/hogehoge.jp.zone";
    };
    };[/sourcecode]

  • ルートキャッシュ
    ルートキャッシュはFreeBSDインストール時に/etc/namedb/named.rootとして配置済み
  • ローカルループバック逆引き用ゾーンファイル
    /etc/namedb/masterディレクトリ内に「localhost.rev」として配置。

    [sourcecode lang=”text”]$TTL 3600
    @ IN SOA dns.hogehoge.jp. root.dns.hogehoge.jp. (
    2010090501 ; Serial
    3600 ; Refresh
    900 ; Retry
    86400 ; Expire
    3600 ) ; Minimum
    IN NS dns.hogehoge.jp.
    1 IN PTR localhost.hogehoge.jp.[/sourcecode]

  • 192.168.1.0/24逆引き用ゾーンファイル
    /etc/namedb/master/localディレクトリ内に「1.168.192.rev」として配置。

    [sourcecode lang=”text”]$TTL 3600
    @ IN SOA dns.hogehoge.jp. root.dns.hogehoge.jp. (
    2010090501 ; Serial
    3600 ; Refresh
    900 ; Retry
    86400 ; Expire
    3600 ) ; Minimum
    IN NS dns.hogehoge.jp.
    2 IN PTR dns.hogehoge.jp.[/sourcecode]

  • hogehoge.jp用正引き用ゾーンファイル(WAN側用)
    /etc/namedb/master/globalディレクトリ内に「hogehoge.jp.zone」として配置

    • IPアドレスの部分は固定IPサービスで付与されたIPアドレスを使用する
    • ネームサーバはNSレコードで指定
    • CNAMEレコードを使用した場合はエイリアスのような扱いとなるので、ネームベースでバーチャルホストを運用する場合はAレコードを使用する。(Aレコードを使用した場合は本来MXも指定するべき)
    • 最後に必ず自ドメインもAレコードを使用して登録する。

    [sourcecode lang=”text”]$TTL 3600
    @ IN SOA dns.hogehoge.jp. root.dns.hogehoge.jp. (
    2010092401 ; Serial
    3600 ; Refresh
    300 ; Retry
    604800 ; Expire
    3600 ) ; Minimum
    IN NS dns.hogehoge.jp.
    IN MX 10 dns.hogehoge.jp.
    ;—————————————————————–
    dns IN A 192.168.2.1
    IN MX 10 dns.hogehoge.jp.
    mail IN CNAME dns
    smtp IN CNAME dns
    pop IN CNAME dns
    www IN A 192.168.2.1
    hogehoge.jp. IN A 192.168.2.1[/sourcecode]

  • hogehoge.jp用正引き用ゾーンファイル(LAN側用)
    /etc/namedb/master/localディレクトリ内に「hogehoge.jp.zone」として配置

    • 基本的にWAN側用と異なる部分はないがIPアドレスの部分をサーバのIPアドレスとする。

    [sourcecode lang=”text”]$TTL 3600
    @ IN SOA dns.hogehoge.jp. root.dns.hogehoge.jp. (
    2010092401 ; Serial
    3600 ; Refresh
    300 ; Retry
    604800 ; Expire
    3600 ) ; Minimum
    IN NS dns.hogehoge.jp.
    IN MX 10 dns.hogehoge.jp.
    ;—————————————————————–
    dns IN A 192.168.1.2
    IN MX 10 dns.hogehoge.jp.
    mail IN CNAME dns
    smtp IN CNAME dns
    pop IN CNAME dns
    www IN A 192.168.1.2
    hogehoge.jp. IN A 192.168.1.2[/sourcecode]

  • bindの起動設定
    /etc/rc.confファイルに下記のように追記する。

    [sourcecode lang=”text”]# BIND Enable
    named_enable="YES"[/sourcecode]

以上でbindの設定は完了。rebootするかrehashした後に/etc/rc.d/named start(再起動ならrestart)をしてnamedが起動していればOK。起動しない場合は/var/named/var/logのnamed.logを確認する。(というかlogging文が効いていないような…)

外部から名前を引くためにはネームサーバを登録する必要がある。この作業はドメインを取得したレジストラ経由で行える。大抵は管理用のサービスが提供されているので、該当レジストラのサイトを参照すること。

ホスト追加等でゾーンファイルを修正した場合は、Serialを更新(前の値より大きい値)に変更する。このため、大抵はYYYYMMDDxxのように年月日+シリアルのような値にしてある。例えば、2010年1月1日に変更した場合でその日初めての修正であれば、Serialは2010010101のとすればいい。

ちなみに、固定IP4つとか8つ等のサービスなら、ルータはunnumberdで接続するだろうから、サーバに直接固定IPを割り振ることが出来るのでnamed.confでviewを使った切り分けは必要ない。

逆引きの委譲を行ってくれるサービスは少ないけれど、委譲される場合はISPの設定例を参考に逆引きゾーンファイルを作ってやればOK。委譲はしないけれどISPが提供する管理画面で設定できることもあるので、サービスの概要を理解しておくことが必要。逆引きは正しく設定しておくのが望ましいので。

以下、ちょっとしたメモ

  • 他所のセカンダリを引き受ける場合
    例えばネームサーバが192.168.3.1のhogehoge2.jpドメインのセカンダリを引き受ける場合、named.confで下記のように指定する。

    [sourcecode lang=”text”] zone "hogehoge2.jp" {
    type slave;
    file "slave/hogehoge2.jp.zone";
    masters {
    192.168.3.1;
    };
    };[/sourcecode]

  • 他所にセカンダリを引き受けてもらう場合
    IPアドレス192.168.3.1のネームサーバにセカンダリを引き受けてもらう場合は、options文の中に下記のように設定する。

    [sourcecode lang=”text”] allow-transfer {
    192.168.3.1;
    };[/sourcecode]

  • ワイルドカードを設定する場合
    Wordpressでワイルドカードドメインが必要な場合、ゾーンファイル内でAレコードの実体を定義しておいて、それに対してCNAMEでワイルドカードを指定する。

    [sourcecode lang=”text”]blog IN A 192.168.2.1
    *.blog.hogehoge.jp. IN CNAME blog.hogehoge.jp.[/sourcecode]

  • サブドメインの委譲
    委譲する側でサブドメイン用のネームサーバをNSレコードで設定し、Aレコードでサブドメイン用のネームサーバをのIPアドレスを指定する。
    例えば、hogehoge.jpのサブドメインsubをdns.sub.hogehoge.jp(192.168.3.1)のネームサーバに委譲する場合。

    [sourcecode lang=”text”]sub IN NS dns.sub.hogehoge.jp.
    dns.sub.hogehoge.jp. IN A 192.168.3.1[/sourcecode]

コメント

タイトルとURLをコピーしました