〔備忘録〕 家庭内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 ができないことも確認しておきます。

上記2番目のURLのサイトにて、自宅ネットワークの Global IP が Open resolver になっていないことを
確認しておきました。


Bind9 の設定方法は、先人の知恵を参考にしました。

まずは、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.local

include "/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

ローカルマシンの正引き、逆引き、そして外部アドレスのフォワードができることを確認して終わりです。