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

RX-7(FD3S)WRX STI関連のキーワードで検索されて来られた方へ。
右サイドのカテゴリ『』をクリックすると関連する項目だけが表示されます。
日々の写真は『Flickr』で公開しています。

2008/10/13

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


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

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

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


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

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

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


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


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

第20回 いろいろなキャッシュ:dnsmasq, cache proxy:Ubuntu Weekly Recipe|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行が含まれるようになります。

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

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


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

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


参考


DNS&BIND(第4版)

DNS&BIND(第4版)

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

otsuneotsune 2008/10/14 11:42 このへんを気にしだして突き詰めると「ルーターとかISPのネームサーバー使わずに自力でルートから引け。そしてローカルキャッシュしろ」「DHCPから貰って来たリゾルバを信用するなんて怖いだろ。毒入り危険」という話に成るので、下手にdistroがおせっかいするのも……
という現状なのかも。

なまえなまえ 2008/10/14 12:50 つnscd

tsstss 2008/10/14 14:32 > つnscd
ダウト
つ unbound

rx7rx7 2008/10/15 02:07 皆さん、コメントありがとうございます。
単純に、自分の管轄外のところへアタックのような状況を作り出すのはマズイなと思いまして。

私は以前(といっても5〜6年前ですが)、BINDで構築したDNSサーバを運用していましたが、正直お手軽に設定・・・ではなかったので、今回はちょろっとだけ使いたかったのもあって、簡易的なものを選びましたが、もっと色々ありましたか。

次回のために頭の片隅で覚えておくようにします!

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。


オススメ (一部は、最近読んでいる本とも言う)
Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus) クラウド Amazon EC2/S3のすべて~実践者から学ぶ設計/構築/運用ノウハウ~ [Web開発者のための]大規模サービス技術入門 ―データ構造、メモリ、OS、DB、サーバ/インフラ (WEB+DB PRESS plusシリーズ) エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド [24時間365日] サーバ/インフラを支える技術 ~スケーラビリティ、ハイパフォーマンス、省力運用 Linux-DB システム構築/運用入門 (DB Magazine SELECTION) キャパシティプランニング ― リソースを最大限に活かすサイト分析・予測・配置 スケーラブルWebサイト 実践ハイパフォーマンスMySQL 第3版 ウェブオペレーション ―サイト運用管理の実践テクニック (THEORY/IN/PRACTICE) SQLアンチパターン インターネットのカタチ―もろさが織り成す粘り強い世界― ハイパフォーマンス ブラウザネットワーキング ―ネットワークアプリケーションのためのパフォーマンス最適化 Linuxの教科書―ホントに読んでほしいroot入門講座 (IDGムックシリーズ)