第1回 DNSサーバの役割とBINDの導入
インターネットの基幹となる技術、それがDNSだ。DNSがなければインターネットはきわめて使いにくいものになっていただろう。本連載では、BINDでDNSサーバを構築しながらDNSそのものについても解説していく。今回はDNSサーバの役割に触れたあと、BINDの入手からインストールまでを紹介する。
関野史朗
2000/12/13
BINDはBerkeley Internet Name Domainの頭文字をとったもので、いわゆるDNSサーバとリゾルバライブラリ、各種ツールの集合体です。DNSはDomain Name Systemで、今日のインターネットを支える基幹技術の1つといって差し支えないでしょう。DNSの目的は、ホスト名とIPアドレスを関連づけることです。そしてその仕掛けは、名前空間の階層化と権限委譲による分散型データベースに集約されます。
もともとTCP/IPベースのネットワークとしてのインターネットでは、すべてのホストはIPアドレスで区別されます。0〜255の数値を4つ、ピリオドで区切って並べて表記しますが、人間にとっては覚えやすいものではありません。当然、分かりやすい名前でアクセスできるように対応表が用意されました。しかしインターネットに接続されるホストが増えると、これを人手でメンテナンスするのは不可能です。そこで名前空間を階層化するとともに分散型データベースとしてのDNSサーバが導入されたのです。
名前空間の階層化は、要するにピリオドで区切るということです。習慣でより広範囲を表すラベルを右側に書くので、右から左に行くにつれて徐々に範囲が狭くなっていくわけです。こうすることで、各ドメインごとに一意の名前を使いさえすれば、インターネット全体を通して名前が重複せずに済みます。
この階層に対応したサーバを用意することで、権限の委譲も可能になります。各サーバはインターネット上のホストすべてを知る必要はなく、下位のドメインに関する権限を持ったサーバを知っているだけで済みます。知らない情報に対してはルートネームサーバを始点としたたらい回しで処理されるのですが、それこそ電子的な速度で処理されるので人間からすれば大した遅れには見えません。
DNSにおける問い合わせの方法はRFCによって標準化されています。この問い合わせに答えるプログラムの1つが、BINDというわけです。4.2BSDで実装されて以来、事実上DNSサーバのリファレンス実装として扱われています。もちろん、ほかにもDNSサーバとして動作するプログラムはあります。が、情報が豊富という意味でも、まずはBINDを動かすことをお勧めします。
■バイナリパッケージを使う
Linuxディストリビューションの特徴として(というよりもPC-UNIXの特徴ですが)、すでにコンパイルされたバイナリイメージがパッケージとして用意されています。これを利用すれば、簡単にBINDをインストールできます。主なディストリビューションごとのBINDパッケージを表にしてみました。
| ディストリビューション | BINDパッケージ名 |
| Debian 2.2 | bind_8.2.2.p5-11.deb |
| Kondara 1.2 | bind-8.2.2pl7-1k.i586.rpm |
| Laser5 6.2 | bind-8.2.2_P5-1LL.i386.rpm |
| RedHat 6.2 | bind-8.2.2_P5-9.i386.rpm |
| RedHat 7.0 | bind-8.2.2_P5-25.i386.rpm |
| Slackware 7.1 | bind.tgz(bind-8.2.2-P5) |
それぞれ、パッケージを扱うコマンド(dpkg, rpmなど)で簡単にインストール、アンインストールできます。ディストリビューションをインストールするときの方法によっては、すでにBINDがインストールされているかもしれません。dpkg -lやrpm -qaで確認してからの方がよいでしょう。
■ソースコードからのインストール
前述のように、原稿執筆時点ではKondara MNU/Linuxを除いたすべてのディストリビューションで、bind-8.2.2-P5がパッケージになっています。しかし8.2系列では最新版として8.2.2-P7が提供されていますし、9.0.1というバージョンもリリースされています。
これらの最新リリースを使うためには、ソースコードを入手してコンパイルし、バイナリファイルを作る必要があります。またそれほど頻繁に起きるわけではありませんが、セキュリティホールの報告があった場合などはパッケージになるのを待つわけにいきませんので、どうしてもソースコードからのインストールが必要になります。
もともとUNIXの世界では、ソースコードからコンパイルして必要なバイナリを作成する方が一般的でした。さらに最近では、さまざまなシステムによる違いを修正する方法も自動化されています。加えてLinuxは最もメジャーなPOSIX準拠のOSなので、たいていのソフトウェアは簡単な変更を行うとLinuxでコンパイルできるようにソースコードが作成されています。パッケージほど簡単お手軽ではありませんが、ソースコードからのインストールも決して難しいものではありません。
最初に、インストールに使用するツールを確認します。まずANSI Cに準拠したCコンパイラが必要ですが、たいていのディストリビューションにはGNUのCコンパイラ(gcc)が用意されているので、それを使えばOKです。もしインストールしていないようでしたら、パッケージからインストールしてください。
もう1つ、パーサジェネレータと呼ばれるプロクラムも必要です。これはyacc、byacc、GNU bisonのいずれかです。これもパッケージからインストールするのが手っ取り早い方法です。
次にソースコードの入手ですが、オリジナルはhttp://www.isc.org/にあります。日本だと、Ringサーバ(http://ring.ocn.ad.jp/、http://ring.so-net.ne.jp/)などから入手した方が早いかもしれません。バージョンが変わっても、名前は同じでソースコードをまとめたものがbind-src.tar.gz、ドキュメントをまとめたものがbind-doc.tar.gzとなっています。以下にコンパイルとインストールの手順を記します。
$ tar zxvf bind-src.tar.gz |
これで/usr/local/bind以下にライブラリやヘッダファイルがインストールされます。さらに、
/usr/bin/addr |
がインストールされます。当然、ディストリビューション標準のバイナリファイルは書き換えられてしまいます。何が書き換えられたのかきちんと記録を取り、すぐに分かるようにしておかないと、後々の混乱を引き起こします。
これを避けるため、すべてのファイルを/usr/local以下にインストールする方法もあります。伝統的に、/usr/localはユーザーが自分でインストールするための場所とされており、システムはここに干渉しないことになっています。
この場合は、インストール先を変更するために環境変数を書き換えます。ドキュメントには、
|
とあります。実際には、src/ports/linux/Makefile.setに以下の記述があるので、これを適当に書き換えます。
'CC=gcc -D_GNU_SOURCE' |
安直な方法としては、/usrを/usr/localに書き換えるという手があります。この変更が確実に反映されるよう、make installを実行する前にsrc/.settingsを削除しておいてください。
これでインストールが終わったので、次は設定です。しかし、この設定だけで1冊の本が書けるほど奥が深いので、次回以降に解説を行います。
| 連載 BINDで作るDNSサーバ |
| Linux Squareフォーラム サーバ構築・運用関連記事 |
| 連載:Heartbeatでかんたんクラスタリング(連載中) オープンソースソフトウェアの「Heartbeat」を使ってHAクラスタを実現し、サービスを「落とさない」仕組みを実現します |
|
| 特集:Apache 2.2でWebサイトをパフォーマンスアップ! 最新安定版Apache 2.2は、何が変わったのか? 最新のApacheを新機能の使い方とともに解説する |
|
| 連載:実用 Apache 2.0運用・管理術(全8回) 本連載では、Apache 2.0の運用や管理方法を解説する。まず必須設定と基本的なセキュリティ対策を行い今後の運用に備える |
|
| 連載:実用
BIND 9で作るDNSサーバ(全15回) 本連載では、BIND 9の構築/運用方法を解説していく。実際に役立つことを目的に、セキュリティや大規模運用などのテーマを取り上げていく |
|
| 連載:実用qmailサーバ運用・管理術(全14回) 本連載を通して、qmailによるメールサーバの高度な構築・運用・管理術を紹介。SPAM対策やML管理からサーバでのウイルスチェックなどまで |
|
| 特集:Samba
3.0の全貌 改訂版 Samba 3.0リリースから8カ月。ここであらためて、Samba 3.0系列の新機能、インストール方法、国際化の現状を解説する |
|
|
TechTargetジャパン
- 新しい記事も入っていて安心しました (2012/2/7)
Linux Squareのアクセスランキングを公開します。定番の記事ばかりでなく、連載中の記事もよろしくお願いいたします - エラーメッセージをどう扱うか? (2012/2/2)
今回は、スクリプト実行時にエラーが発生したことを知らせるメッセージの扱い方を説明します - ファイルのアップロードを制限する (2012/1/30)
HTTPクライアントがアップロードしてくるファイルの扱いについて解説します。そもそも受け入れる必要があるのか? ということのほかにも、いろいろ設定が必要です - OSに付属するシェルスクリプトを読んで技術を盗む (2012/1/27)
シェルスクリプトマスターに近づくには、他人から技術を盗まなければならない。OS付属のスクリプトから技術を盗もう
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -
