mDNkit Frequently Asked Questions 2001/01/19 版 【コンパイル時の注意点】 Q.1010 Solaris で mDNkit を作ろうとしていますがソースにパッチが当たりません。 A.1010 Solaris のシステムに付属する patch コマンドは mDNkit に含まれるパッチ の形式を正しく解釈できないため、パッチが正しく当たりません。GNU patch のソースを入手してインストールして、それを使用してください。 GNU patch web page http://www.fsf.org/software/patch/patch.html Q.1020 make の時に iconv.h が見つからないと言われます。 A.1020 mDNkit は、既に iconv ライブラリがインストールされていることを前提と しています。もし iconv ライブラリがインストールされていないのであれば まず、iconv ライブラリのインストールを行ってください。フリーの iconv ライブラリとしては以下のものがあります。 libiconv Web page http://clisp.cons.org/~haible/packages-libiconv.html 上記の iconv ライブラリをインストールした場合など、iconv.h が標準の インクルードファイルパス以外にある場合には、configure を実行する際に 環境変数 CFLAGS でそのパスを設定してください。 (sh 系のシェルの場合) % CFLAGS="-I/usr/local/include" ./configure ... (csh 系のシェルの場合) % setenv CFLAGS "-I/usr/local/include" % ./configure ... Q.1030 BIND 9.0.1 に mDNkit のパッチを当ててコンパイルしようとしたところ、 sqr がないというエラーメッセージが出てコンパイルできません。 A.1030 OpenSSL がインストールされていて、そのヘッダファイルが BIND 9.0.1 に 付属の SSL ライブラリのヘッダファイルより先に読み込まれている可能性 があります。 configure を実行した際の環境変数 CFLAGS に、OpenSSL のヘッダファイル がインストールされたディレクトリが設定されていることが考えられます。 その場合には、環境変数 CFLAGS をクリアして、configure からやり直して みてください。 (sh 系のシェルの場合) % CFLAGS="" ./configure ... (csh 系のシェルの場合) % setenv CFLAGS "" % ./configure ... Q.1040 libiconv-1.3 の shared ライブラリが作成されません。 A.1040 libiconv-1.3 に付属の shared ライブラリ生成ツールは FreeBSD4.x 系 などの比較的新しい OS には対応していません。最新版の libiconv を お使いください。最新版の入手先については A.1020 をご参照ください。 どうしても libiconv-1.3 を使わなければならない場合には、mDNkit の トップディレクトリにある ltconfig と ltmain.sh の 2つのファイルを libiconv-1.3/autoconf ディレクトリにコピーして、configure からやり 直してください。 Q.1050 make してできた mdnconv コマンドを実行しようとすると libiconv.so.2.0 が見つからないというエラーメッセージが出力されて実行できません。 A.1050 mDNkit の configure 時に --with-iconv オプションで iconv のライブラリ がインストールされたディレクトリを指定してください。 (/usr/local/lib にインストールされている場合) % ./configure --with-iconv="-L/usr/local/lib -R/usr/local/lib -liconv" ... Q.1060 Debian GNU/Linux で mDNkit 付属の BIND 9 パッチをあてた BIND 9.0.1 をコンパイルしようとしたら、dns/enumclass.h がないといわれてエラー になりました。 A.1060 mDNkit の共有ライブラリ libmdn.so* がインストールされたディレクトリ が共有ライブラリのサーチパスに入っていないためです。/etc/ld.so.conf に当該ディレクトリパスを追加し、ldconfig コマンドを実行してください。 【設定方法】 Q.2010 dnsproxy.conf の client-translation や server-translation には必ず ZLD を指定しなければならないのですか?configure 時に --enable-zld オプションは指定していません。 A.2010 --enable-zld オプションの有無に関わらず、構文上は ZLD を必ず指定 しなければなりません。ただし、--enable-zld オプションが指定されて いなければ、ZLD として何を設定しても無視されます。 Q.2020 normalization には何を設定すればよいのですか? A.2020 JPNIC としては、normalization とドメイン名のエンコーディングに下記の 設定を行うことを推奨致します。 normalization の設定は下記の内容を推奨します。 normalize ja-kana-fullwidth ja-alnum-halfwidth ja-compose-voiced-sound unicode-lowercase unicode-form-kc ドメイン名のエンコーディングの設定は RACE を推奨します。 server-translation . RACE なお、上記の設定は、mDNkit-1.2 以上を使用が前提となります。最新版の mDNkit-1.2.1 を使うようにして下さい。 Q.2030 dnsproxy を起動すると、initTcp や initUdp といったメッセージが出力 されてエラー終了します。 A.2030 dnsproxy は DNS サーバと同一のポートを使用しています。従って、既に DNS サーバが起動されているホスト上では、通常は dnsproxy を起動する ことはできません。DNS サーバと dnsproxy は別のホスト上で動かす様に してください。 Q.2040 dnsproxy と DNS サーバを同じホスト上で動かすことはできませんか? A.2040 dnproxy と DNS サーバが問い合わせを受け付けるポート番号を違うものに するか、dnsproxy と DNS サーバが問い合わせを受け付ける IP アドレス を違うものにしてください。 Q.2050 mdnconv を使用して、BQ--3BS6KZZMRKPDBSJQ4EYKIMHTKQGYUZU2CM.JP を デコードしようとしたのですが、うまくデコードできません。 A.2050 mDNkit-1.0 では、大文字のドメイン名をデコードすることはできません。 mDNkit-1.2 以上を使用が前提となります。最新版の mDNkit-1.2.1 を使う ようにして下さい。 【クライアントからの使い方】 Q.3010 環境変数 LANG に ja_JP.euc-JP を設定しています。mdnconv はそれに従っ て正しくローカルエンコーディングを判断してくれますが、runmdn は正し くは判断してくれません。 A.3010 runmdn で環境変数 LANG が評価されるか否かはアプリケーションの locale の設定方法に依存します。依存しないためには、環境変数 MDN_LOCAL_CODESET に iconv ライブラリが受付可能なコードセット名を設定してください。 Q.3020 runmdn を使って telnet はできますが、ping ができません。 A.3020 runmdn はセキュリティ上の理由から、SUID または SGID ビットが立った コマンドには使用できません。 Q.3030 Solaris で runmdn が動きません。 A.3030 Solaris のリゾルバライブラリは bind4 / bind8 のリゾルバとは仕様が 異なるために、残念ながら runmdn は動きません。代わりに dnsproxy を 使用してください。 Q.3031 runmdn で telnet を実行したら、下記のエラーが起きて実行できません。 ld.so.1: telnet: fatal: relocation error: file /usr/local/lib/libmdnresolv.so.4: symbol mdn__lace_convert: referenced symbol not found Killed A.3031 mDNkit-1.2 は runmdn の Makefile に不具合がありました。最新版の mDNkit-1.2.1 を使うようにしてください。 Q.3040 mDN Wrapper を使うと Netscape が起動できません。 A.3040 残念ながら Netscape では mDN Wrapper は使えません。代わりに dnsproxy をご利用ください。 Q.3050 dnsproxy を使うと、日本語ドメイン名に片仮名の「ソ」が含まれていると 正しくアドレス解決ができません。 A.3050 クライアント側のローカルエンコーディングが SJIS で、かつクライアント 側のリゾルバが 8bit クリーンでないと、SJIS 中に '\'(ASCII コードで 0x5c)が含まれる文字の場合は、その部分のみ削除されることがあり、その ためにアドレス解決に失敗します。代わりに runmdn を使うか、ホスト側の リゾルバライブラリを 8bit クリーンのものと入れ替えてください。 Q.3060 mDN Wrapper のコンフィグレーションプログラムでアプリケーションを wrap しようとすると、エラーダイアログが出力されて wrap できません。 mDN Wrapper のコンフィグレーションプログラムで wrap したアプリケー ションを unwrap しようとすると、エラーダイアログが出力されて unwrap できません。 A.3060 mDN Wrapper のコンフィグレーションプログラムで wrap を行うと、登録 されたアプリケーションがインストールされているフォルダに Wrapper DLL をコピーします。逆に、unwrap を行うとコピーした Wrapper DLL を 削除します。 そのため、wrap を行おうとするアプリケーションが起動されている間は、 コピーしようとする Wrapper DLL がオープンされているため wrap は失敗 します。また、wrap が行われたアプリケーションが起動されている間は、 コピーされた Wrapper DLL がオープンされているため unwrap が失敗します。 wrap および unwrap はアプリケーションを終了してから行ってください。 Q.3070 mDN Wrapper でログを残すことはできませんか? A.3070 mDN Wrapper は、コンフィギュレーションプログラムの "Log.." ボタンで ログレベルやログファイルの設定や、ログの参照または削除を行うことが できます。 設定可能なログレベルは None, Fatal, Error, Warning, Info, Trace です。 ログを出力したくない場合には None を選択してください。 また、ログの参照は "View" ボタンで、ログの削除は "Delete" ボタンを クリックすることにより行うことができます。 Q.3080 runmdn でログを残すことはできませんか? A.3080 runmdn は、環境変数 MDN_LOG_LEVEL に 0 から 5 までの数値を設定する ことで、標準エラー出力にログを出力することが可能となります。 数値が大きくなるほど、出力されるログの詳細度があがりますが、その分 情報量が増えます。これは runmdn が利用している mDNkit のライブラリ libmdn の機能なので、mdnconv でも同様に使用可能です。 MDN_LOG_LEVELに 4 または 5 を指定する場合には、CFLAGS に -DDEBUG オプションを追加して libmdn および当該ライブラリをリンクしている コマンドを再コンパイルしてください。 Q.3090 mDN Wrapper のインストールを行ったのですが、新しくなったようには 見えません。 A.3090 mDNkit-1.2 以前の mDN Wrapper を既にご利用になっていて、mDNkit-1.2.1 の mDN Wrapper を上書きインストールしようとすると発生する問題です。 その場合は、以下の手順に従って、mDNkit-1.2.1 のmDN Wrapper をインスト ールするようにしてください。 (1) mDNkit-1.2.1 の mDN Wrapper をインストールする前に必ず mDN Wrapper をアンインストールしてください。 アンインストールは、[スタート]→[設定] →[コントロールパネル]→ [アプリケーションの追加と削除]で mDN Wrapper を選択し、[追加と削除] をクリックすることにより可能です。 (2) mDN Wrapper を新規にインストールしてください。 (3) mDN Wrapper インストール終了後、[スタート]→[プログラム]→[mDN Wrapper]→[mDN Wrapper Configuration]を起動し、wrap されている 全てのアプリケーションをいったん unwrap してください。 [Unwrap All]→[はい]をクリックすると、一括して unwrap できます。 unwrap の際、wrap されているアプリケーションが起動されていると エラーとなります。関連するアプリケーションは全て終了しておいて ください。(エラーの詳細については A.3070を参照してください。) (4) unwrap したアプリケーションを再度 wrap をしてください。 【サーバでの対応】 Q.4010 ISP 側で dnsproxy を用意すれば、ダイヤルアップユーザーは多言語ドメ イン名の Web にアクセスできますか? A.4010 ISP のネットワーク構成や利用者の利用状況によって異なります。基本的 には、多言語ドメイン名の対応は利用者側(リゾルバやアプリケーション など)で行われる必要があります。dnsproxy は利用者の端末で対応でき ない場合のための補助的な手段であり、最終的な解決法ではありません。 Q.4020 Apache で日本語ドメイン名の Web サイトを立ち上げたのですが、日本語 ドメイン名では Apache のログに "Client sent malformed Host header" というメッセージが出力されてアクセスできません。 A.4020 Apache-1.3.10 からセキュリティ上の理由で、HTTP リクエスト中の Host ヘッダのチェックが厳しくなり、ASCII の英数字、ハイフン、ドット(ピ リオド)以外の文字は不正なホスト名とみなされるようになりました。 mDNkit はリゾルバ(ドメイン名の問い合わせ)の部分で多言語対応する 機能を提供するもので、個々のアプリケーションプロトコルには対応して いません。現状では、Apache で日本語ドメイン名のリクエストを受け付 けるためには以下のいずれかの対応が必要となります。 ・Apache-1.3.9 を使う ・Apache-1.3.10 以上を使う場合、src/main/http_vhost.c の fix_hostname 関数を Apache-1.3.9 のものと入れ替える ・Host ヘッダを ACE で出力する Web ブラウザを使う (そのような Web ブラウザがあったら教えてください) Q.4030 Squid 2.3-STABLE3 用のパッチは用意されていますが、Apache-1.3.10 以 上用のパッチは用意されないのですか? A.4030 一般に HTTP Proxy サーバは利用者の近くに配置されるため、利用者の端 末が使用する文字エンコーディングを仮定することが可能です。 そのため、日本語ドメイン名の導入初期において、dnsproxy または mDNkit が提供するリゾルバライブラリと組み合わされた HTTP Proxy を使用する ことは、多言語ドメイン名での Web アクセスに対応する有効な方式になり 得ると考えています。 Squid は世界中で広く使われている HTTP Proxy あり、小規模なパッチで 対応することが可能であったため、パッチを用意しました。 Web サーバは利用者の近くに配置されるものではなく、利用者の端末が使 用する文字エンコーディングを仮定することは不可能です。 そのため、Web サーバで多言語ドメイン名に対応することは困難であり、 また、日本語ドメイン名にのみ対応するようなパッチを作成することは Web サーバの汎用性を失わせることになるため、パッチは用意しません。 【その他】 Q.5010 ACE って何ですか? ZLD って何ですか? A.5010 ACE とは ASCII Compatible Encoding の略で、多言語ドメイン名を ASCII 文字のみで表現するエンコーディング方式のことです。 ACE はそれ自体 ASCII 文字列ですので、プレフィックスやサフィックス として特定の文字列を追加するなどの工夫を施さない限り、それが ASCII 文字列なのか ACE なのかを判断することはできません。 ZLD とは Zero Level Domain のことで、利用者が意識する必要のない、 もしくは利用者から隠蔽された特別な上位レベルドメイン名のことです。 ZLD は、ACE を判別する方式の一つですが、実際のドメイン名空間では ZLD は通常のドメイン名として存在しますので、ZLD の使用はドメイン名 空間の分断を招く恐れがあるとして、現在では支持されていません。 Q.5020 RACE って何ですか? A.5020 RACE とは Row-based ASCII Compatible Encoding の略で、ACE 方式の一 つです。ACE であることが識別できる特定の文字列を持つ(プレフィック スに bq-- が付く)ことと、簡単な圧縮アルゴリズムが使用されているこ とが特徴で、多言語ドメイン名で使用される ACE の有力候補の一つです。 (例)日本語ドメイン名.jp ↓(RACE に変換) bq--3bs6kzzmrkpdbsjq4eykimhtkqgq.jp Q.5030 RACE 以外の ACE 方式は実装されないのですか? A.5030 RACE 以外では mDNkit-1.2 から LACE と BRACE がサポートされています。 最新版の mDNkit-1.2.1 を使うようにしてください。 Q.5040 djbdns を使っているのですが、多言語ドメイン名は使えますか? A.5040 ACE を使えば可能と思われます。動作確認のご報告をいただけると幸いです。 Q.5050 バグを見つけました。どこに報告すればよいですか? A.5050 mdnkit-bugs@nic.ad.jp にメールでご連絡ください。その際、わかる範囲 で結構ですので、以下の情報を添付してください。 ・OS 名、OS バージョン ・DNS サーバ名(BINDなど)、DNS サーババージョン ・dnsproxy.conf、mdnres.conf の内容 ・dnsproxy、mDN Wrapper のログ ・mDNkit コンパイル時のオプションなど(CFLAGS や configure 時 のオプションなど) Q.5060 この FAQ に間違いを見つけました。どこに報告すればよいですか? A.5060 idn-cmt@nic.ad.jp にメールでご連絡ください。 Q.5070 この FAQ に項目を追加したいのですが、どこに連絡すればよいですか? A.5070 idn-cmt@nic.ad.jp にメールでご連絡ください。Q & A の形式でご連絡を いただけると幸いです。