〔備忘録〕 家庭内LAN用 DNS サーバ on Ubuntu 16.04LTS
衝動無駄買い病 & 捨てられない病で、家の中のPCが増えてきました。f(-_-;;;
それぞれのPCにリモート接続することも多く、IPで接続するのも大変になったため、
名前で管理できるように プライベートなDNSサーバを運用することにします。
ところで、プライベートなドメインを作るとき、JPNICの記事(https://www.nic.ad.jp/ja/newsletter/No57/0800.html)に記載の事項を気を付ける必要があります。
そこで、幸いにもたまたま私はMyDNS(http://www.mydns.jp/)にドメインを登録していたので、そのドメインを利用してプライベートドメインを作成することにします。
- Domain: local.******.mydns.jp
また、念のため下記サイトを参考に、外部から DNS Query ができないことも確認しておきます。
- https://jprs.jp/tech/notice/2013-04-18-fixing-bind-openresolver.html
- http://dns.measurement-factory.com/cgi-bin/openresolvercheck.pl
上記2番目のURLのサイトにて、自宅ネットワークの Global IP が Open resolver になっていないことを
確認しておきました。
Bind9 の設定方法は、先人の知恵を参考にしました。
- http://www.server-world.info/query?os=Ubuntu_14.04&p=dns
- http://d.hatena.ne.jp/naoyes/20111105/1320506912
- http://www.fc-lab.com/network/server/dns/zone.html
- http://www.zytrax.com/books/dns/ch7/queries.html#allow-query
まずは、bind9 のインストール。(sudo コマンドを付与する等、適宜読み替えること。)
# apt-get install bind9 bind9utils
次に設定。まずは、/etc/bind/named.conf.options の設定。青字部分がデフォルトからの追加/変更部分。
options {
directory "/var/cache/bind";
forwarders { 192.168.***.1; }; # 192.168.***.1 は我が家のルータのアドレス
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };allow-query { localhost; 192.168.***.0/24; !192.168.***.1; }; allow-transfer { localhost; 192.168.***.0/24; !192.168.***.1; };
};
次にローカルドメインの正引きDBの作成。
$TTL 3600
@ IN SOA sv.local.******.mydns.jp. root.local.******.mydns.jp. (
2016051205 ; Serial
3600 ; Refresh
900 ; Retry
2419200 ; Expire
3600 ) ; Negative Cache TTL
;
IN NS sv.local.******.mydns.jp.
router IN A 192.168.***.1
sv IN A 192.168.***.100
nas IN A 192.168.***.200
逆引きDBも作成。
$TTL 3600
@ IN SOA sv.local.******.mydns.jp. root.local.******.mydns.jp. (
2016051205 ; Serial
3600 ; Refresh
900 ; Retry
2419200 ; Expire
3600 ) ; Negative Cache TTL
;
IN NS sv.local.******.mydns.jp.
1 IN PTR router.local.******.mydns.jp.
100 IN PTR sv.local.******.mydns.jp.
200 IN PTR nas.local.******.mydns.jp.
上記で作成した正/逆引きDBのファイル名をそれぞれ /etc/bind/db.mydns.jp, /etc/bind/db.192.168とし、/etc/bind/named.conf へ下記のとおりに設定を追記します。(青字が追記部分)
# 本来ならば、他の設定ファイルと同様に別ファイルに zone 設定をした方が良いのかな。f(^^;;
// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.localinclude "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
zone "local.******.mydns.jp" {
type master;
file "/etc/bind/db.local.grasso.mydns.jp";
};
zone "***.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192.168";
};
設定はここまでで、bind を再起動し、query できることを確認します。
# /etc/init.d/bind9 stop ; /etc/init.d/bind9 start
# nslookup sv.local.******.mydns.jp
# nslookup 192.168.***.100
# nslookup www.google.co.jp
ローカルマシンの正引き、逆引き、そして外部アドレスのフォワードができることを確認して終わりです。