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

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

ロゴ:JPNIC

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

mDNkit 仕様書


全体構成

キットを構成するコンポーネント

mDNkit は次のようなコンポーネントから構成されます。

MDN ライブラリ

多言語ドメイン名の変換に関わる基本的な処理を実装したライブラリです。

  • エンコーディング変換
  • NAMEPREP
  • ローカルマッピング
  • DNS メッセージの解析と組み立て

という機能を提供します。 下記のコンポーネントはいずれもこのライブラリを使用して作られています。

また、これらの機能を用いてアプリケーションで多言語ドメイン名の 変換を行うための API を提供しています。これは多言語ドメイン名の 処理のアーキテクチャの提案である IDNA に従ったもので、このアーキテクチャではクライアントアプリケーション自身が、 多言語ドメイン名に対して NAMEPREP を実行し、IDN エンコーディングに変換してから リゾルバを呼び出すことになっています。

mdnsproxy

DNS サーバのプロキシサーバとして動作し、クライアントからの DNS メッセージを DNS サーバに中継し、また DNS サーバから返される DNS メッセージをクライアントに中継します。

クライアントから送られてきた DNS メッセージを中継する際には、 メッセージ中のドメイン名を、クライアントの使用する ローカルエンコーディングから、多言語化された DNS サーバの使用する エンコーディング (IDN エンコーディング) に変換するとともに NAMEPREP などを行います。

また DNS サーバから返された DNS メッセージを中継する際には、 メッセージ中のドメイン名を、IDN エンコーディングから ローカルエンコーディングに変換します。

mdnconv

ゾーンマスタファイルや named.conf ファイルのエンコーディング 変換用ツールです。ローカルエンコーディングで記述されたこれらのファイルを、 多言語化された DNS サーバが使用する IDN エンコーディングに 変換し、同時にNAMEPREP なども行います。

BIND 9 パッチ

BIND 9 で多言語ドメイン名を扱えるようにするためのパッチです。 このパッチを適用することにより、dig、nslookup 等のツールに エンコーディング変換や NAMEPREP の機能が付加され、 多言語ドメイン名を扱えるようになります。

runmdn

UNIX アプリケーションを再コンパイルすることなしに 多言語ドメイン名を扱えるようにするためのコマンドです。 アプリケーションの実行時に MDN ライブラリを動的にリンクすることにより アプリケーションにリンクされている名前解決用の関数に多言語ドメイン名の エンコーディング変換や NAMEPREP の機能が付加されます。これにより mdnsproxy を使用することなく、多言語ドメイン名が扱えるようになります。

mDN Wrapper

Windows ベースのアプリケーションで多言語ドメイン名を扱えるようにするための、 WINSOCK に対するWrapper DLL です。 通常、WindowsアプリケーションはWINSOCK によってドメイン名を解決します。 mDN Wrapper は、WINSOCK の呼び出しをフックして、 多言語ドメイン名のエンコーディングの変換や NAMEPREP を行ないます。 同じようなことはdnsproxyでもできますが、 mDN Wrapper を使った場合には、 アプリケーション毎に異なったローカルエンコーディングを受付けることもできます。

8ビットスルーパッチ

dnsproxy を用いて多言語ドメイン名のエンコーディング変換や正規化等を 行う場合、DNS サーバやリゾルバライブラリにはこれらの機能は必要ありません。 ただし DNS プロトコル上のエンコーディングとして UTF-8 等の 8 ビットコードを使用する場合、 従来の DNS サーバは使用することができず、8ビットコードをエラーにせずに 通すような改造が必要です。

またローカルエンコーディングが SJIS 等の 8 ビットコードを使用する場合、 やはりリゾルバライブラリにも 8 ビットコードをそのまま通し、 エラーにしないようにするための改造が必要です。

さらにアプリケーションの中には、独自にドメイン名の検査を行い、 8 ビットコードを通さないものがあります。

このため、本キットでは

  • BIND 8 のネームサーバ、リゾルバを 8 ビットスルーにするためのパッチ
  • Web のキャッシュサーバである Squid の URL 解析部分を 8 ビットスルー にするためのパッチ

を提供します。 これらの 8 ビットスルーパッチに関しては特に仕様の記述は行いません。

コンポーネント構成図

各コンポーネントがどこでどのように使われるのかを示したのが次の2枚の図です。

1枚目は mdnsproxy を使用せず、クライアントアプリケーションが名前変換 用の API を使用して多言語ドメイン名の処理を行う場合や、 クライアント側のリゾルバで多言語ドメイン名の処理を行う場合の構成図です。

mDNkit components #2

2枚目は多言語ドメイン名の処理を mdnsproxy を利用して行う場合の構成図です。

mDNkit components #1

図中、イタリック体の部分が本キットに含まれるコンポーネントです。

図の上半分は SJIS など、ローカルエンコーディングが使用される世界で、 下半分は Punycode など多言語化された DNS が使用するIDN エンコーディング が使用される世界です。 本キットが提供するコンポーネントはこれらの世界をつなぐためのものです。

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

このWebページは役に立ちましたか?
よろしければ回答の理由をご記入ください

それ以外にも、ページの改良点等がございましたら自由にご記入ください。

回答が必要な場合は、お問い合わせ先をご利用ください。

ロゴ:JPNIC

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