R筋

プログラミングと時々育児

raspberry pi でローカルDNSサーバを作る

最近仕事で社内向けDNSサーバの設定を変えることがあり、実用性はあまりないんだけど、勉強を兼ねて、家でも内部DNSサーバを作ってみることにした。

毎度お馴染み、持っててよかったraspberry piにBINDを入れて運用することにする。
すでに報告してくれている方々がおり、参考にさせていただきました。
wordpress.zenmai.org
www.kotemaru.org

そもそも、家に内部DNSを置くメリットはなにかというと、こんなところだろう。
・前記事で作ったウェブページにIPアドレスではなく、自分で設定した名前「http://~」でアクセスできる。
NASの共有フォルダへもIPアドレスではなく「\\~」でアクセスできる。
・外部DNSを自分で設定できるので、プロバイダのDNSサーバでブロッキングが行われても回避できる。
DNSの仕組みについて詳しくなり、インターネットの根幹を支えるDNSという技術に感謝する心が生まれる。

思うに一番最後はすごく重要だろう。
「www.yahoo.co.jp」と「183.79.250.251」はどっちをアドレスバーに入れても、ヤフーのトップページにつながるにもかかわらず、それぞれgoogleで検索してみると、検索結果は、約 672,000,000 件と3,420 件 という差が生まれる。
この差、196,491倍!これはもはやDNSサーバが我々の生活を196,491倍便利にしたと言える(謎理論)
従来比約20万倍の恩恵をもたらしたにもかかわらず、DNSサーバは世間一般にはほとんどその存在が知られておらず、誰からも感謝されることはない。
家庭内に内部DNSサーバを作ること、それはその道程においてDNSサーバに感謝するという行為である。

とはいえここから先は自分用のメモなので、全然参考にならないと思う。
やりたい人は上のページを参考にしたほうがいいだよ。

→etc/bind/named.confの設定

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";

named.confはBINDの基本設定ファイルである。
includeにより詳細設定のファイル、named.conf.optionsとnamed.conf.localを読み込む。

→etc/bind/named.conf.optionsの設定
これはconfの各種オプションを設定するファイル。

options {
        directory "/var/cache/bind";

         forwarders {
              1.1.1.1;
        };
	//このゾーンで名前解決出来ないときは、1.1.1.1に問い合わせ
	listen-on-v6 { none; };
	//IP6は無効
};

→/etc/bind/named.conf.localの設定
実際にゾーンをここで定義する。

//ホスト名myhome.jpの設定
zone "myhome.jp" {
    // Master DNS Serverであることを明示
    type master;
    // 設定ファイル名を記載
    file "/etc/bind/myhome.db";
};

// 192.168.100.* の逆引きの設定
zone "100.168.192.in-addr.arpa" {
    // Master DNS Serverであることを明示
    type master;
    // 設定ファイル名
    file "/etc/bind/100.168.192.db";
};

→myhome.dbの設定
正引きの設定を記載

$TTL 86400

@      IN SOA ns.myhome.jp.    root.myhome.jp. (          //最後に「.」を忘れない
                                      2018010204 ; Serial //更新時に値を増やす
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400      ; Minimum TTL
)

@       IN NS ns.myhome.jp. ; 
ns      IN A 192.168.100.130  ;
raspi2  IN A 192.168.100.125  ;
NAS     IN A 192.168.100.101 ;

→100.168.192.dbの設定
逆引きの定義を記載

$TTL 86400    ;

@   IN SOA ns.myhome.jp.    root.myhome.jp. (
                        2011102301 ; Serial
                        3H         ; Refresh
                        1H         ; Retry
                        1W         ; Expire
                        1D )       ; Minimum

    IN NS  ns.myhome.jp.     ; //Name Server を指定
    IN PTR myhome.jp.        ; //解決するドメインを指定
    IN A 255.255.255.0 ; //サブネットマスクを指定

130     IN PTR ns.myhome.jp.
125     IN PTR raspi2.myhome.jp.
101     IN PTR NAS.myhome.jp.

設定後は、

sudo named-checkconf

で、設定ファイルが正しいか確認できる。問題なければ再起動

/etc/init.d/bind9 restart

確認は、linuxの場合は、named.confに書いてあるDNSサーバを変更。
windowsはコンパネで使用するDNSサーバを指定。
もしくはDHCPサーバで配信するDNSサーバを変更。
等の方法で、raspberry pi上のDNSサーバが正しく動いているかを調べるとよい。