
				mDNkit
		  -- 多言語ドメイン名ツールキット --
			    バージョン 2.4
       (社) 日本ネットワークインフォメーションセンター (JPNIC)


このファイルの目次:

  1. 概要
  2. ディレクトリ構成
  3. パッチの当て方
  4. 本キットが対応しているシステム
  5. 本キットに関する最新情報、問い合わせについて

コンパイルおよびインストール方法については、INSTALL.ja というファイルを
ご覧下さい。このバージョンでの主な変更点に付いては、(英文ですが) NEWS 
というファイルをご覧下さい。


1. 概要

mDNkit とは多言語ドメイン名を扱うためのツールキットです。多言語ドメイ
ン名を扱うためには、次のような機能が要求されます。

・エンコーディング変換
  多言語ドメイン名に対して、そのエンコーディングをアプリケーションが使
  用しているもの (ローカルエンコーディング) から名前解決に用いられるも
  の (IDN エンコーディング) への変換、またその逆方向の変換を行います。
  ドメイン名を IDN エンコーディングにした結果は、従来のドメイン名と同
  じく ASCII 文字のみで構成されるので、IDN エンコーディングはASCII 互
  換エンコーディング (ACE) とも呼ばれます。

・NAMEPREP
  ドメイン名を IDN エンコーディングに変換する前に、名前の正規化を行い
  ます。これを NAMEPREP と呼びます。

上記の処理はドメイン名を DNS サーバに送る前に実行する必要があります。
処理済のドメイン名は ASCII 文字から構成され、従来の ASCII ドメイン名と
しても正しい形式になっているので、DNS サーバ側にはなんの変更も必要あり
ません。

この配布キットには次のようなものが含まれます。

・多言語ドメイン名を処理するためのライブラリ (libmdn, libmdnlite)
  これらのライブラリでは、エンコーディング変換や NAMEPREP の機能を実
  装しており、アプリケーションが多言語ドメイン名を簡単に扱えるように
  するための API を備えています。

  どちらのライブラリもほとんど同じ API を提供します。両者の相違点です
  が、libmdn のほうは iconv() 関数を使って UTF-8 とローカルエンコーディ
  ング (iso-8859-1 など、通常は locale から決定されます) との間の変換
  機能を提供しています。libmdnlite は libmdn の軽量版です。ローカルエ
  ンコーディングは常に UTF-8 だと仮定しており、iconv() は使用しません。

  本ツールキットに含まれるコマンド (mdnsproxy や mdnconv など) の多く
  は libmdn を使用しています。
 
・DNSプロキシサーバ (mdnsproxy)
  ドメイン名変換機能をもつ DNS のプロキシサーバです。クライアントから
  受信した DNS メッセージ中のドメイン名をクライアントのローカルエンコー
  ディングから DNS サーバの使用する DNS プロトコル上のエンコーディング
  へと変換して DNS サーバに送信します。また DNS サーバから返されたDNS 
  メッセージ中のドメイン名をクライアントのローカルエンコーディングに戻
  してクライアントに返します。詳しくは、後述の「2. mdnsproxy を使う」
  を御覧ください。

・UNIX アプリケーションに MDN 機能を動的に追加するコマンド (runmdn)
  UNIX の通常のアプリケーションで多言語ドメイン名を取り扱うために、特
  別なライブラリを動的にリンクするためのコマンドです。詳しくは、後述の
  「3. runmdn を使う」を御覧ください。

・bind-9 に MDN 機能を追加するパッチ
  bind-9 に MDN の機能を追加するパッチです。`dig'、`host'、`nslookup'
  にエンコーディング変換と NAMEPREP の機能を追加し、多言語ドメイン名が
  扱えるようにします。

・Windows アプリケーション用の mDN ラッパー
  WINSOCK の名前解決機能に対するラッパー DLL です。Windows 上では、名
  前解決の要求は、WINSOCK DLL を通して行われます。そこで、これを多言語
  ドメイン用の WINSOCK DLL に置き換えることで、従来の Windows アプリケー
  ションでも mDN 機能を使用できるようにします。詳しくは、後述の
  「4. mDN ラッパーを使う」を御覧ください。

・named.conf およびゾーンマスタファイル用コードセットコンバータ (mdnconv)
  named.conf およびゾーンマスタファイルを対象としたコードセット (エン
  コーディング) 変換用ツールです。SJIS などのローカルエンコーディング
  で書かれたこれらのファイルを、IDN エンコーディング (例えば RACE) へ
  と変換します。

・bind-8 を 8 ビットスルー化するパッチ
  named やリゾルバでローカルエンコーディングや UTF-8 エンコーディング
  のドメイン名を使用可能にするためのパッチです。8ビットスルーなのでほ
  とんどどんなコードでも通ってしまいます。

・squid を 8 ビットスルー化するパッチ
  URL 中のホスト名に関する正当性チェックを外すためのパッチです。このパッ
  チを当てないと Squid は多言語ドメイン名を含む URL をエラーとしてはじ
  いてしまいます。


この配布キットは、以上のものを用いて、多言語ドメイン名を扱うための複数
の方法を提供しています。

 ** 1. API を使う
    多言語ドメイン名を扱うための方式としてはこの方法が推奨されています。
    アプリケーションは mDNkit の提供する API を明示的に呼び出して
    エンコーディング変換や NAMEPREP を行います。
    
				  ACE エンコーディングの
   +----------------+-------+--------+ ドメイン名
   |                |       |        |            +------------+
   |  クライアント  |  mdn  |システム|----------->| DNS サーバ |
   |アプリケーション|library| 付属の |<-----------|            |
   |                |       |リゾルバ|            +------------+
   +----------------+-------+--------+ 

 ** 2. mdnsproxy を使う
    上記の API を使うようにアプリケーションを修正できない場合でも、
    mdnsproxy を使用すれば多言語ドメイン名の名前解決を行うことが
    可能です。ただしこの場合アプリケーションが 8 ビットスルーの
    リゾルバを使っていることが前提となります。

		     ローカルエン  エンコーディン  ACEエンコーディ
		     コードィング  グ変換および正  ングのドメイン名
   +----------------+のドメイン名  規化		   
   |  クライアント  |             +--------------+             +------+
   |アプリケーション|------------>|  mdnsproxy   |------------>| DNS  |
   |と 8ビットスルー|<------------|              |<------------|サーバ|
   | 化したリゾルバ |             +--------------+             +------+
   +----------------+

 ** 3. runmdn を使う
    あるいは、クライアントアプリケーションが名前解決 用の API
    (gethostbyname など) を動的にリンクし、かつ OS が適切な機能を
    備えている場合には runmdn を使うこともできます。名前解決用の
    API を、エンコーディング変換や NAMEPREP 機能を備えたバージョンの
    ものに動的に置換えることにより、通常のアプリケーションが多言語
    ドメイン名を名前解決できるようにします。

		     エンコーディング変換  ACEエンコーディ
		     および正規化	   ングのドメイン名
   +----------------+------------------+   
   |  クライアント  |動的にリンクされた|                 +------+
   |アプリケーション|    ライブラリ    |---------------->| DNS  |
   |と通常のリゾルバ|                  |<----------------|サーバ|
   +----------------+------------------+                 +------+

 ** 4. mDN ラッパーを使う
    WINSOCK DLL をラップすることにより、mDN ラッパーは Windows の
    アプリケーションが多言語ドメイン名を名前解決できるようにします。

		      ローカルエ  正規化および		ACEエンコーディ
		      ンコーディ  エンコーディ		ングのドメイン名
   +----------------+ ングのドメ  ング変換		
   |従来の Windows  | イン名    +---------+------------+           +------+
   |ネットワーク    |---------->|   mDN   | オリジナル |---------->| DNS  |
   |アプリケーション|<----------| ラッパー|  winsock   |<----------|サーバ|
   +----------------+           +---------+------------+           +------+


2. ディレクトリ構成

配布キットのディレクトリ構成と、主要なファイルを示します。

  	README			英語版の README
	README.ja		このファイル
	INSTALL			英語版の INSTALL
	INSTALL.ja		コンパイルとインストール方法
	DISTFILES		配布されるファイル一覧
	NEWS			主な変更
	ChangeLog		変更詳細
	configure		configure スクリプト
  	Makefile.in		トップレベルの Makefile のテンプレート
	include/		インクルードファイルディレクトリ
  	    config.h.in		config.h のテンプレート
	    mdn/		mdn ライブラリ用インクルードファイル
	lib/			mdn ライブラリソース
	mdnsproxy/		DNS プロキシサーバソース
	patch/			各種パッチファイル
	    bind8/		bind8 用パッチ
	    bind9/		bind9 用パッチ
	    libiconv/		libiconv 用パッチ
	    squid/		squid 用パッチ
	tools/			周辺ツール
	    mdnconv/		コードセットコンバータソース
	    runmdn/		runmdn コマンドソース
	util/			ユーティリティ
	wsock/			mDN ラッパーソース


4. パッチの当て方

この配布キットには、bind-9.1.3、bind-8.2.3 および squid-2.4-STABLE1 に
対するパッチが含まれています。パッチの当て方は、パッチファイルの先頭に
書かれていますのでそちらを参照してください。

Solaris では、システム付属の patch コマンドが正常に動作しないことがあ
ります。そのような場合には、GNU バージョンの patch
(http://www.gnu.org/software/patch/) をインストールして、これを使用し
てください。


5. 本キットが対応しているシステム

正常にインストールできることが確認できているのは、次のシステムです。

    ------------------------------------------------------------------
    OS                      iconv              configure のオプション
    ==================================================================
    FreeBSD 4.4-RELEASE     GNU libiconv       --with-libiconv
    Intel                   1.6.1
    -------------------------------------------------------------------
    NetBSD 1.5.2            GNU libiconv       --with-libiconv
    Intel                   1.7
    ------------------------------------------------------------------
    Red Hat Linux 7.2       標準ライブラリ     なし
    Intel                   (glibc)
    ------------------------------------------------------------------
    Solaris 2.6             標準ライブラリ     なし
    Sparc                   (libc)
    -------------------------------------------------------------------

    *1: 動作するのは mdnconv だけです。

本キットが対応している/していないシステムに関する最新の情報は、次のと
ころから辿れる mDNkit FAQ のページに記されています。

	http://www.nic.ad.jp/jp/research/idn/


6. 本キットに関する最新情報、問い合わせについて

本キットに関する最新情報については、

	http://www.nic.ad.jp/jp/research/idn/

を参照してください
本キットに関するバグレポートおよびコメントは、それぞれ 

	mdnkit-bugs@nic.ad.jp
および
	idn-cmt@nic.ad.jp

へお願いします。


; $Id: README.ja,v 1.43.2.6 2002/02/22 01:32:07 m-kasahr Exp $
