それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

DNSキャッシュをいれてUbuntuを速くする

LinuxではDNSキャッシュ無し

LinuxではDNSキャッシュなんですって!!

DNSに注意

DNSMasqなど、DNS問い合わせをキャッシュする機構がないと、LinuxDNS問い合わせを毎回行う。
これが以外とタイムロスである。もちろんDNSサーバーがルータなどもっての他である。

社内であっても、信頼できないDNSサーバーは使うべきでない。社内ルーターがしっかり管理されてると言えない場合は注意するべき。
バッファローのルーターなど容易にハッキング可能のなのである。マンションなどでローカルIPが割り振られる場合はさらに要注意だ。DNSサーバーにルータを使うならウイルスチェッカなんて無意味である。

ウイルスチェッカが問い合わせ先を偽装できる。パターンファイルの取得元を容易に変更できてしまう。
ルータがデフォルト設定で、無線LANで運営されているカフェなど恐ろしくて、そのままでネットできない。

PCを守りたければDNSを守る。

結論をいえば、PCを守りたければDNSを守る。しかし、プロバイダのDNSは遠い。毎回問い合わせは時間が掛かる。ルーターに任せればいいのだが、先述の通りルーターを管理者が握っているとそうもいかない。*1

そこでDNS問い合わせ結果をパソコンにキャッシュする。
MACやWindowsでは、このタイムロスを自動的に緩和する用に。DNSのキャッシュの仕組みが自動搭載されている。

まぁ弊害も多いけれど、速くなるるメリットは計り知れない。
*2

LinuxDNSキャッシュ

最近知ったのですが。LinuxではDNSキャッシュはインストールされていません。

UbuntuでDNSMasqなどを使う

Ubuntuで同じ事をしようと思うと、DNSMasqを使う。もちろんbindでも構いませんが、キャッシュだけならDNSMasqが小さくて便利です。bindはキャッシュにもつかえる本物のDNSサーバーで巨大で管理も面倒。

takuya@ubuntu:~$ aptitude search dnsmasq
p   dnsmasq                                                   - A small caching DNS proxy and DHCP/TFTP server
p   dnsmasq-base                                              - A small caching DNS proxy and DHCP/TFTP server
takuya@ubuntu:~$ sudo aptitude install dnsmasq
[sudo] password for takuya:
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
拡張状態情報を読み込んでいます
パッケージの状態を初期化しています... 完了
タグのデータベースを構築しています... 完了
以下の新規パッケージが自動的にインストールされます:
  dnsmasq-base
以下の新規パッケージがインストールされます:
  dnsmasq dnsmasq-base
0 個のパッケージを更新、 2 個を新たにインストール、 0 個を削除予定、0 個が更新されていない。
214kB のアーカイブを取得する必要があります。 展開後に 725kB のディスク領域が新たに消費されます。
続けますか? [Y/n/?] y
拡張状態情報を書き込んでいます... 完了
取得:1 http://archive.ubuntu.com hardy-updates/main dnsmasq-base 2.41-2ubuntu2.1 [202kB]
取得:2 http://archive.ubuntu.com hardy-updates/universe dnsmasq 2.41-2ubuntu2.1 [12.0kB]
214kB を 3s 秒でダウンロードしました (63.4kB/s)
未選択パッケージ dnsmasq-base を選択しています。
(データベースを読み込んでいます ... 現在 47820 個のファイルとディレクトリがインストールされています。)
(.../dnsmasq-base_2.41-2ubuntu2.1_i386.deb から) dnsmasq-base を展開しています...
未選択パッケージ dnsmasq を選択しています。
(.../dnsmasq_2.41-2ubuntu2.1_all.deb から) dnsmasq を展開しています...
dnsmasq-base (2.41-2ubuntu2.1) を設定しています ...
dnsmasq (2.41-2ubuntu2.1) を設定しています ...
 * Starting DNS forwarder and DHCP server dnsmasq
dnsmasq: failed to create listening socket: Address already in use
 * failed
                                                                                                                            [fail]
invoke-rc.d: initscript dnsmasq, action "start" failed.

使ってないBind9が邪魔だったのでストップした

bind9が入っているともちろん競合する。外部問い合わせの実験ようにいれたBindは停止しました。

takuya@ubuntu:~$ sudo rcconf
takuya@ubuntu:~$ sudo /etc/init.d/bind9 stop
 * Stopping domain name service... bind                                                                                     [ OK ]

DNSMasqを起動

takuya@ubuntu:~$ sudo /etc/init.d/dnsmasq start
 * Starting DNS forwarder and DHCP server dnsmasq                                                                           [ OK ]

*1:ルーター乗っ取られたらDNSパケット改竄も可能なわけですが。DNSの脆弱性を放置されると困るわけです。

*2:なんとなくOperaも内部的に行っている気がします。未確認。FireFoxはキャッシュする気無いようです