manekineko倉金家ホームページ

趣味の部屋/サーバー構築メモ

20.DNSサーバー BIND9

2008年4月13日
プロバイダーの値上げに伴いプロバイダーを変更します。
そうするとレンタルDNSというのを借りていたので費用がかかります。
DNSも建ててみることにしました。

今まで使っていたプロバイダーのASAHI NETが無料だった固定IPアドレスを有料化すると言ってきました。さっそくsakura internetに乗り換えることにしました。(こういうことはわりと情け容赦なくやるたちで...)
jpドメインはレンタルDNSというのを使っていて設定を変えるときには費用が必要です。ついにDNS(Domain Name System)サーバーも立ち上げてみることにしました。

構想
Vine4にはBIND9というDNSサーバープログラムがあるのでそれを使います。

DNSにはインターネットでつなぎたいドメインのIPアドレスを得る機能(RESOLVER)と、自分のドメインのIPアドレスを知らせる機能があるのですが、目的は後者です。今回は両方やってみます。ただしRESOLVERとしての機能はプロバイダーのDNSを使ったほうがいいかもしれません。(たぶん速い)

ホストするドメインは kuragane.jp です。最初そこにDNSを設置すればいいかと思っていたのですが、よく考えてみると、
kuragane.jp のアドレスを得るには kuragane.jp に設置されたDNSに繋がらなくてはならない。kuragane.jp のDNSに繋ぐには kuragane.jp のアドレスを知らなくてはならない。...む、矛盾だ〜!!でもやる前に気がつくなどさすがだ。

というわけで、たまたま持っている別のドメイン iroribata.net にDNSを設置することにします。こちらはDNS指定はレジストラのサービスを使っています。
ついでにもう一台バックアップサーバーが動いており、それをセカンダリDNSにします。

インストール
BIND9はVine Linuxをフルインストールしたので既に入っています。
もしインストールされていなければSynaptic、あるいはapt-getででもインストールします。
現在のバージョンは bind-9.3.2P2-0vl1.5 です。

設定
http://www.obenri.com/_network/name.html がたいへん参考になりました。

bind9の設定ファイル /etc/named.conf を編集しますが、localhost関係とresolverとしての設定はすでにされているので、ファイルの最期にDNSしたいドメイン名とサーバーの動作(master or slave)、およびホスト名設定ファイルの指定などを書き加えます。
zone "kuragane.jp" IN {
  type master;
  file "kuragane.jp.zone.master";
  allow-transfer { 61.192.198.53; };
  notify yes; also-notify { 61.192.198.53; };
};
マスターゾーンファイル kuragane.jp.zone.masterをつくり、以下を書きこみます。
$TTL  86400
@    IN  SOA  jiji.iroribata.net.  donbei.iroribata.net.  (
     2008040302  ; serial
     3600        ; refresh 1hr
     600         ; retry 10min
     604800      ; expire 1 week
     86400       ; minimum 24hr
)
      IN  NS   jiji.iroribata.net.
      IN  NS   ns.yunosato.net.
      IN  MX   10 mail
@     IN  A    219.117.195.47
mail  IN  A    219.117.195.47
www   IN  A    219.117.195.47
ftp   IN  A    219.117.195.47
ちなみに jiji.iroribata.net は今回DNS自身に設定したホスト名、donbei.iroribata.net はDNS管理者のメールアドレス、219.117.195.47はkuragane.jpのアドレス、61.192.198.53(ns.yunosato.net) はセカンダリDNSに使うバックアップサーバーのアドレスです。
同様にセカンダリDNSにするほうのサーバーの /etc/named.conf に
zone "kuragane.jp" IN {
  type slave;
  file "kuragane.jp.zone.slave";
  masters { 219.117.195.47; };
  allow-notify { 219.117.195.47; };
};
を書込みます。ファイル kuragane.jp.zone.slave は自動的に作られますのでいりません。
ファイアウォールを設定します。
/etc/sysconfig/iptables にtcpとudpのポート53の許可を設定します。
設定したら service iptables restart で新しい設定を有効にします。

dnsの問い合わせ順を変更します。
/etc/resolv.conf の最初の行に nameserver 127.0.0.1 を記述。

named の起動を設定し、実際に起動してみます。
checkconfig --level 2345 named on
service named start

/var/log/messages を見てnamed起動 succeeded とあればOKです。

ためしにブラウザでいつも見ているWEBサイトを表示させてみます。
...いつもより少し遅いかな?

dig @localhost xxxx.com と
dig @(プロバイダのDNSアドレス) xxxx.com を比較。所要時間を比較してみると
1回目はプロバイダのDNSのほうが少し速い!
2回目以降はlocalhost(すなわち今回設定したDNS)がだいぶ速い。
という結果でした。

以上で終わり。

これではあまりにあっけないので、そのあとログをとるようにしたり外部からの余計なサービス要求を受け付けないようにしたり多少こまかい変更をしましたが省略。