mDNkit リゾルバのコンフィギュレーション
mDNkit が提供するツール、コマンドのうち、dnsproxy 以外のもの、 つまり runmdn と mdnconv は共通の設定ファイルを参照します。 また bind9 パッチも同じ設定ファイルを参照します。
このファイルには mDNkit を利用したクライアントあるいはリゾルバが 必要とするいくつかの情報を設定する必要があります。 例えば正規化の方式や DNS プロトコル上で用いられるドメイン名のエンコーディング 方法などをこのファイルで指定します。 ここでは、これらの情報の設定方法と意味とを説明します。
また、アプリケーションの使用するローカルエンコーディングは アプリケーションの動作するロケール情報から取得します。これについても 合わせて説明します。
コンフィギュレーションファイル
mDNkit の設定は、コンフィギュレーションファイルによって行われます。 mDNkit をデフォルトの設定でコンパイルした場合には、 このコンフィギュレーションファイルのパス名は
となります。ディレクトリ部分、つまり /usr/local/etc は mDNkit の設定時にオプションで 変更が可能です。/usr/local/etc/mdnres.conf
mDNkit をインストールすると、このファイルのサンプルファイルが
(デフォルトの設定の場合) にインストールされます。このサンプルファイルには 設定項目とその説明が書かれていますので、コンフィギュレーションファイル 作成の参考にしてください。/usr/local/etc/mdnres.conf.sample
コンフィギュレーションデータ
コンフィギュレーションファイルは通常のテキストファイルで、 以下のコンフィギュレーションデータを指定します。
- server-encoding
-
DNS プロトコルが使用するエンコーディングを指定します。
server-encoding encoding
encoding にエンコーディング名を指定します。- [設定例]
-
server-encoding RACE server-encoding UTF-8
- server-zld
-
ZLD を指定します。ZLD とは Zero Level Domain の略で、
server-encoding に UTF-5 など特殊なエンコーディングを指定した場合に
必要となります。ZLD については
DNSサーバの設定の
ZLD の指定の記述が参考になるでしょう。
なお、mDNkit をデフォルトの設定でコンパイルした場合には ZLD は使えず、
このエントリを指定しても無視されます。
ZLD が使えるように mDNkit をコンパイルする方法については
インストールドキュメントの
--enable-zld の項を
ご覧ください。
server-zld ZLD
ZLD で使用する ZLD を指定します。- [設定例]
-
server-zld zld.to.be.used
- normalize
-
このエントリーでは正規化の方法を指定します。
2 つ以上の正規化の方法が指定された場合、順番通り (左から右に) 適用します。
normalize scheme...
scheme で正規化の方式の名称を指定します。正規化の方式として以下のものが指定できます。
ascii-lowercase ASCII の大文字を小文字に正規化 ascii-uppercase ASCII の小文字を大文字に正規化 unicode-lowercase Unicode の大文字を小文字に正規化 unicode-uppercase Unicode の小文字を大文字に正規化 unicode-form-c Unicode normalization form C unicode-form-kc Unicode normalization form KC ja-kana-fullwidth 半角カナ文字を全角カナ文字に正規化 ja-alnum-halfwidth 全角英数字およびマイナス記号を半角文字に正規化 ja-compose-voiced-sound 全角ひらがなカタカナとそれに続く濁点半濁点を1文字にまとめる正規化 ja-minus-hack 全角マイナス記号をハイフン ('-') に正規化 ja-delimiter-hack 全角ピリオドおよび句点を半角のピリオド ('.') に正規化 - [設定例]
-
normalize unicode-lowercase unicode-form-kc
- alternate-encoding
-
このエントリーでは代替エンコーディングの形式を指定します。
代替エンコーディングとは、DNS プロトコル上のエンコーディングから
アプリケーション側のローカルエンコーディングへの変換に失敗した時に、
ローカルエンコーディングの代わりに使用されるエンコーディングです。
例えば日本語を扱うアプリケーションに DNS サーバから韓国のハングル文字を
含むドメイン名が返された場合には、日本語のローカルエンコーディングに
変換できないので、代わりにこの代替エンコーディングに変換された
結果が渡されます。
alternate-encoding encoding
encoding に代替エンコーディングの名称を指定します。代替エンコーディングは、 ASCII 互換エンコーディングでなくてはなりません。
- [設定例]
-
alternate-encoding RACE
- alias-file
-
エンコーディングのコードセット名を、別名として追加することができます。
ここでは、追加する別名の定義ファイルへのパス名を指定します。
alias-file path
path に定義ファイルのパス名を指定します。- [設定例]
-
alias-file /some/where/mdnalias.txt
<別名> <元の名前>
ローカルエンコーディングについて
ローカルエンコーディングについては、ロケールから推測して自動判定するため、 コンフィギュレーションファイルでは、 ローカルエンコーディングを設定するエントリはありません。
ただし、以下のようなケースのときには自動判定ができません。
- 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 等に入れておくことを お勧めします。