SlideShare une entreprise Scribd logo
1  sur  18
超簡単!? Punycode 変換 
~国際化・日本語ドメイン~ 
2014/10/18 
DNS Spa 2014 Autumn 
@otsuka752 (@twovs)
agenda 
• 自己紹介 
• 国際化ドメインの仕組み 
•• 名前解決の方法
• 逆変換してみた(.moe)
about me 
• @otsuka752 (@twovs) 
• ネコ2人+奥さん1人+可愛い娘 
•• 無線LLAANN装置の開発((11999999~~22000044)) 
• オンラインゲームのシステム管理者(2004~) 
• ただし,ゲームには全く興味無し 
• ZFS 最高!!! beadm 便利!!!
国際化ドメイン 
インターネットで使われるドメイン名にアル 
ファベットや数字以外に漢字、アラビア文字、 
キリル文字、ギリシア文字なども使えるように
する仕組み。 
日本語であれば日本語ドメイン名とも呼ばれる。 
抜粋) http://ja.wikipedia.org/wiki/国際化ドメイン名
国際化ドメイン名の例 
• 例えば下記のURL のドメイン名 
• http://日本語.jp/ (.jp は半角) 
•• hhttttpp::////日本語。jjpp// ((。jjpp は全角)) 
• http://浸透いうな.moe/
国際化ドメイン名の例 
• 下記URL のドメイン名は使えない 
• http://日本。。jp/ 
•• hhttttpp::////日本_。jjpp// 
• http://浸透いうな!.moe/
仕組みの概要 
• DNS の仕組みは通常通り 
• Web ブラウザなどのアプリケーションが頑張る 
1. 文字列を正規化 
2. 7bit ASCII 文字列への変換 
3. 通常通りDNS で名前解決
1.文字列の正規化 
• 一定の標準形に正規化(NAMEPREP) 
• たとえば、全角の「。」は半角の「.」に 
•• 全角の「jjpp」は半角の「jjpp」に
• アルファベットの大文字は全て小文字に 
日本語。jp => 日本語.jp
2. 7bit ASCII 文字列への変換 
• 正規化された文字列を 
Punycode(ピュニコード)(後述)で符号化 
•• 既存のDDNNSS の仕組みに合わせた
7bit ASCII 文字列に変換 
日本語.jp => xn--wgv71a119e.jp
3.通常通りDNS で名前解決 
• ここから先は通常通り… 
xn--wgv71a119e.jjpp ==>> 119922..00..22..11 ((例))
国際化ドメイン名の例 
• 下記URL のドメイン名は使えない 
• http://日本。。jp/ ‘.’ dot が連続 
•• hhttttpp::////日本_。jjpp// ‘‘__’’ uunnddeerrssccoorree 
• http://浸透いうな!.moe/ ‘!’ exclamation 
• ‘,’全角カンマは使えない 
‘、’全角読点は使える
Punycode(ピュニコード) 
国際化ドメイン名で使われる文字符号化方式で、 
RFC 3492 で定義されている。 
UUnniiccooddee で書かれた文字列をDDNNSS内の制限された
文字コード空間でも使えるようにするための方 
式で、ユーザーエージェントの実装に依存する。 
抜粋) http://ja.wikipedia.org/wiki/Punycode
変換・逆変換する方法 
• 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/
変換・逆変換する方法 
• JPRS 
日本語JPドメイン名のPunycode 変換・逆変換 
http://punycode.jp/ 
※日本語JP ドメインだけでなく 
任意の文字列をencode/decode
簡単!? 変換・逆変換 
$ 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)
逆変換してみた(.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
.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
END

Contenu connexe

Tendances

Tendances (12)

Hard-Disk
Hard-DiskHard-Disk
Hard-Disk
 
DNS 入門
DNS 入門DNS 入門
DNS 入門
 
Osh2014
Osh2014Osh2014
Osh2014
 
qpstudy 2014.04 ミドルウェア設計の勘所
qpstudy 2014.04 ミドルウェア設計の勘所qpstudy 2014.04 ミドルウェア設計の勘所
qpstudy 2014.04 ミドルウェア設計の勘所
 
Nas
NasNas
Nas
 
Web エンジニアが postgre sql を選ぶ 3 つの理由
Web エンジニアが postgre sql を選ぶ 3 つの理由Web エンジニアが postgre sql を選ぶ 3 つの理由
Web エンジニアが postgre sql を選ぶ 3 つの理由
 
Ec2でのdisk拡張方法
Ec2でのdisk拡張方法Ec2でのdisk拡張方法
Ec2でのdisk拡張方法
 
中国地方Db勉強会
中国地方Db勉強会中国地方Db勉強会
中国地方Db勉強会
 
ゲームキャストDiscord 1周年放送
ゲームキャストDiscord 1周年放送ゲームキャストDiscord 1周年放送
ゲームキャストDiscord 1周年放送
 
20120913 nosql@hikarie(okuyama fuse)
20120913 nosql@hikarie(okuyama fuse)20120913 nosql@hikarie(okuyama fuse)
20120913 nosql@hikarie(okuyama fuse)
 
OSC北海道2014_JPUG資料
OSC北海道2014_JPUG資料OSC北海道2014_JPUG資料
OSC北海道2014_JPUG資料
 
Postgre sqlから見るnosql
Postgre sqlから見るnosqlPostgre sqlから見るnosql
Postgre sqlから見るnosql
 

Plus de @ otsuka752

Plus de @ otsuka752 (20)

NS & NSID of Amazon Route 53
NS & NSID of Amazon Route 53NS & NSID of Amazon Route 53
NS & NSID of Amazon Route 53
 
OLD_LT_DNS_OLD
OLD_LT_DNS_OLDOLD_LT_DNS_OLD
OLD_LT_DNS_OLD
 
OLD_Lt traffic analyse_OLD
OLD_Lt traffic analyse_OLDOLD_Lt traffic analyse_OLD
OLD_Lt traffic analyse_OLD
 
Hijack the domain name
Hijack the domain nameHijack the domain name
Hijack the domain name
 
Route53 で親子同居
Route53 で親子同居Route53 で親子同居
Route53 で親子同居
 
reusable delegation set のススメ (Route53)
reusable delegation set のススメ (Route53)reusable delegation set のススメ (Route53)
reusable delegation set のススメ (Route53)
 
DNS64 (El capitan and unbound-1.5.1)
DNS64 (El capitan and unbound-1.5.1)DNS64 (El capitan and unbound-1.5.1)
DNS64 (El capitan and unbound-1.5.1)
 
raspi + soracom #pakeana33
raspi + soracom #pakeana33raspi + soracom #pakeana33
raspi + soracom #pakeana33
 
192.0.0.4 on android
192.0.0.4 on android192.0.0.4 on android
192.0.0.4 on android
 
a little more about CaptureFilter
a little more about CaptureFiltera little more about CaptureFilter
a little more about CaptureFilter
 
iptables BPF module 効果測定
iptables BPF module 効果測定iptables BPF module 効果測定
iptables BPF module 効果測定
 
how to defend DNS authoritative server against DNS WaterTorture
how to defend DNS authoritative server against DNS WaterTorturehow to defend DNS authoritative server against DNS WaterTorture
how to defend DNS authoritative server against DNS WaterTorture
 
how to decrypt SSL/TLS without PrivateKey of servers
how to decrypt SSL/TLS without PrivateKey of servershow to decrypt SSL/TLS without PrivateKey of servers
how to decrypt SSL/TLS without PrivateKey of servers
 
WireEdit のススメ
WireEdit のススメWireEdit のススメ
WireEdit のススメ
 
Measurement of Maximum new NAT-sessions per second / How to send packets
Measurement of Maximum new NAT-sessionsper second / How to send packetsMeasurement of Maximum new NAT-sessionsper second / How to send packets
Measurement of Maximum new NAT-sessions per second / How to send packets
 
about tcpreplay-edit
about tcpreplay-editabout tcpreplay-edit
about tcpreplay-edit
 
萌え萌えドメイン名一覧(.moe)
萌え萌えドメイン名一覧(.moe)萌え萌えドメイン名一覧(.moe)
萌え萌えドメイン名一覧(.moe)
 
about Tcpreplay
about Tcpreplayabout Tcpreplay
about Tcpreplay
 
パケットが教えてくれた ルートサーバが 13個の理由
パケットが教えてくれた ルートサーバが 13個の理由パケットが教えてくれた ルートサーバが 13個の理由
パケットが教えてくれた ルートサーバが 13個の理由
 
how to GET GET
how to GET GEThow to GET GET
how to GET GET
 

Dernier

Dernier (7)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

超簡単!? Punycode 変換 ~国際化・日本語ドメイン~

  • 1. 超簡単!? Punycode 変換 ~国際化・日本語ドメイン~ 2014/10/18 DNS Spa 2014 Autumn @otsuka752 (@twovs)
  • 2. agenda • 自己紹介 • 国際化ドメインの仕組み •• 名前解決の方法 • 逆変換してみた(.moe)
  • 3. about me • @otsuka752 (@twovs) • ネコ2人+奥さん1人+可愛い娘 •• 無線LLAANN装置の開発((11999999~~22000044)) • オンラインゲームのシステム管理者(2004~) • ただし,ゲームには全く興味無し • ZFS 最高!!! beadm 便利!!!
  • 4. 国際化ドメイン インターネットで使われるドメイン名にアル ファベットや数字以外に漢字、アラビア文字、 キリル文字、ギリシア文字なども使えるように する仕組み。 日本語であれば日本語ドメイン名とも呼ばれる。 抜粋) http://ja.wikipedia.org/wiki/国際化ドメイン名
  • 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 で名前解決
  • 8. 1.文字列の正規化 • 一定の標準形に正規化(NAMEPREP) • たとえば、全角の「。」は半角の「.」に •• 全角の「jjpp」は半角の「jjpp」に • アルファベットの大文字は全て小文字に 日本語。jp => 日本語.jp
  • 9. 2. 7bit ASCII 文字列への変換 • 正規化された文字列を Punycode(ピュニコード)(後述)で符号化 •• 既存のDDNNSS の仕組みに合わせた 7bit ASCII 文字列に変換 日本語.jp => xn--wgv71a119e.jp
  • 10. 3.通常通りDNS で名前解決 • ここから先は通常通り… xn--wgv71a119e.jjpp ==>> 119922..00..22..11 ((例))
  • 11. 国際化ドメイン名の例 • 下記URL のドメイン名は使えない • http://日本。。jp/ ‘.’ dot が連続 •• hhttttpp::////日本_。jjpp// ‘‘__’’ uunnddeerrssccoorree • http://浸透いうな!.moe/ ‘!’ exclamation • ‘,’全角カンマは使えない ‘、’全角読点は使える
  • 12. Punycode(ピュニコード) 国際化ドメイン名で使われる文字符号化方式で、 RFC 3492 で定義されている。 UUnniiccooddee で書かれた文字列をDDNNSS内の制限された 文字コード空間でも使えるようにするための方 式で、ユーザーエージェントの実装に依存する。 抜粋) http://ja.wikipedia.org/wiki/Punycode
  • 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
  • 18. END