キャッシュ/逆引きDNSの構築と運用:実用 BIND 9で作るDNSサーバ(4)(2/2 ページ)
名前解決の速度向上に有効なのがキャッシュサーバ。だが、クライアントにもキャッシュ機能があるため、どこにどのようにキャッシュされるのかを理解していないと問題解決に手間取ることになる。(編集局)
逆引きの仕組みと逆引きDNSの運用
おろそかにされがちな逆引きサーバですが、その効果は意外に大きいものです。WebサーバにしてもFTPサーバにしても、そのサーバの運用者の意図次第で、接続元のIPからドメイン名を検索してログファイルに記録したり、場合によっては逆引きしたドメイン名からIPアドレスを正引きし、同一性を確認する場合があります。
こうした機能はクライアントだけでなく、サービスを提供するサーバやネットワーク側にも多くのコストを要求します。運用側も十分に承知しており、こうした同一性の確認およびIPアドレスの逆引き結果をログファイルに記録するなどの行為は、多くのサイトでは行われていません。それでも接続元の身元を確実にとらえておきたいと意図する運営者や、ログファイルにはホスト名を残したいと思う管理者は少なからず存在します。そのようなサイトにアクセスした場合は、逆引きの効果が大きく左右します。
効果があることは分かっていても、なかなか運用に至れない原因の1つに、割り振られるIPアドレスのレンジの問題があります。第2回で紹介した逆引きはクラスC(注)のアドレスに基づいたものでした。
しかし、実際に手に入れることができる固定IPは、月に数万円のコストを支払ったとしても8〜16個程度で、クラスC未満のCIDR(Classless Inter-Domain Routing:コラム「CIDRとクラス」参照)でしか割り当てられません。クラスC未満の逆引き設定は、契約しているプロバイダやネットワーク事業者に依存するため、一概に論じることはできません。しかし、多くの場合はここで紹介する方法が適用できるはずです。
また、どうしてプロバイダはそのような逆引き設定を強いるのかを知ることも重要です。まず、逆引きそのもののメカニズムを理解しましょう。
コラム CIDRとクラス
IPアドレスをサブネットで分ける際は、従来クラスA、B、Cが用いられていました。しかし、たった3種類の分け方しかないようでは、きめ細かく分割することができず、無駄にアドレスを消費することになります。
例えば、IPアドレスが1000個必要な組織があった場合、クラスの概念ではクラスBの6万5536個を割り出すことになります。クラスCの256個(ホストとしては254個)では足りないためです。しかし、クラスCを4個割り当てればIPアドレスの無駄をなくすことができます。
上記の組織にクラスC:192.168.0.0〜192.168.3.0を割り当てたとします。この場合、IP付与先のルーティングはクラスC:192.168.0.0〜192.168.3.0までの4つのレンジを1つずつ指定しなければなりません。そこで、CIDR(Classless Inter-Domain Routing)を用います。いまではよく見かける表記法である192.168.0.0/22を用いることで、4つのレンジを一くくりにするのです。こうすることで、ルーティングに掛かるコストを抑えようというわけです。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
これによりクラスC未満のレンジに対しても、192.168.0.0/25や192.168.0.0/29などのようにサブネット化が可能となったわけです。
逆引きの仕組み
逆引きに関するゾーンファイルの記述方法やnamed.confでの指定はすでに第2回で紹介したとおり、とりわけ難しいものではありません。
192.168.10.0/24のIPレンジに対しては、named.conf中に「10.168.192.in-addr.arpa」ゾーンを設けます。上位3オクテットまでを逆に並べて、末尾に「.in-addr.arpa」を付けると機械的に覚えてもいいのですが、仕組みは実に単純です。結果からいってしまえば、逆引きにもちゃんとドメインツリーの仕組みが使われています。example.jp(図2)と192.168.10.0/24のドメインツリー(図3)を見比べてみましょう。
正引きと同じように、「.」(ルート)を起点にドメインツリー検索が行われていることが分かるでしょう。「arpa(arpaTLD)」は、予約された特別なものですが、トップレベルドメイン(TLD)の1つにすぎません。その下にIPv4のアドレス体系を表す「in-addr」ドメインが続くわけです。
IPv4のアドレス体系があるわけですから、当然IPv6も「ip6.arpa」として予約されています。ほかにもIP電話の番号管理を見据えた「e164.arpa」ドメインが定義されています(参考:「DNS導入に向けての予備知識」)。in-addrに続いて、IPアドレスの第1オクテット(この場合は192)、第2オクテット(168)と連なり、最後にホストのアドレスに到達します。ホストのIPアドレスを探し出すまでにたどる道筋は、まさにドメインツリーです。
クラスC未満での逆引き設定
上記の逆引きドメインツリーでは、IPアドレスの第3オクテット以下を分割することはできません。1(または0)から255までを1つのゾーンファイルに収める必要があります。しかし、これではクラスC未満でIPアドレスを割り当てられた場合は、割り当てIPをクラスC単位で管理するネットワーク事業者にいちいち修正依頼することになります。
そこで、クラスCの逆引きを管理するネットワーク事業者側の逆引きゾーン情報にサブドメインとCNAMEを用いることで、見かけ上はクラスC未満で割り振られた各契約者側で逆引き情報を管理できます。
まず、ネットワーク事業者側のnamed.confファイルおよびゾーンファイルから見ていきましょう。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
named.confは、一般的なクラスCでの逆引き定義と変わりません。「file」には、それぞれのルールに合わせて任意のファイル名を指定します。
ここで指定されたゾーンファイルexample.revを見てみると、IPアドレスに対するホスト名の指定に用いられるPTRの行があり、各顧客に割り当てているIPレンジにはCNAMEが使われています。そのCNAMEで指定された先に、IPアドレスの第4オクテット目「.sub-a.20.168.192.in-addr.arpa.」が指定されています。通常のin-addr.arpa.の使い方ではクラスCまでしか指定できないため、独自にサブドメインを設け、見かけ上クラスC未満のアドレスをそれぞれのIP割り当て先(この場合は顧客Aや顧客B、C)のDNSに委譲しています。その際、サブドメインに対する「NS」をそれぞれ顧客のDNSに向けているわけです。
では、クラスC未満の逆引きを委譲された側(この場合は顧客A)のnamed.confや逆引きゾーンファイルを見てみましょう。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
named.confのゾーンの指定は、ネットワーク事業者が決めたサブドメイン(sub-a)付きのもので指定されています。逆引き用のゾーンファイル(example-a.rev)は至って一般的なものです。ここにきて、ようやく192.168.20.1のIPアドレスに対するホスト名が解決されるわけです。
digコマンドを使って確認してみましょう。1.sub-a.20.168.192.in-addr.arpa.を経てsv1.example-a.jp.に到着することが分かります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
皆さんが固定IPアドレスをレンジで取得する際は、ネットワーク事業者(ほとんどがプロバイダですが)から割り当てられるIPを使用し、逆引きDNSの作成方法もそれぞれのネットワーク事業者に従うことになります。とはいえ、多くはここで紹介した方法が取られています。サブドメインの命名規則が独特のものになっているため、ネットワーク事業者ごとにさまざまなルールが存在しているように見えますが、事業者側でどのようにやっているかが分かれば、理解が早くなると思います。
今回はBIND 9をキャッシュサーバと逆引きDNSの2つの側面から紹介しました。キャッシュサーバの機能は、前回紹介した正引きゾーンサーバと今回の逆引きサーバとでは相反する用途で用いられるため、できればサーバそのものも分けて運用したいところです。しかし、リソースそのものに限りがある環境では、併用して運用せざるを得ないかもしれません。ですが、ゾーンサーバとキャッシュサーバはまったく異なる性質のものであることはよく覚えておきましょう。
参考資料
▼RFC2317 「Classless IN-ADDR.ARPA delegation」http://rfc-jp.nic.ad.jp/cgi-bin/direct.cgi?keyword=2317&language=eng&x=24&y=7
▼JPNIC公開文書「Class Cより小さなアドレス空間の割当(サブアロケーション)に関するパイロットプロジェクトについて」
ftp://ftp.nic.ad.jp/jpnic/ipaddress/archive/ip-addr-suballoc.txt.960108
すでにドキュメントの効力期限は過ぎていますが、クラスC未満の逆引きDNSについては現在でも参考になります。
- BIND 9を徹底活用するためのTips集
- DNSの拡張仕様、SRVレコードとENUM
- 次世代のセキュリティ拡張DNSSECをBIND 9で実現
- IPv6対応DNSサーバの実現
- BIND 9のチューニングと大規模運用
- BIND 9の運用情報収集と分析方法
- BIND 9のセキュリティ対策
- DHCPとDynamic DNSの連携システム
- Dynamic DNSの基礎とnsupdateコマンド
- サブドメインの運用と委任
- スレーブ・サーバのゾーン転送とセキュリティ
- キャッシュ/逆引きDNSの構築と運用
- メール/Webサーバを効率的に動かすゾーン設定
- すべての基礎、マスター・ゾーンサーバの設定
- BIND 9の改ざんチェックとインストール
Copyright © ITmedia, Inc. All Rights Reserved.