pdnsdでDNSキャッシュ

うちのネットワーク環境は、DNSに難がある。

  • ADSLルータにDNSキャッシュ機能があるけど、1ヶ月くらいルータを起動していると固まる
  • プロバイダ提供のDNSは回線の混雑具合で問い合わせに時間かかる時がある

今までは、自宅のサーバにdnbdnsの流れをくむdnscacheをインストールしていたのだけど、

  • これはこれで長期間起動していると応答がなくなるようだ
  • 設定が非常に独特でややこしい。/serviceなんてディレクトリ掘らないといけないし、svscanデーモンを使わないといけない。

ふらふらとネットを見ていたら、pdnsdというDNSキャッシュツールが存在することを知ったのでさっそく入れ替え。gentoo Linux環境なので

emerge pdnsd
cd /etc/pdnsd
mv pdnsd.conf.sample pdnsd.conf
nano -w pdnsd.conf

する。pdnsd.confで変更したのは、

global {
        perm_cache=2048;
        server_ip = eth0;  # Use eth0 here if you want to allow other
                           # machines on your network to query pdnsd.
}

server {
        label= "myisp";
        ip = 202.238.95.24;  # Put your ISP's DNS-server address(es) here.
}

くらい。とりあえず外部DNSはプライマリしか書いていないけど、そのままserverセクションを増やせばセカンダリも指定できる。

あとはLAN内の他のPCからも参照するので、globalのserver_ipは127.0.0.1とせずに、eth0と指定してeth0が持つIPアドレスにした。最後に/etc/resolv.confに

nameserver 192.168.0.22 #eth0
nameserver 202.238.95.24
....

などとして終了。squidも同じサーバで動いているので、squidが見るDNSサーバもちゃんとpdnsdになっているかを確認。あとは起動と自動起動するようにしておく。

rc-update add pdnsd default
/etc/init.d/pdnsd start

digコマンドで試してみると、dnscacheより速い。…と言っても、50msと1msくらいの違いなのだけど。とりあえずこれでまたしばらく様子を見てみよう。

タイトルとURLをコピーしました