超簡単!? Punycode 変換 ~国際化・日本語ドメイン~1. 超簡単!? Punycode 変換
~国際化・日本語ドメイン~
2014/10/18
DNS Spa 2014 Autumn
@otsuka752 (@twovs)
3. about me
• @otsuka752 (@twovs)
• ネコ2人+奥さん1人+可愛い娘
•• 無線LLAANN装置の開発((11999999~~22000044))
• オンラインゲームのシステム管理者(2004~)
• ただし,ゲームには全く興味無し
• ZFS 最高!!! beadm 便利!!!
5. 国際化ドメイン名の例
• 例えば下記のURL のドメイン名
• http://日本語.jp/ (.jp は半角)
•• hhttttpp::////日本語。jjpp// ((。jjpp は全角))
• http://浸透いうな.moe/
6. 国際化ドメイン名の例
• 下記URL のドメイン名は使えない
• http://日本。。jp/
•• hhttttpp::////日本_。jjpp//
• http://浸透いうな!.moe/
7. 仕組みの概要
• DNS の仕組みは通常通り
• Web ブラウザなどのアプリケーションが頑張る
1. 文字列を正規化
2. 7bit ASCII 文字列への変換
3. 通常通りDNS で名前解決
9. 2. 7bit ASCII 文字列への変換
• 正規化された文字列を
Punycode(ピュニコード)(後述)で符号化
•• 既存のDDNNSS の仕組みに合わせた
7bit ASCII 文字列に変換
日本語.jp => xn--wgv71a119e.jp
11. 国際化ドメイン名の例
• 下記URL のドメイン名は使えない
• http://日本。。jp/ ‘.’ dot が連続
•• hhttttpp::////日本_。jjpp// ‘‘__’’ uunnddeerrssccoorree
• http://浸透いうな!.moe/ ‘!’ exclamation
• ‘,’全角カンマは使えない
‘、’全角読点は使える
13. 変換・逆変換する方法
• RFC3492
Punycode: A Bootstring encoding of Unicode
for Internationalized Domain Names in Applications (IDNA)
http://tools.ietf.org/html/rfc3492
• libidn - GNU IDN Library
C/C++/C#/Java API/Emacs API
http://www.gnu.org/software/libidn/
14. 変換・逆変換する方法
• JPRS
日本語JPドメイン名のPunycode 変換・逆変換
http://punycode.jp/
※日本語JP ドメインだけでなく
任意の文字列をencode/decode
15. 簡単!? 変換・逆変換
$ curl -F 'str=XN--68J9BUB3E.moe' http://(snip).jp/
(snip)
<tr><td>正規化後</td><td>:</td><td>しまぱん.moe</td></tr>
<tr><td>Punycode</td><td>:</td><td>xn--68j9bub3e.moe</td></tr>
(snip)
$ wget -O - --post-data='str=しまぱん.moe' http://(snip).jp/
(snip)
<tr><td>正規化後</td><td>:</td><td>しまぱん.moe</td></tr>
<tr><td>Punycode</td><td>:</td><td>xn--68j9bub3e.moe</td></tr>
(snip)
16. 逆変換してみた(.moe)
• 気まぐれにDNSSEC walk してみた方が!?
http://www.e-ontap.com/blog/20140924.html
http://www.e-ontap.com/misc/moe.txt
• 気まぐれに逆変換してみた
http://www.slideshare.net/twovs/moe-39625501
17. .moe ドメイン一部抜粋
ヒーローズ.moe XN--0CK4B4DTCB.moe
先生.moe XN--44QR78F.moe
さん.moe XN--48JWG.moe
シテラさん.moe XN--48JWG5DOCWJ.moe
しまぱん.moe XN--68J9BUB3E.moe
秋葉原.moe XN--8MR310GI6G.moe
百合.moe XN--8PRV51F.moe
耳.moe XN--BY0A.moe
真姫.moe XN--BYS929D.moe
西木野真姫.moe XN--BYSX12ALOMT1R5PJ.moe