日本語.jp始めました

ムームードメインで日本語.jpを651/年円で大安売りしてたので、本名フルネーム(漢字とひらがなの2種類)で獲ってみた。

日本語.jpというのはIDN(Internationalized Domain Name)と呼ばれる「国際化ドメイン名」の新しい仕組みだが、IPv6のように大がかりな話ではなく既存のDNS(Domain Name System)の枠組みに一工夫するものだ。

ただ、Webブラウザなどのユーザーアプリケーションが個々に対応しなければならないのがネックとなってあまり普及していなかったのだが、Internet Explorer7 になってようやく対応し、Windows Vistaに標準搭載された事から、ようやく環境が整ってきたというわけ。

技術観点でIDNとはPunycodeに変換してからDNSを引くだけなので、例えば 日本語.jp の場合は xn–wgv71a119e.jp となる。すなわち、http://www.日本語.jp/ ならWebブラウザが裏で http://www.xn--wgv71a119e.jp/ に変換したあと、何事もなかったかのようにしれっとアクセスしているわけだ。

なお単体でのPunycode変換はJPNICが公開しているidnkitを使えばよい。bashの場合、/etc/profile.d/idn.sh

export IDN_LOCAL_CODESET=UTF-8
function idn() { eval `echo "$@" | idnconv`; };

な感じで書いておけば、コマンドラインにidn を前置する事で以降の文字列をPunycodeへ変換して実行できる。

$ **idn** `nslookup` 日本語.jp
Server:         210.252.128.8
Address:        210.252.128.8#53
Non-authoritative answer:
Name:   xn--wgv71a119e.jp
Address: 202.11.16.167

てな具合だ。

DNSサーバーには従来のDNSと同じ情報をPunycodeで記述しておけば良いので、djbdnsでは

# 日本語.jp SOA
.**xn--wgv71a119e.jp**:202.11.16.167:ns1.bravotouring.com:86400
# 日本語.jp MX
@**xn--wgv71a119e.jp**:202.11.16.167:mail.bravotouring.com:20:86400
# 日本語.jp A
+www.**xn--wgv71a119e.jp**:202.11.16.167:86400

な感じで書けば良い事になる。

最初、とっくに対応済みのfirefoxでうまくいかずに焦ったが、2005年9月の脆弱性対処としてIDNを無効にしていたのを思い出し、network.enableIDNtrue に戻して無事OK。

またapacheへのアクセスで名前ベースのVirtualHostを使っている場合には、httpd.confにもPunycodeでVirtualHostを追加する必要があるかもしれない。ただ同一コンテンツを別のドメインで表現するとGoogle MapsのAPIキーなどの認証に不整合が発生する可能性がある。

まぁ、これは名前ベースのVirtualHostに起因するものであり、IDNでなくてもサブドメインなどを使っても起こる問題だ。やっぱりドメイン名の一意性や信頼性の担保を考えると、本流のURIにリダイレクトするのが正解かなぁ。

参照

asahi.com http://www.asahi.com/

@IT http://www.atmarkit.co.jp/

日本ネットワークインフォメーションセンター http://www.nic.ad.jp/

INTERNET Watch http://internet.watch.impress.co.jp/

Mozilla Japan http://www.mozilla-japan.org/

ムームードメイン http://muumuu-domain.com/

YANO’s digital garage 仮設ドア http://www.やのよしひさ.jp/