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

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

ロゴ:JPNIC

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

mDNkitの設定

mDNkit が提供するツール、コマンドのうち、 mdnconv, mDN Wrapper, runmdn および mdnsproxy は 共通の設定ファイルを参照します。

このファイルには mDNkit を利用したクライアントが必要とするいく つかの情報を設定する必要があります。 例えば正規化の方式や DNS プロトコル上で用いられるドメイン名のエンコーディング 方法などをこのファイルで指定します。 ここでは、これらの情報の設定方法と意味を説明します。

また、アプリケーションの使用するローカルエンコーディングは アプリケーションの動作するロケール情報から取得します。これについても 合わせて説明します。


設定ファイル

mDNkit の設定ファイルは通常のテキストファイルで、ファイルの 各行 (# で始まるコメント行と、空行を除いて) は、次のような単純な フォーマットで構成されます。

キーワード 値...
            

idn-encoding

リソルバや DNS サーバによって使用される、多言語ドメイン名の エンコーディングを指定します。

[構文]

idn-encoding <encoding>

<encoding>として、次の名称が指定できます。

  • AltDUDE
  • AMC-ACE-M
  • AMC-ACE-O
  • AMC-ACE-R
  • BRACE
  • DUDE
  • LACE
  • RACE
  • UTF-6
  • UTF-8
  • あなたのシステムのiconv_open() が認識するエンコーディング名。
  • 別名定義ファイルで定義された、上記のエンコーディング名の別名 (encoding-alias-file を参照のこと)

[設定例]

idn-encoding RACE
            

なお、アプリケーション側のローカルエンコーディングはロケールや環境変数 によって決まるので、client-encoding というエントリはありません。 ローカルエンコーディングに関しては後述します。

nameprep

多言語ドメイン名の正規化方法を定めたものとして NAMEPREP があります。 このエントリでは、どのバージョンの NAMEPREP を使用するのかを指定し ます。

[構文]

nameprep <version>

<version>には以下のものが指定できます。

nameprep-02
インターネットドラフト draft-ietf-idn-nameprep-02.txt に対応した正規化方式。
nameprep-03
インターネットドラフト draft-ietf-idn-nameprep-03.txt に対応した正規化方式。

[設定例]

nameprep nameprep-03
            

NAMEPREP の処理手順は、次の 3 つの工程で構成されます。

  1. マッピング (mapping)
  2. 正規化 (normalization)
  3. 使用禁止文字、未割当文字の検出 (prohibited check, unassigned check)

nameprepエントリ以外にも、これらの工程毎にバージョン を細かく指定するためのエントリが用意されています。

nameprep-map <version>
nameprep-normalize <version>
nameprep-prohibit <version>
nameprep-unassigned <version>

これら 4 つのエントリを合わせると、次のように指定したのと同じ働きを します。

nameprep <version>

nameprep と、細かく指定するエントリを両方指定したときは、 細かく指定するエントリのほうが優先されます。

nameprep-map

このエントリでは NAMEPREP におけるマッピング方式を指定します。

[構文]

nameprep-map <scheme> ...

<scheme> でマッピング方式の名称を指定します。 2 つ以上の方式が指定された場合、順番通り (左から右に) 適用します。 <scheme>には、以下のものが指定できます。

<version>
NAMEPREP の特定のバージョンにしたがったマッピング。 指定可能なバージョン番号については、 nameprepの項を参照してください。
filemap:<pathname>
マッピングの定義を <pathname>ファイルから読み込みます。 ファイルの記述方法については、 マップファイルの形式の項を参照してください。

[設定例]

nameprep-map nameprep-03
            

nameprep-normalize

このエントリでは NAMEPREP における正規化方式を指定します。

[構文]

nameprep-normalize <scheme> ...

<scheme> で正規化の方式の名称を指定します。 2 つ以上の方式が指定された場合、順番通り (左から右に) 適用します。 <scheme>には、以下のものが指定できます。

<version>
NAMEPREP の特定のバージョンにしたがった正規化。 指定可能なバージョン番号については、 nameprepの項を参照してください。
ascii-lowercase
ASCII の大文字を小文字に正規化
ascii-uppercase
ASCII の小文字を大文字に正規化
unicode-lowercase
Unicode の大文字を小文字に正規化
unicode-uppercase
Unicode の小文字を大文字に正規化
unicode-foldcase
``Unicode Technical Report #21: Case Mappings'' にしたがった 正規化。
unicode-form-c
Unicode normalization form C
unicode-form-kc
Unicode normalization form KC

[設定例]

nameprep-normalize unicode-lowercase unicode-form-kc
            

nameprep-prohibit

このエントリでは、NAMEPREP における禁止文字の検査方式を指定します。

[構文]

nameprep-prohibit <set> ...

<set> で禁止文字集合の名称を指定します。 2 つ以上の文字集合が指定された場合、順番通り (左から右に) 適用します。 <set>には、以下のものが指定できます。

<version>
NAMEPREP の特定のバージョンで記述されている禁止文字セット。 指定可能なバージョン番号については、 nameprepの項を参照してください。
fileset:<pathname>
禁止文字の定義を <pathname>ファイルから読み込みます。 ファイルの記述方法については、 セットファイルの形式の項を参照してください。

[設定例]

nameprep-prohibit nameprep-03
            

nameprep-unassigned

このエントリでは、NAMEPREP における未使用コードポイント (文字が割り 振られていないコードポイント) の検査方式を指定します。 2 つ以上の方式が指定された場合、順番通り (左から右に) 適用します。

[構文]

nameprep-unassigned <set> ...

<set> で未使用コードポイント集合の名称を指定します。 2 つ以上の文字集合が指定された場合、順番通り (左から右に) 適用します。 <set>には、以下のものが指定できます。

<version>
NAMEPREP の特定のバージョンで記述されている禁止文字セット。 指定可能なバージョン番号については、 nameprepの項を参照してください。
fileset:<pathname>>
未使用コードポイントの定義を <pathname>ファイルから 読み込みます。ファイルの記述方法については、 セットファイルの形式の項を参照してください。

[設定例]

nameprep-prohibit nameprep-03
            

alternate-encoding

このエントリでは代替エンコーディングの形式を指定します。 代替エンコーディングとは、DNS プロトコル上のエンコーディングから アプリケーション側のローカルエンコーディングへの変換に失敗した時に、 ローカルエンコーディングの代わりに使用されるエンコーディングです。 例えば日本語を扱うアプリケーションに DNS サーバから韓国のハングル文字を 含むドメイン名が返された場合には、日本語のローカルエンコーディングに 変換できないので、代わりにこの代替エンコーディングに変換された 結果が渡されます。

[構文]

alternate-encoding <encoding>

<encoding> に代替エンコーディングの名称を指定します。 代替エンコーディングは ASCII 互換エンコーディングでなくてはなりません。

[設定例]

alternate-encoding RACE
            

encoding-alias-file

エンコーディングのコードセット名を、別名として追加することができます。 ここでは、追加する別名の定義ファイルへのパス名を指定します。

[構文]

encoding-alias-file <path>

<path> に定義ファイルのパス名を指定します。

[設定例]

encoding-alias-file /some/where/mdnalias.txt
            

別名の定義ファイルは通常のテキストファイルであり、1行に1つずつ 別名を定義します。各行の形式は次の通りです。

<別名> <元の名前>

エンコーディング名 <元の名前>の代わりに <別名>が使えるようになります。

local-map

このエントリは、NAMEPREP を適用する前のドメイン名に対して行う、 ローカルなマッピングを指定します。 このマッピングは、ドメイン名のトップレベルドメイン (TLD) 毎に異なる ものを指定することができます。

[構文]

local-map <TLD> <scheme> ...

<TLD> には、マッピングを適用する TLD を、 <scheme> にはマッピングの方式の名称をそれぞれ指定 します。 2 つ以上の方式が指定された場合、順番通り (左から右に) 適用します。 <scheme> として指定できるものは、 nameprep-mapと同一です。

[設定例]

local-map .jp filemap:/some/where/jp.map
local-map -   filemap:/some/where/notld.map
local-map .   filemap:/some/where/default.map
            

TLD としてハイフン (`-') を指定すると、TLDがないドメイン 名、言い換えるとピリオド(`.')を含んでいないドメイン名に 対して適用するマッピングを指定したことになります。 同様に、TLD としてピリオドを指定すると、他のlocal-map エントリの TLD のいずれとも一致しないドメイン名に対するマッピングを指 定したことになります。

TLD がピリオド(`.')の場合を除き、TLD の先頭のピリオドは 省略可能です。

delimiter-map

このエントリは、ピリオドにマッピングしたい文字を指定します。 通常、ドメイン名のラベル同士の区切り (delimiter) にはピリオド (`.')を用いますが、このエントリで指定した文字は、ピリオドの 代わりに区切りとして使用できるようになります。

[構文]

delimiter-map <code point> ...

<code point> には、Unicode のコードポイントを16進数 で記述します。

[設定例]

delimiter-map 3002
            

ローカルエンコーディングについて

ローカルエンコーディングについては、ロケールや環境変数から自動判定するため、 設定ファイルでは、ローカルエンコーディングを設定するエントリはありません。

ただし、以下のようなケースのときには自動判定ができません。

  • setlocate()関数を使用していないアプリケーションを実行したとき
  • C ロケールのままアプリケーションを実行したとき
  • ロケールとエンコーディングの対応がわからないとき

このような場合には環境変数 MDN_LOCAL_CODESETを設定することで、 ローカルエンコーディングの設定を行うことができます。 例えばローカルエンコーディングを EUC-JP に設定する場合には、 あらかじめ次のような設定をしておきます。

[設定例]

sh 系のシェルの場合:

$ MDN_LOCAL_CODESET=EUC-JP
$ export MDN_LOCAL_CODESET
            

csh 系のシェルの場合:

% setenv MDN_LOCAL_CODESET EUC-JP
            

指定する値はローカルエンコーディング名で、これはシステムの iconv() 関数 (より正確には iconv_open()) が 受け付ける名前で指定します。この名前は iconv の実装によって それぞれ異なりますので、具体的な値については iconv の ドキュメントを参照してください。

もしあなたが単一のローカルエンコーディングしか使用していないのであれば、 このような設定を .profile.cshrc 等に 入れておくことをお勧めします。


マップファイルの形式について

マップファイルは、 nameprep-mapおよび local-mapエントリ向けに、 文字のマッピング規則を定義したファイルです。 マップ元として文字 1 個、マップ先として 0 文字以上の文字の並びを指定 できます。 前後の文字でマッピング規則を変えるような、文脈に依存したマッピングは できません。

マップファイルは単純なテキストファイルで、一行に一つのマッピング 規則を書くようになっています。マッピング規則は、次の書式で記述します。 `#' で始まる行および空行は、無視されます。

<マップ元のコードポイント>; <マップ先のコードポイント列>;

<マップ元のコードポイント>には、マップ元の文字の Unicodeコードポイントを16進数で記述します。 <マップ先のコードポイント列>には、マップ先の文字列 の各文字のUnicodeコードポイント値を16進数で記述します。 先頭の文字から順番に空白で区切って並べていきます。 マップ先が空の文字列の場合、<マップ先のコードポイント列> は空白になります。

[設定例]

# "A" を "a" にマップ
0041; 0061;
# "#" は何にもマップしない
0023; ;
# "@" を "at" にマップ
0040; 0061 0074;
            

セットファイルの形式について

セットファイルは、 nameprep-prohibitおよび nameprep-unassigned エントリ向けに、ドメイン名として使用を許可しないUnicodeコードポイント の集合を定義したファイルです。

セットファイルは単純なテキストファイルで、一行に一つのコードポイント、 もしくはコードポイントの範囲を記述します。書式は次の通りです。

<コードポイント>
<開始コードポイント>-<終了コードポイント>

それぞれ、コードポイントには Unicodeコードポイントを16進数で記述します。 `#' で始まる行および空行は、無視されます。

[設定例]

# チルド記号を禁止
007E
# 制御文字の禁止
0000-001F
007F-000F
# Unicodeの基本多言語面 (BMP) 以外の文字を禁止
10000-10FFFF
            

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

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

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

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

ロゴ:JPNIC

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