RX-7乗りの適当な日々 このページをアンテナに追加 RSSフィード

RX-7(FD3S)』関連のキーワードで検索されて来られた方へ。
右サイドのカテゴリ『』をクリックすると関連する項目だけが表示されます。
日々の写真は『Flickr』で公開しています。よろしければこちらもどうぞ。
市長になりました(笑) よろしければ『MyMiniCity』にも遊びに来てください〜。

2008/10/13

LinuxはローカルにDNSキャッシュを持たないことを初めて知った


先日、とあるLinuxマシンをセットアップした時に、"apt-get upgrade"で最新のモジュールダウンロード更新していたところ、途中でモジュールダウンロードできなくなってしまった。

調べてみると、通信はできるけど名前解決が出来ていないことが分かった。

で、しばらくすると名前解決が行えるようになり、ダウンロードが再開された。


Windowsでは暗黙で,Mac OS XではlookupdがDNS解決の結果をキャッシュしていますが,Linuxではキャッシュを行わず,都度DNSサーバへ問い合わせを行ってしまいます。

Ubuntu Weekly Recipe: 第20回 いろいろなキャッシュ:dnsmasq, cache proxy|gihyo.jp … 技術評論社

とのことなので、どうやら、小さいサイズ(数KB〜数十KB)のファイル連続してダウンロードしていることで、DNSサーバに軽いアタック状態を行ってしまい、問い合わせ異常か何かで一時的に弾かれてしまっているようだ。なんてこったい。


これはあまり良くないなと思ったので、このLinuxマシンDNSキャッシュを行えるようにするべく、"dnsmasq"をインストールして動かすようにした。


dnsmasqは,簡易DNSキャッシュサーバとして動作させるのに適した,小型のサーバプログラムです。キャッシュサーバとして動作させる場合,DNS の実装として代表的なbindに比べて非常に簡単に設定できます。さらに,上流のDNSサーバとして/etc/resolv.confに書かれたものを利用するため,ほとんど設定が必要なく,デスクトップ環境で使うのに非常に適しています。

Ubuntu Weekly Recipe: 第20回 いろいろなキャッシュ:dnsmasq, cache proxy|gihyo.jp … 技術評論社

とのこと。"/etc/resolv.conf"に上流のサーバも書いておけばいいのか。設定が楽チンなのはとても良いね。


$ sudo apt-get install dnsmasq

Debian/Ubuntu環境ならインストールは↑のようにAPTコマンド一発で終了。


nameserver 127.0.0.1
nameserver xxx.xxx.xxx.xxx

あとは、"/etc/resolv.conf"を開き、↑のように既にある"nameserver"(1つ or 複数)の先頭に、"nameserver 127.0.0.1"を付け足して保存すれば、とりあえずの設定は完了。

# デフォルトのままだと、他マシンからもDNSサーバとして利用できますので、セキュリティ面はご留意を。


設定前は、↓のように別のDNSサーバを指していましたが、、、

$ dig

〜〜省略〜〜

;; Query time: 17 msec
;; SERVER: 192.168.0.1#53(192.168.0.1)
;; WHEN: Mon Oct 13 03:12:30 2008
;; MSG SIZE  rcvd: 500

上記設定後は、↓のようにローカルDNSを指すようになっています。

$ dig

〜〜省略〜〜

;; Query time: 15 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Oct 13 03:13:15 2008
;; MSG SIZE  rcvd: 500

以上で、LinuxマシンにてDNSキャッシュを利用できるようにする作業が完了。


ただ、もしクライアントマシンネットワーク設定をDHCPで行っている場合は当然ですが、毎回DHCPサーバから情報を取得するごとに、DNS情報が書き換えられてしまいます。

# DHCPサーバから情報取得するたびに、"/etc/resolv.conf"が自動生成される。


DHCPクライアントの設定を行い,生成されるresolv.confにnameserver 127.0.0.1行を自動的に追加するようにします。

/etc/dhcp3/dhclient.confにコメントアウトされた状態でサンプルとして入力されていますが,「prepend domain-name-servers 127.0.0.1;」という行を有効にしてください。これにより,以降自動生成されるresolv.confにはnameserver 127.0.0.1行が含まれるようになります。

Ubuntu Weekly Recipe: 第20回 いろいろなキャッシュ:dnsmasq, cache proxy|gihyo.jp … 技術評論社

ので、DHCPを有効にされている方は↑の設定をしておくと良いと思われます。


あと、気になるのはDNSキャッシュの有効期限ですね。"TTL"が短いサイトにアクセスする場合などで問題が出ないように。

私は今のところ、"dnsmasq"をそれほどヘビーに使う予定がないので、この部分までは調べきれていないのですが、設定で制御できないなら、定期的にキャッシュをクリーンする必要がありそうです。


参考


DNS&BIND(第4版)

DNS&BIND(第4版)

  • 作者: Paul Albitz, Cricket Liu, ポールアルビッツ, クリケットリュウ, 高田広章, 小島育夫, 小舘光正
  • 出版社/メーカー: オライリー・ジャパン
  • 発売日: 2002/02/26
  • メディア: 単行本


「この aptitude にはスーパー牛さんパワーなどはありません。」


さっき、aptitudeヘルプを見てたんですよ。

すると、一番最後の行にこんなメッセージが。

$ aptitude -h

〜〜省略〜〜

この aptitude にはスーパー牛さんパワーなどはありません。

・・・???

誤訳かと思いましてね。訳される前のものを見てみたくなりました。

$ LANG=C aptitude -h

〜〜省略〜〜

This aptitude does not have Super Cow Powers.

(゚д゚;)

なんですか?「スーパー牛さんパワー」って?w


でも、調べてみるとすぐにわかりました。"イースターエッグ"(Easter Eggs)だそうです。


$ aptitude moo
このプログラムにはイースターエッグ (隠し機能) はありません。

$ aptitude -v moo
このプログラムには本当にイースター・エッグはありませんよ。

$ aptitude -vv moo
このプログラムにイースターエッグはないって言わなかったかい?

$ aptitude -vvv moo
やめてくれ!

$ aptitude -vvvv moo
わかった、わかった。あんたにイースターエッグをあげればどっか行ってくれるかい?

$ aptitude -vvvvv moo
わかったよ。あんたの勝ちだ。

                               /----\
                       -------/      \
                      /               \
                     /                |
   -----------------/                  --------\
   ----------------------------------------------
$ aptitude -vvvvvv moo
これが何なのか? もちろんウワバミに食べられた象だよ。

$ aptitude -vvvvvvv moo
これが何なのか? もちろんウワバミに食べられた象だよ。

おぉぉ、aptitudeにこんなお茶目な一面があったなんて。

しかし、、、結局「スーパー牛さんパワー」って何だったんだろうか・・・?


$ apt-get moo
         (__)
         (oo)
   /------\/
  / |    ||
 *  /\---/\
    ~~   ~~
...."Have you mooed today?"...

あぁ、これのことだったのか。apt-getで同じことをやると出現です。

スーパー牛さん、こんにちは