メインコンテンツへジャンプする

JPNICはインターネットの円滑な運営を支えるための組織です

ロゴ:JPNIC

WHOIS 検索 サイト内検索 WHOISとは? JPNIC WHOIS Gateway
WHOIS検索 サイト内検索

mDN Wrapper

概要

Windows で多言語ドメイン名を扱えるようにするためには、 Windows 上のクライアントアプリケーションにおいて、 解決しようとする名前のエンコーディングを、 DNS サーバが受付ける形式のものに変換する必要があります。 これは、Windows 上のアプリケーションが、 きちんと多言語ドメイン名を扱えるようになっていなければならない、 ということであり、 本来はそれぞれのプログラムの作成者が行なうべきことです。

しかし、標準が決まっていない現状では、 プログラム作成者にこのような対応を期待するのは無理なので、 既存のアプリケーションを多言語ドメイン名対応させるためのトリックが必要になります。 mDNkitに含まれるdnsproxyサーバはそのための一つの方法です。 ここでは、もう一つの方法、mDN Wrapper を提示します。

Windows において、多くの場合、 ドメイン名解決の要求はWINSOCK DLLに渡されます。 そこで、WINSOCK DLL を多言語ドメイン名対応のものに置き換えてやれば、 既存のプログラムからでも多言語ドメイン名を使うことができるようになります。

セットアップ

*注意* もし古いバージョンの mDN Wrapper がすでにインストールされているマシンに新しいバージョンをインストールする場合には、 まずバージョンアップ時の注意をご覧ください。

mDN Wrapper をインストールするには"setup.exe" を実行します。 セットアッププログラムは次のような処理を行います。

ファイルのインストール
ディレクトリ「\Program Files\JPNIC\mDN Wrapper」 (セットアップで変更可能)以下に、 mDN Wrapper を構成するファイルをコピーします。
レジストリの設定
HKEY_LOCAL_MACHINE\Software\JPNIC\MDN 以下に必要なレジストリキー、 レジストリ値を作成、設定します。主なものは次の通りです。
Encoding REG_SZ
DNS サーバ側のエンコーディング名です。 デフォルト値は "RACE" で、 これは現時点での有力候補であるRACEエンコーディングの指定です。 エンコーディング名は コンフィギュレーションプログラムで変更することができます。
Normalize REG_SZ
ドメイン名の正規化の方式です。 使用する正規化の名称 (複数指定する場合にはスペースで区切る) を指定します。 デフォルトは日本語ドメイン名の正規化として適当だと思われる値になっています。 これも コンフィギュレーションプログラム で変更することができます。
PerProg キー
プログラム毎の設定値を格納するためのキーです。 この下に、プログラムの実行モジュール名をキーとしてプログラム個別の設定が記録されます。 設定される情報は以下の二つです。
PerProg\<progname>\Where REG_DWORD 変換位置
PerProg\<progname>\Encoding REG_SZ エンコーディング名
エンコーディング名は通常コンフィギュレーションプログラムによって設定されます。 変換位置の指定は、標準インストールでは不要です。 システムディレクトリへのインストールを行なった場合には、 レジストリエディタで環境に合わせて設定する必要があります。
アイコンの作成
コンフィギュレーションプログラムのアイコンを作成し、 スタートメニューに登録します。 これによってコンフィギュレーションプログラムを起動することができます。

アンインストールするには、 コントロールパネルの「アプリケーションの追加と削除」で、 「mDN Wrapper」を選択して削除(「追加と削除」ボタン)します。

コンフィギュレーションプログラム

コンフィギュレーションプログラムは、 アプリケーションを特定して mDN Wrapper を適用したり、 適用を解除するためのツールです。

起動すると以下のような画面が表示されます。

Configuration Startup

リストボックスには、 その時点で mDN Wrapper が適用されているプログラムが表示されます。 最初に実行した場合には空になっています。 右側のボタンを押すことにより、 操作を行うことができます。

mDN Wrapper の適用

プログラムに mDN Wrapper を適用するには、"Wrap.."ボタンを押します。 "Wrap.."ボタンを押すと以下のようなダイアログが表示されます。

Configuration Wrap

最初に、mDN Wrapper を適用したいプログラムの実行ファイル名を設定します。 直接入力するか、ブラウズボタンでファイルを探してください。

Configuration Browse

次にそのプログラムのローカルエンコーディングを指定します。 通常は「Default」 でかまいません。 プログラムが国際化エンコーディングに従っている場合にのみ 「UTF-8」 を指示します。

Configuration Encoding

最後に "Wrap" ボタンを押せば、 そのプログラムに対して指定されたエンコーディングで mDN Wrapper が適用されます。 適用されたプログラムは、最初のウィンドウのリストボックスに反映されます。

Configuration Wrapped

mDN Wrapper の解除

プログラムに対する mDN Wrapper の適用を解除するには、 リストボックスで解除するプログラムを選択して、 "Unwrap.." ボタンを押します。 以下の確認用のダイアログが表示されますので、 間違いがなければ "Unwrap" ボタンを押してください。

Configuration Unwrap

mDN Wrapper の適用が解除されると、 そのプログラムは最初のウィンドウのリストボックスからも削除されます。

Configuration Unwraped

"Unwrap All" ボタンを押すことによって、 現在適用されているすべてのプログラムに対して mDN Wrapper の適用を解除することもできます。

ログ設定

"Log.." ボタンを押すことによってログレベルやログファイルを設定することができます。 このボタンを押すと次のようなダイアログが現れます。

Configuration Log

ログレベルは次の中から選ぶことができます。

None
ログを一切出力しません。これがデフォルトです。
Fatal
致命的エラーのみ出力します。
Error
致命的でないエラーも出力します。
Warning
警告メッセージも出力します。
Info
エラー以外の情報も出力します。
Trace
プログラムのトレース情報も出力します。 このレベルを選択すると大量のログが出力されるので気をつけてください。

なお、 このログレベルは MDN ライブラリ が出力するログに対するものです。 mDN Wrapper自体が出力するログについてはON/OFF以外のレベルを指定することはできず、 Noneを指定すればオフに、 それ以外のレベルを指定すればオンになります。

ログファイルを指定することも可能です。 デフォルトではmDN Wrapperをインストールしたディレクトリの"mdn_wrapper.log"になっています。 "Browse.." ボタンを押せばブラウズ用のダイアログを利用して選択することができます。

また、このダイアログではログファイルの内容を見ることと、 ログファイルを削除することが可能です。 それぞれ "View"、"Delete" ボタンを押してください。 "View" ボタンを押すとメモ帳が起動して、ログファイルの内容を表示します。

"OK" ボタンを押すとダイアログの設定が有効になります。 設定を変えたくない場合には "Cancel" ボタンを押してください。

詳細パラメータ設定

"Advanced.." ボタンを押すことにより、 次のようなダイアログが表示されます。 これは上級ユーザのためのもので、適切なデフォルトが設定されているので 通常ユーザが変更する必要のないような基本的なパラメータを 変更することができます。

Configuration Advanced

ダイアログ最上部のパネルでプログラムに対する mDN Wrapper の適用モードを 指定することができます。選択できる値とその意味は次の通りです。

Wrap both WINSOCK 1.1 and WINSOCK 2.0
WINSOCK 1.1 と 2.0 の両方の呼び出しについて mDN Wrapper を適用し、 ドメイン名のエンコーディング変換や正規化を行います。 通常はこのモードで使えば正しく動くはずです。
Wrap only WINSOCK 1.1
WINSOCK 1.1 の呼び出しについては mDN Wrapper を適用しますが、 WINSOCK 2.0 の呼び出しについては適用しません。
Wrap only WINSOCK 2.0
WINSOCK 2.0 の呼び出しについては mDN Wrapper を適用しますが、 WINSOCK 1.1 の呼び出しについては適用しません。
Wrap only WINSOCK 2.0 if it exists. Otherwise wrap only WINSOCK 1.1
WINSOCK 2.0が存在すればWINSOCK 2.0の呼び出しについてのみmDN Wrapperを適用します。 存在しない場合にはWINSOCK 1.1の呼び出しについて適用します。 WINSOCKのバージョンによってはデフォルトでは正しく動かず、 このモードを指定しなければならないかもしれません。

中段のパネルでは正規化の方式を設定することができます。 左側のリストボックスに使用する正規化の名称が入っており、 右側のリストボックスには使用可能な正規化の名称が入っています。 右側のリストボックスから追加したい正規化を選択し、 "Add" ボタンを押すと左側のリストボックスに追加されます。 また、左側のリストボックスで削除したい正規化を選択して "Remove" ボタンを押せば削除することができます。 "Clear" ボタンを押すとすべての正規化が削除され、 また "Reset" ボタンによりデフォルトの設定に戻すことができます。

3段目のパネルでは DNS サーバ側のエンコーディング名を指定することができます。 デフォルトは "RACE" ですが、 他のエンコーディングを使用したい場合にはここで指定してください。

以上の設定は "OK" ボタンを押すことにより有効になります。 設定を変えずにダイアログを終了したい場合には "Cancel" ボタンを押してください。

制限事項

DLL バージョン
ラッパーDLL は、元のWINSOCK のDLL のバージョンに強く依存します。 これは、非公開のエントリも含めてすべてのエントリを提供する必要があるためです。 このためWINSOCK DLL のバージョンが変わると、 mDN Wrapper が動作しなくなる可能性があります。

今回作成されたmDN Wrapper は、
WinNT4.0 SP6a (WINSOCK 1.1 + 2.0)
Win98 (WINSOCK 1.1 + 2.0)
Win95 OSR2 (WINSOCK 1.1)
で動作を確認しています。ただ、将来にわたって動作する保証はありません。
DNS, WINS, LMHOSTS
Windows では、DNS だけではなく、 WINSやLMHOSTS によってもドメイン名、ホスト名の解決が行なわれます。 mDN Wrapper を使った場合には、ドメイン名の変換が、 これらの方式へのディスパッチを行なう場所よりも上位層で行なわれるので、 これらのすべての方式について、 ドメイン名、ホスト名の変換が行なわれることになります。 このため、Windows が、WINSやLMHOSTS を使っている場合には、 予期しない問題が発生する可能性があります。 これについては、mDN Wrapper を使う場合には、 名前解決にDNS だけを使用することをお勧めします。
ドメイン名以外の名前の解決
WINSOCK 2.0 の名前解決API
WSALookupServiceBeginW
WSALookupServiceNextW
WSALookupServiceEnd
は、ドメイン名以外でも使用できる、 汎用の名前解決用のAPI として定義されています。 現時点では、これらはもっぱらドメイン名の解決で使用されていますが、 他の名前(例えばサービス名)の解決にも使用できることになっています。

mDN Wrapper は、名前の対象の如何にかかわらず、 名前のエンコーディングを変換してしまうので、 これらのAPI が、ドメイン名以外の解決に使われている場合には、 問題を引き起こす可能性があります。
名前解決API を使わないプログラム
アプリケーションによっては、 ドメイン名の解決にこれらのAPI を使用しないものもあります。 例えば、'nslookup'は、これらのAPI を使用しないで、 直接DNS サーバと通信してしまいます。 このようなアプリケーションについては、 mDN Wrapper は役に立ちません。
特定WINSOCK DLL にバインドされたアプリケーション
アプリケーションによっては、標準のDLL サーチパスに従わないで、 特定のパスのDLL にバインドされているものがあります。 よく使われるプログラムの中では、Netscape Communicator がそうなっています。 このようなプログラムについては、 標準のインストール/コンフィギュレーションではmDN Wrapperを適用することはできません。

このようなプログラムについて、どうしても mDN Wrapper を適用する必要があるなら、 システムディレクトリへのインストールを行なうことができます。 ただし、このインストールは大変危険で、 場合によってはシステムを再起動不能にしてしまう可能性もあります。
代替手段としての'dnsproxy'
これらの制限事項が問題になる場合には、 代替手段として'dnsproxy'を使うこともできます。 これは、DNS サーバとのトランザクションを中継するので、 上で問題になったようなことを回避することができます。

ただし、'dnsproxy'は、ラッパーよりも複雑な設定が必要ですし、 また、呼び元のプログラムを特定することができませんので、 プログラム固有のローカルエンコーディングを取り扱うことはできません。 しかし、上記の制限事項が問題になるようなケースでは、 ラッパーの代わりに使用するといいかもしれません。

バージョンアップ時の注意

古いバージョンのmDN Wrapperがすでにインストールされているマシンに新しいバージョンをインストールする際には、 次のことに気をつけてください。

  1. インストールする前に古いバージョンをアンインストールする
    新しいバージョンをインストールする前に、 古いバージョンをアンインストールしてください。 そうしないと、 新しいバージョンをインストールしてもいくつかのファイルが更新されず、 古いまま残ってしまいます。 アンインストールするには、 コントロールパネルの「アプリケーションの追加と削除」を実行し、 「mDN Wrapper」を選択して削除を実行してください。
    もしアンインストールせずに新しいバージョンをインストールしてしまった場合には、 一度それをアンインストールしてから再度インストールを行ってください。
  2. すべてのファイルを再度ラップする
    mDN Wrapper はその動作原理上、 mDN Wrapper を適用するプログラムが存在するディレクトリにDLL をコピーします。 コピーされた DLL は新しいバージョンをインストールしても更新されないので、 そのままでは新しいバージョンが使われません。 このため、新しいバージョンをインストールしたら、 一度 mDN Wrapper の適用をすべて解除し、改めて適用し直してください。 すべてのプログラムに対する適用を解除するには、 コンフィギュレーションプログラムの "Unwrap All" ボタンを使用するのが便利です。

このページを評価してください

このWebページは役に立ちましたか?
ページの改良点等がございましたら自由にご記入ください。

このフォームをご利用した場合、ご連絡先の記入がないと、 回答を差し上げられません。 回答が必要な場合は、お問い合わせ先をご利用ください。

ロゴ:JPNIC

Copyright© 1996-2020 Japan Network Information Center. All Rights Reserved.