このページは2011年1月24日に作成された古いものです。

国際化ドメイン名の変換

【変換方式】
 Punycode
国際化ドメインを「RFC3942 Punycod」に変換後は「/」「.」「@」「_」などの使用不可文字はふくまれずに
「xn--」から始まる英数字に置き換わりますので従来のまま利用可能になります。

 Domain Nam Server
ネームサーバの代表であるISC BINDでは、
「RFC3942 Punycod」に変換後は「/」「.」「@」「_」などの使用不可文字はふくまれませんのでそのまま利用可能です。
但し、予めPunycodeに変換しておく必要があります。

 idnkitで対応
BINDにidnkitを導入すれば日本語ドメインから「RFC3942 Punycode」に変換可能になります。

 リゾルバ、dig,hostなどのコマンドを対応させる方法
上記idnkitのなかにbind9.2.1及びbind9.2.2用のパッチが含まれています。
このパッチをあてて再コンパイルすればコマンド類が国際化ドメインに対応可能になります。

導入例

まずidnkit-1.0を入手します。
idnkitはlibiconvが必須となっておりますのでlibiconvが導入されていなければ
libiconv-1.9.1.tar.gzを入手して導入します。

# tar zxvf libiconv-1.9.1.tar.gz
# cd libiconv-1.9.1
# ./configure
# make
# make install

# gunzip -c idnkit-1.0-src.tar.gz | tar -xvf -
# cd idnkit-1.0-src
# ./configure --with-libiconv=/usr/local
# make
# make install

BIND9のパッチ対応

最新版のbind9は9.2.4ですがパッチは上手くあたっていないようなので
9.2.2-P3で行いました。

# tar zxvf bind-9.2.2-P3.tar.gz
# cd bind-9.2.2-P3
# patch -p0 < ../idnkit-1.0-src/patch/bind9/bind-9.2.2-patch
# CC=gcc ./configure \
--prefix=/usr/local/bind9 \
--with-libiconv=/usr/local \
--with-idn=/usr/local \
--sysconfdir=/etc \
--localstatedir=/var \
--enable-threads \
--enable-ipv6

# make
# make install

【各コマンドの利用方法】

 idnconvコマンド
$ idnconv -in EUC-JP -out Punycode
石毛工業所 <-----------漢字で入力する
xn--estw0hpyhbtcjyw ----------->Pannyコードで表示される。
$ <----------- CTRL+Dで抜ける。

 dig、hostが対応
bindにパッチをあてると
日本語でドメインやホスト名を指定して利用できます。

$ /usr/local/bind9/bin/dig 石毛工業所.com

; <<>> DiG 9.2.2-P3 <<>> 石毛工業所.com
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44480
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0

;; QUESTION SECTION:
;石毛工業所.com. IN A

;; ANSWER SECTION:
石毛工業所.com. 7200 IN A 210.172.146.207

;; AUTHORITY SECTION:
石毛工業所.com. 138132 IN NS mldns01.interq.or.jp.
石毛工業所.com. 138132 IN NS mldns02.interq.or.jp.