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]
コメント