140 likes | 285 Views
Internationalized Domain Names (IDN) and Reverse DNS. APNIC Taipei James Seng jseng@pobox.org.sg co-chair, IDN Working Group. Internationalized Domain Names. 华人.公司. cn 華人.商業. tw 高島屋.会社 .jp 삼성.회사 .kr 三星.회사. kr الاهرام.م viagénie .qc.ca ישראל . קום ทีเอชนิค.พาณิชย์.ไทย
E N D
Internationalized Domain Names (IDN) and Reverse DNS APNIC Taipei James Seng jseng@pobox.org.sg co-chair, IDN Working Group
Internationalized Domain Names 华人.公司.cn 華人.商業.tw 高島屋.会社.jp 삼성.회사.kr 三星.회사.kr الاهرام.م viagénie.qc.ca ישראל.קום ทีเอชนิค.พาณิชย์.ไทย 現代.com ヤフー.com
PunycodeRFC3492 • Designed for use with Internationalized Domain Names • It uniquely and reversibly transforms a Unicode string into an LDH string (Letter, Digit, Hyphen) • Some compression to produce shorter string • e.g. 新加坡 xn—yfro4i67omp3m
Stringprep/NameprepRFC3454/RFC3451 • Prepare internationalized domain name labels in order to increase the likelihood that name input and name comparison work in ways that make sense for typical users throughout the world. • Based on UTR#15 (Normalization) & UTR#22 (Case Mapping) • Stringprep is the generic processing [RFC3454] • Nameprep is a profile of stringprep for Internationalized Domain Names
IDNARFC3490 • IDNA only upgrade in applications to handle IDN • Consideration of legacy encoding and interopability • Enforce Nameprep in applications • Uses Nameprep-ACE’ed IDN over the wire
IDNA-Nameprep-Punycode User (Any encoding) End System IDNA processing Punycode Resolver Punycode unless protocol is updated Punycode DNS Servers Application Servers
IDNA-Nameprep-Punycode User Input: 新加坡 (48 34 28 51 38 34)GBK IDNA processing xn—yfro4i67omp3m Resolver (E6 96 B0 E5 8A A0 E5 9D A1)UTF-8 xn—yfro4i67omp3m DNS Servers Application Servers
So what? What does it mean to me as an DNS operator?
Delegation of 新加坡.sg sg. IN SOA nic.sg. root.nic.sg ( 2003011401 ;Serial 3H ;Refresh 15M ;Retry 7D ;Expire 1D) ;Minimum TTL IN NS ns.nic.sg. ... xn—yfro4i67omp3m IN NS ns.singapore.sg. IN NS ns2.singapore.sg. ns.singapore.sg. IN A 11.22.33.44 ns2.singapore.sg. IN A 22.33.44.55
Hosting of 新加坡.sg (in named.conf) zone "xn—yfro4i67omp3m.sg" { type "master“; file "singapore_db"; } (in singapore_db) xn—yfro4i67omp3m.sg. IN SOA singapore.sg. root.singapore.sg ( 2003011401 ;Serial 3H ;Refresh 15M ;Retry 7D ;Expire 1D) ;Minimum TTL IN NS ns.singapore.sg. IN NS ns2.singapore.sg. IN A 1.2.3.4
Hosting of 新加坡.sg (Reverse) (in named.conf) zone "3.2.1.in-addr.arpa" { type "master"; file "3.2.1_db"; } (in 3.2.1_db) @ IN SOA singapore.sg. root.singapore.sg ( 2003011401 ;Serial 3H ;Refresh 15M ;Retry 7D ;Expire 1D) ;Minimum TTL IN NS ns.singapore.sg. IN NS ns2.singapore.sg. 1 IN A xn—yfro4i67omp3m.sg.
One Problem How the !@#$%^& I know 新加坡 => xn—yfro4i67omp3m?
Known tools available • IDNKIT-1.2 • http://www.nic.ad.jp/ja/idn/mdnkit/download/#source • GNU libidn • http://www.gnu.org/software/libidn/ • Others?