Raspberry Pi でローカル名前解決をしたかったのでbind9を使用した。

インストール

1
sudo apt-get install -y bind9 net-tools

net-toolsはnslookupを入れるため

設定

以下の3ファイルのみ編集し他はそのまま

named.conf

1
2
3
4
5
6
7
8
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";

zone "test.shosato.jp." in {
type master;
file "test.shosato.jp.zone";
};

named.conf.options

1
2
3
4
5
6
7
8
9
10
options {
directory "/etc/bind";
version "unknown";
allow-query {
192.168.31.0/24;
};
allow-transfer {
any;
};
};

test.shosato.jp.zone

1
2
3
4
5
6
7
8
9
10
11
$TTL 86400
@ IN SOA test.shosato.jp. root.test.shosato.jp. (
1 ;Serial
10800 ;Refresh
3600 ;Retry
604800 ;Expire
3600 ;Negative cache TTL
)
IN NS hoge.test.shosato.jp.
@ IN A 192.168.31.34
hoge IN A 192.168.31.38

ポートを開ける

1
sudo ufw allow 53

確認

実際に運用するにはルーターのプライマリDNSサーバーを変更するか、PCごとに設定する必要がある

1
2
nslookup hoge.test.shosato.jp localhost # DNSサーバー内で
nslookup hoge.test.shosato.jp # 他のPCから

(任意)ブラックリストでアクセスブロック

/etc/bind/blacklist.db

1
2
3
4
5
6
7
8
9
10
11
12
13
$TTL 86400
@ IN SOA localhost. root.localhost. (
1 ; Serial
10800 ; Refresh after 3 Hours
3600 ; Retry after 1 Hour
604800 ; Expire after 1 Week
86400 ) ; Minimum TTL of 1 Day
IN NS localhost.


twitter.com CNAME .
facebook.com CNAME .
googleanalytics.com CNAME .

/etc/bind/named.conf.options

1
2
3
4
5
6
7
8
9
10
11
12
13
14
options {
directory "/etc/bind";
version "unknown";
allow-query {
192.168.1.0/24;
};
allow-transfer {
any;
};
// ここ↓
response-policy {
zone "blacklist";
};
};

/etc/bind/named.conf追記

1
2
3
4
zone "blacklist" {
type master;
file "blacklist.db";
};