WindowsXP HomeEditionでローカルDNS

米Google、「Google Public DNS」を公開 | スラド IT
のコメントで、

と、ここまで書いたところで「ローカルでDNSサーバを立てた上で、8.8.8.8 に forward する」のが最強な気がしました。
…早速実験。FreeBSD-7.2-RELEASE/bind 9.6 で、named.conf の options に forwarders { 8.8.8.8; }; を追加。

% dig www.freebsd.org @192.168.x.x
1回目: ;; Query time: 49 msec
2回目: ;; Query time: 1 msec

うむ。なかなか良さそう。

http://slashdot.jp/it/comments.pl?sid=477173&cid=1684344

とあり、こりゃすげぇ、と思ってちょっと試してみることにした。


DNSは普通にBIND9を使用。
named.confはこんな感じ。

acl TRUST {
    127.0.0.1;
};

options {
    directory "C:\WINDOWS\system32\dns\etc";
    forwarders {
        8.8.8.8;
        8.8.4.4;
    };

    allow-recursion { TRUST; };
    allow-query-cache { TRUST; };
};

// rndc
controls {
    inet 127.0.0.1 allow { localhost; } keys { rndc-key; };
};

// private key
include "C:\WINDOWS\system32\dns\etc\rndc.key";

// log
logging {
    channel default-log {
        file "C:\var\log\named.log" versions 5 size 1m;
        severity info;
        print-time yes;
        print-category yes;
    };

    category lame-servers { null; };
    category default { default-log; };
};

zone "." IN {
    type hint;
    file "named.root";
};

zone "0.0.127.in-addr.arpa" IN {
    type master;
    file "named.local";
};

rndcとログのあたりは参考にしたサイトを真似ただけなんだけど、別に必要ない気もする。

アクセス権の設定でちょっと戸惑ったけどなんとかうまくいった。WinXP ProとHomeでこんなとこに違いがあるとは。cmd.exeで、次のようにnamedユーザにアクセス権を与える。

cd C:\WINDOWS\system32\dns
cacls etc /e /g named:f

フルコントロールは過剰かなぁ……


digして見ると、ローカルキャッシュが効いてるのがわかる。0msec

>dig www.freebsd.org @localhost
;; Query time: 62 msec  # 1回目
;; Query time: 15 msec  # 2回目
;; Query time: 0 msec   # 3回目

これ以降は15msecと0msecがランダム。15msec単位で時間の判定(というか割り込み発生)をしているのだろうか。


とにかくこれでDNS解決はかなり速くなったことだろう。目に見えるほどブラウジングが速くなるわけではないけど、塵も積もればって感じかな。BINDの練習にもなったし良かった。



参考サイト:
DNS(BIND)の設定(Windows編)
BINDの設定 named.conf
http://www.isokiti.tv/~isobetti/sabakan/index.php?e=177
Windowsにbindをインストールし、DNSサーバを構築しようと試みたのですが、... - Yahoo!知恵袋
フォルダのプロパティに「セキュリティ」タブが表示されない
WindowsのcaclsコマンドでACLを編集する:Tech TIPS - @IT