インターネットへ接続_________ |
BINDでDNSキャッシュサーバー |
インターネット上では、IPアドレスを人間が覚えやすいアルファベットの文字列に置き換えて運用しています。例えばブラウザにwww5.plala.or.jpと入力してページの表示要求を出すと、210.153.0.37というIPアドレスに変換(名前の解決、リゾルバといいます)してあげることによりはじめてそのページが表示されます。名前の解決は通常はプロバイダ側に用意されたDNSサーバーのデータを参照して解決します。ところが、ADSLやケーブル接続などの高速回線を利用しているにもかかわらず、このDNSの機能を持ったサーバーが混んでいることが原因で表示が遅いことがあります。そこで、Windows2000、XPには1度名前解決を行ったデータをローカルマシンにキャッシュしておく機能(DNSリゾルバキャッシュ)が標準で付加されています。これを確認するには「スタート」メニューから「ファイル名を指定して実行」の名前欄に「cmd.exe」と入力して「OK」ボタンを押すとコマンドプロンプト画面が出てきます。 > ipconfig /displaydns と入力して「Enter」キーを押してください。現在のキャッシュの状況が画面に表示されるはずです。ちなみにキャッシュを開放するには > ipconfig /flushdns と入力します。 ところがこのWindows標準のDnsCacheシステムですが、キャッシュの有効期限や保存されるエリアの保存期間などを変更するにはレジストリの操作が必要になります。これらのキーは「HKEY_LOCAL_MACHINE」-「SYSTEM」-「CurrentControlSet」-「Services」-「Dnscache」-「Parameters」以下にありますが、レジストリの操作は危険を伴いますし、変更してもあまりこれといった効果が感じられません。 そこで、PC-UNIXの世界では定番となっているISCのBINDを使って、専用のDNSキャッシュサーバーを立ててみましょう。これなら簡単な設定ファイルで様々なカスタマイズが可能ですし、レジストリの操作も必要ありません。DNSキャッシュサーバーは自分自身で名前の解決を行う機能は持っていません。最初の1回はプロバイダ等のDNSサーバーに依頼し、その内容を指定した期間キャッシュします。2回目以降はそのキャッシュを使って名前の解決を行います。 まずはISCのBINDのページからWindows用のバイナリを入手します。2004年10月現在、BINDにはVersion8.4.5と9.2.4、9.3.0がありますが、安定性という点からみても8.4.5が良いでしょう。8.4.5のDownloadsページからBIND 8.4.5 Windows NT / Windows 2000 Binariesをクリックしダウンロードします。ダウンロードしたBIND8.4.5.zipを解凍し、その中にあるBINDInstall.exeを実行するとインストールが開始します。 デフォルトではC:\WINDOWS\System32\dnsにインストールされます。さらにその中にbinとetcというサブディレクトリが出来上がっているはずです。binディレクトリには各種バイナリ、etcディレクトリにはこれから作成する各設定ファイルを格納します。etcディレクトリは属性を読み取り専用にしておきます。Optionsの項目は読んで頂ければお分かりだと思いますが、上から自動的にBINDサービスを開始する、アンインストールしても各種設定ファイルは残す、インストール後直ぐにBINDサービスを開始する、が選択可能ですが、そのままにしておいて問題ないでしょう。
・ゾーン 以下に各ファイルのサンプルを記しておきます。サンプルファイルはコピーしてそのまま利用できますが、赤色部分は自分の環境に合わせて修正する必要があります。ルーター有りの場合は現在のマシンのIPアドレスを192.168.1.10、ルーターのIPアドレスを192.168.1.1(導入している場合)、ドメイン名(適当に付ければいいです)をns.myhome.netと仮定しています。 named.confの例 ルーターなしの場合 acl localnet {
options { zone "0.0.127.in-addr.arpa" { ルーター有りの場合 acl localnet { ・解説 named.ca ftp://ftp.internic.net/domain/named.cacheにあるものをダウンロード保存して使います。 named.local $TTL 86400 ・解説 resolv.conf domain myhome.net ・解説 ・上記ファイルをまとめたもの[bind_conf.zip] MD5: 81c523a45e0ed9742256e0d6a2cafa6a 出来上がったこれらのファイルはdnsディレクトリの下にあるetcディレクトリに格納します。作業が完了したら「スタート」メニューにあるBIND Ctrlを起動し、「Stop」、「Start」ボタンの順に押してBINDを再起動します。 etcディレクトリに新たに作成されたnamed.runファイル(BINDのログファイル)をメモ帳等にドラッグし、内容を確認します。 16-Oct-2002 11:55:52.000 load: info: hint zone "" (IN) loaded (serial 0) Ready to answer queriesと記録されていれば、起動は成功です。念のためnslookupで動作確認をしておきます。コマンドプロンプト画面を出し、nslookupと入力し、
Default ServerとAddressに自分自身が表示されることを確認します。ルーターを導入していれば127.0.0.1もしくは自マシンのローカルIPアドレスが表示されます。ルーターなしの場合はプロバイダから割り当てられたグローバルアドレスとなります。 次に適当なホスト名(存在するもの)を入力し、回答が得られることを確認します。同じように適当なIPアドレス(存在するもの)を入力し、回答が得られることを確認します。
更にもう一度同じコマンドを入力すると今度は
とNon-authoritative answer:が表示されます。これはこのアドレスがキャッシュされたということを意味します。つまりこれが表示されればキャッシュサーバとして動作しているということになります。
ルーター使用時の設定 ADSL接続などの際に、セキュリティ向上の目的や、複数台の接続を可能にするため、いわゆるブロードバンドルーターを使用しているケースが増えています。この場合、ローカルのIPアドレスはルーターが各マシンに自動的に割り当てられる(DHCP)ようになっているはずです。BINDでのDNSキャッシュサーバーを利用する場合はIPアドレスを固定状態にしておくと良いでしょう。その方法ですが、「ネットワークとダイアルアップ接続」から「ローカル エリア接続」をクリックすると「ローカル エリア接続状態」が表示されます。そこから「プロパティ」ボタンを押し、「ローカル エリア接続のプロパティ」の全般タブから「インターネットプロトコル(TCP/IP)」をクリックします。
「インターネット プロトコル」の「プロパティ」の全般タブで「次のIPアドレスを使う」にIPアドレス:192.168.1.10(自マシンのIPアドレス)、サブネットマスク:255.255.255.0、デフォルトゲートウェイ:192.168.1.1(ルーターのIPアドレス)と入力し、「次のDNSサーバーのアドレスを使う」に自マシンのIPアドレス、ルーターのIPアドレスの順に入れていきます。更に「詳細設定」ボタンを押し、「TCP/IP詳細設定」のDNSタブの中の「この接続のDNSサフィックス」欄に「myhome.net」(自分で決めたドメイン名)を入れ、それぞれ「OK」ボタンを押し入力を完了させた後、マシンを再起動します。ルーターに関しては各メーカーによって設定は異なりますが、固定アドレス設定機能(ネットワークボードのMacアドレスをルーターに登録しておくことにより行える)がそれぞれありますので設定しておきます。ただ、特に設定しておかなくてもパソコン側で設定してあれば問題はありません。後はメモリの浪費を避けるため、Windows標準のDnsCacheサービスをSTOPしておきます。方法は「コントロールパネル」から「管理ツール」の中の「サービス」をクリックします。利用可能なサービス一覧及び、動作状況が表示されますので、その中の「DNS Client」をダブルクリックし、DNSClientのプロパティからサービスを停止させ、スタートアップの種類を「手動」に変更し、「OK」ボタンを押します。 以上でDNSキャッシュサーバーの設定は完了です。最後にBINDのログファイルで正しく動作していることを確認します。 15-Oct-2003 08:09:08.000 default: notice: Ready to answer queries. 上記のように「日付、時間、メッセージ、自マシンのIPアドレス、ホスト名/A/IN」というログが記録されていれば成功です。私自身が感じたWindows標準のDNS Clientとの最大の違いは、パソコンを起動直後にインターネット接続した際、3秒程度掛かっていた名前の解決が1秒以内に行えるようになりました。当然、1度キャッシュされた名前は即時に解決されるのは云うまでもありません。 今度はBINDのログについて簡単に見てみましょう。ログを観察していると、様々なエラーが記録されることに気付くでしょう。以下はよく見かけるエラーメッセージです。 Lame server on 'ホスト名' (in 'ホスト名'?): [DNSサーバーのIP].53 'DNSサーバー名' ホスト名の正引き情報を持っているはずのDNSサーバーが権限がないと返答している。DNS情報の伝播が遅れているいることも考えられるが、大抵は該当DNSサーバーの正引き設定が間違っている。 Lame server on 'xxx.xxx.xxx.xxx.in-addr.arpa' (in 'xxx.xxx.xxx.in-addr.arpa'?): [DNSサーバーのIP].53 'DNSサーバー名' IPアドレスxxx.xxx.xxx.xxxの逆引き情報を持っているはずのDNSサーバーが権限がないと返答している。DNS情報の伝播が遅れているいることも考えられるが、大抵は該当DNSサーバーの逆引きが間違っている。 query(ホスト名) NS point to CNAME (DNSサーバー名:) learnt (CNAME=xxx.xxx.xxx.xxx:NS=xxx.xxx.xxx.xxx) NSレコードが、CNAMEとして定義されている。おそらく該当DNSサーバーの設定ミスと思われる。 上のようなエラーはほとんどが該当DNSサーバーの設定ミスによるものです。いわゆる”大手”といわれるようなサイトでも案外細かいところでミスをしてしまっているものです。 |
CopyRight (C) 2000-2013 by T.Shiraishi All right reserved 無断転載禁止/リンクフリー |