最近のトレンドは権威サーバとキャッシュサーバの分離。KVMで2台DNSサーバ立てることにするとそれぞれ単体で設定すればよいので、その方が単純かつセキュア。(まあ、単純なものほどセキュアなものだが)というのはわかっているのだけれど、もうこの歳になると覚えた時のようにやらないとどうもうまくいかない。三子の魂百までなのか雀百まで踊り忘れずなのかはよくわからんが。
研究室の実際の設定はちょっと違うのだけれど、ここでは以下のような構成で設定する。
| ローカルネットワーク | 名前 | IPアドレス |
|---|---|---|
| ドメイン | local | 192.168.10.0/24 |
| DNSサーバ | ns1.local | 192.168.10.1 |
インストールはapt一発。(Ubuntu Serverの場合)
$ sudo apt install bind9
設定ファイル等は/etc/bind以下に収められている。(Ubuntu 22.04.1 LTSで確認)
そんなもん(8.8.8.8)に飛ばしてしまえ!っつうのは無しにして。
基本的には/etc/bind/named.confを変更するのだけれど、bind9.18.1のデフォルトでは
include "/etc/bind/named.conf.options"; include "/etc/bind/named.conf.local"; include "/etc/bind/named.conf.default-zones";
のようになっているので、
まずは、/etc/bind/named.conf.optionsに必要な設定をする。
acl local-network {
192.168.10.0/24;
};
options {
directory "/var/cache/bind";
allow-query {
localhost;
local-network;
};
allow-recursion {
localhost;
local-network;
};
allow-query-cache {
localhost;
local-network;
};
forwarders {
XXX.XXX.XXX.XXX;
};
dnssec-validation auto;
};
forwardersのXXX.XXX.XXX.XXXには学科のDNSサーバを設定する。(将来的に学科のサーバを廃止するときにはどうするんかな)
IPv4プライベートアドレス(RFC1918)のゾーン情報は/etc/bind/named.conf.localに書けって書いてあるのでそれに従い、
zone "local" IN {
type master;
file "/etc/bind/db.local";
};
zone "10.168.192.in-addr.arpa" IN {
type master;
file "/etc/bind/db.10.168.192.in-addr.arpa";
};
のように設定する。
$ORIGIN local.
$TTL 86400
@ IN SOA ns1.local. mail.address.with.stop.as.delimiter. (
2022081801 ; serial
21600 ; refresh after 6 hours
3600 ; retry after 1 hour
604800 ; expire after 1 week
86400 ) ; minimum TTL of 1 day
;
;
IN NS ns1.local.
ns1 IN A 192.168.10.1
web IN A 192.168.10.2
mail IN A 192.168.10.3
client IN A 192.168.10.4
$ORIGIN 10.168.192.in-addr.arpa.
$TTL 86400
@ IN SOA ns1.local. mail.address.with.stop.as.delimiter. (
2022081801 ; serial
21600 ; refresh after 6 hours
3600 ; retry after 1 hour
604800 ; expire after 1 week
86400 ) ; minimum TTL of 1 day
;
@ IN NS ns1.local.
;
1 IN PTR ns1.local.
2 IN PTR web.local.
3 IN PTR mail.local.
4 IN PTR client.local.
設定ファイルのチェックをした後、bindを起動する。
$ named-checkconf $ named-checkzone local db.local zone local/IN: loaded serial 2022081801 OK $ named-checkzone 10.168.192.in-addr.arpa db.10.168.192.in-addr.arpa zone 10.168.192.in-addr.arpa/IN: loaded serial 2022081801 OK $ systemctl start named $ systemctl status named $ netstat -aun | grep 53 ... $ dig @localhost www.ee.ous.ac.jp ...
設定ファイルやZoneファイルを書き換えた後は、(シリアル増やすの忘れんな!)
$ systemctl restart named
最近だとこんなのがいいらしい。