BIND 9 パッチ
概要
mDNkit では BIND 9 用のパッチファイルを提供しています。 このパッチを適用することにより、 BIND 9 に含まれるいくつかのツールにおいて多言語ドメイン名を扱うことが 可能になります。
BIND 9 へのパッチの適用方法は、パッチファイルの先頭に記載してあります。 インストールガイドの BIND 9 用パッチの適用とインストールも ご覧ください。
本バージョンの BIND 9 パッチは、以前のバージョン (mDNkit バージョン1) のものとは大きく異なります。以前のバージョンをお使いになっていた方は 以前のバージョンとの違いをお読みください。
ツールの修正内容
BIND 9 には DNS の問い合わせツールとして dig、host、nslookup という コマンドが付属します。BIND 9 パッチを適用することにより、これらはいずれも 多言語ドメイン名が扱えるようになります。具体的には以下の機能が 付加されます。
- 多言語ドメイン名の入力
コマンド引数、あるいは標準入力で、ローカルエンコーディングで 表現された非 ASCII のドメイン名を指定することができるようになります。 ローカルエンコーディングで入力されたこれらのドメイン名は 自動的に DNS プロトコル上で用いられるエンコーディングに変換され、 DNS サーバへの問い合わせが行われます。エンコーディングの変換の際には 同時に正規化も行われます。 - 多言語ドメイン名の表示
DNS サーバからの返答に含まれる多言語ドメイン名がローカルエンコーディングに 変換され、表示されるようになります。
ただし、 環境変数 MDN_DISABLE が定義されていた場合、 これらの機能は働かず、BIND 9 パッチを適用していないときと同じ動作 をするようになっています。
リゾルバや DNS サーバで用いられるエンコーディングや、 名前の正規化方式の指定はあらかじめ設定ファイルで設定しておきます。 このファイルの設定方法については mDNkit の設定 をご覧ください。
以前のバージョンとの違い
以前のバージョン (mDNkit バージョン1) においては、BIND 9 パッチは 以下のような機能も提供していました。
- BIND 9 の DNS サーバ (named) において、ドメイン名をテキストに 変換する際にUTF-8 文字をそのまま通す
- BIND 9 のリゾルバ (lightweight resolver) の提供する名前解決用の API 関数に、ホスト名としてローカルエンコーディングで表現されたホスト名を 指定できる
- 同じく名前解決結果として、ローカルエンコーディングで表現された ホスト名が返される
しかし mDNkit バージョン2では BIND 9 パッチからこれらの機能が削除されました。 これは IDNA というアーキテクチャを採用したためです。 このアーキテクチャではアプリケーションレイヤが 正規化 (NAMEPREP) および ACE への変換を行うことになっています。 ACE に変換された多言語ドメイン名は従来の ASCII ドメイン名としても 正当な形式になっているため、リゾルバや DNS サーバは従来のものをそのまま 修正なしに使用することができます。
なお、mDNkit バージョン2では IDNA に基づきアプリケーションで正規化や エンコーディング変換の処理を行うための API を提供しています。 詳しくは 多言語ドメイン名変換 API を参照してください。