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

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

ロゴ:JPNIC

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

DNSサーバの設定


はじめに

DNSサーバにて国際化ドメイン名を扱うための設定方法について解説します。 とはいっても従来の ASCII ドメイン名の場合の設定方法と 大きく変わるわけではありません。 ただ一つ注意すべき点は 「ゾーンファイル等のエンコーディングを変換する必要がある」 ということです。

DNSサーバの設定の手順は、およそ以下の通りです。

  1. エンコーディング・NAMEPREP を決める。
  2. DNS サーバを用意する。
  3. named.conf、ゾーンファイルを作成する。

設定で使用するエンコーディング変換ツール idnconv の外部仕様 および内部処理の詳細に関しては、 idnconv の仕様書をご覧ください。

また、クライアントからこれらの DNS サーバにアクセスするためには、 国際化ドメイン名変換 APIrunidnidn wrapper などを使用してクライアント側で エンコーディング変換や正規化を行う必要があります。


IDN エンコーディングの決定

まず DNS の設定に先だって、DNS サーバで使用するドメイン名の IDN エンコーディングを決める必要があります。

本ドキュメント執筆時点では、Punycode が IDN エンコーディングの標準と なりつつありますので、Punycode を指定しておきます。


DNS サーバの用意

idnkit では、エンコーディングとして Punycode のような ACE (ASCII Compatible Encoding、ASCII 互換エンコーディング) を用いることを 前提としています。 したがって、エンコード結果は従来のホスト名として正当な文字列になるので、 現在使用中の DNS サーバをそのまま使うことができます。


named.conf、ゾーンファイルの作成

DNS サーバの設定ファイル (BIND で言うところの named.conf) やゾーンファイルの書き方自体は、国際化ドメイン名と従来のドメイン名 で変わるところはありません。 単にドメイン名に英数字以外の文字を含めることができるかどうかだけの違いです。

DNS サーバ自体にエンコーディング変換機能は備わっていないので、 DNS の読み込む named.conf ファイルやゾーンファイルは、 エンコーディング・NAMEPREP の決定で 決定したエンコーディングであらかじめ記述する必要があります。

エンコーディングが ACE であれば、ASCII 文字が編集できるエディタで 接入力することも可能ですが、例えば「こんにちは.世界.」と入力する代わりに bq--gbjzg23bn4.bq--3bhbm5km. などといった暗号のような文字列を (しかも正確に) 入力するのは大変です。

そこで idnkit では、idnconv というエンコーディング変換ツールを用意して います。 例えば次のようなコマンドを実行すると EUC-JP で書かれたゾーンファイル db.somezone.euc を Punycode エンコーディングの db.somezone.puny に変換することができます。

% idnconv -in EUC-JP -out Punycode db.foo.euc > db.foo.puny

-in オプションで入力テキストのエンコーディングを、 -out で出力テキストのエンコーディングを指定います。 オプションの一覧とどのような値が指定できるかについては、 idnconv コマンドをご覧ください。

逆に Punycode エンコーディングから EUC-JP へのデコード (逆変換) も 大抵の場合は可能ですが、必ず元の EUC-JP ファイルに戻せるとは限りません。 これは、入力された文字列の中で ACE を用いて 表記されている個所とそうでない通常の ASCII 表記の場所を、厳密に区別 することはできないからです。

一般的には ACE からローカルエンコーディング への変換を行うことはできないということを覚えておいてください。 これについては idnconv の仕様書の デコードの処理 を参照してください。

以上のことから、ゾーンファイル等 DNS サーバが読み込むファイル の作成と管理には次のような方法をとるのがよいと考えられます。 まずローカルエンコーディングを用いて記述した版を用意して、これに対して 編集やバージョン管理を行います。 そして idnconv を用いてエンコーディング変換と NAMEPREP を行い、 DNS サーバの使用するエンコーディング版のファイルを生成して、これを DNS サーバが読み込むためのファイルとして使用します。

とはいってもローカルエンコーディング版のファイルを改訂するたびに idnconv を実行して IDN エンコーディング版のファイルを作るのは面倒です。 この場合 make コマンドを使用すれば変換を自動化することができます。

例えばローカルエンコーディング版のファイル名に サフィックス .local、Punycode エンコーディング版に .puny というサフィックスをつけるとします。 すると次のような Makefile を書くことにより、ローカルエンコーディング版を 更新したら make を実行するだけで変換を自動的に行うことができます。

.SUFFIXES: .local .puny

.local.puny:
        idnconv -in $(LOCALCODE) -out Punycode $< > $@

LOCALCODE = EUC-JP

TARGETS = db.foo.puny

all: $(TARGETS)

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

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

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

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

ロゴ:JPNIC

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