bind
出典: wiki.nodoka.org
mydnsと連携→外向けのIFはbindがLISTENし、ループバックIFはmydnsがLISTEN。
全ての問い合わせをbindが受け取り、自IPと自ドメインの問い合わせのみ、ループバックのmydnsへフォワードする。
mydnsからbindへrecursive requestするパターンも試してみたが、正引きと同時に逆引きの問い合わせも行うため、レスポンスが異常に悪くなる。
現状ではbind→mydnsのフォワードが現実的。
目次 |
bind-9.5.0のインストール
opensslが既にインストールされている前提。 使い道考えてないけど、SSL対応はさせておいてみる。
cd /usr/local/src wget http://ftp.isc.org/isc/bind9/9.5.0/bind-9.5.0.tar.gz tar xvzf bind-9.5.0.tar.gz cd bind-9.5.0.tar.gz ./configure \ --prefix=/usr/local/bind \ --with-openssl=/usr/local/openssl make make install
設定ファイル作成
mkdir -p /usr/local/bind/chroot/etc cd /usr/local/bind/chroot vi etc/named.conf
プライベート用DNSとグローバル用DNSを用意する。プライベート用DNSでは、自IPと自ドメイン向けの問い合わせをmydnsへフォワードする。ついでに、fletsドメインへの問い合わせもflets網のDNSへフォワードする。グローバル用DNSは外にいる別DNSのセカンダリとして設定。
options {
directory "/zone";
pid-file "/var/run/named/named.pid";
statistics-file "/named.stats";
listen-on { 192.168.0.1; };
};
server 192.168.211.10 { edns no; };
include "/etc/rndc.key";
controls {
inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};
acl private {
192.168.0.0/24;
127.0.0.1;
};
view "internal" {
match-clients { private; };
recursion yes;
zone "." {
type hint;
file "named.ca";
};
zone "localhost" {
type forward;
forward only;
forwarders { 127.0.0.1; };
};
zone "0.0.127.in-addr.arpa" {
type forward;
forward only;
forwarders { 127.0.0.1; };
};
zone "domain.com" {
type forward;
forward only;
forwarders { 127.0.0.1; };
};
zone "0.168.192.in-addr.arpa" {
type forward;
forward only;
forwarders { 127.0.0.1; };
};
zone "flets" {
type forward;
forward only;
forwarders { 220.210.194.67; 220.210.194.68; };
};
};
view "external" {
match-clients { any; };
recursion no;
zone "." {
type hint;
file "named.ca";
};
zone "localhost" {
type forward;
forward only;
forwarders { 127.0.0.1; };
};
zone "0.0.127.in-addr.arpa" {
type forward;
forward only;
forwarders { 127.0.0.1; };
};
zone "domain.jp" {
type slave;
masters { 222.222.222.222; };
file "domain.jp";
};
zone "domain.com" {
type slave;
masters { 222.222.222.222; };
file "domain.com";
};
};
|
wget ftp://ftp.rs.internic.net/domain/named.root mkdir zone mv named.root zone/named.ca rndc-confgen -a -b 512 -k rndckey -c etc/rndc.key vi etc/rndc.conf
options {
default-server localhost;
default-key "rndckey";
};
server localhost {
key "rndckey";
};
include "/usr/local/bind/chroot/etc/rndc.key";
|
起動ファイル作成
vi /etc/init.d/named
:%s/usr\/sbin/usr\/local\/bind\/sbin/g
:%s/rndc/rndc -c ${ROOTDIR}\/etc\/rndc.conf/g
# OPTIONS="${OPTIONS} -t ${ROOTDIR}"
OPTIONS="${OPTIONS} -t ${ROOTDIR} -c /etc/named.conf"
|
vi /etc/sysconfig/named
#ROOTDIR=/var/named/chroot ROOTDIR=/usr/local/bind/chroot |
service named start
EDNS無効化
bindを9.5.0に変更してから、namedが以下のようなエラーを大量に吐くようになった。
named[19858]: too many timeouts resolving 'XXX.XXX.XXX.XXX.sbl.spamhaus.org/TXT' (in 'sbl.spamhaus.org'?): disabling EDNS |
メッセージをキーにしてググってみると、IPv6が規定値となったため
EDNSがデフォルトで有効化されたとの事。
named.confに以下の設定を追加する事で状況は改善。
server 192.168.0.1 { edns no; };
|