前言

中文域名是IDN域名的一部分。而当中文前缀的域名与后缀.中国.cn.台灣.tw结合时,会存在简繁变体域名,本文主要针对该部分进行讨论。这些讨论都发生于 2022-07-30 08:30:08 (UTC+8) 注册域名解放.台灣后。

正文

twnic对简繁变体域名的处理

当我注册域名以后查询whois状态为:

hit from [whois.twnic.net.tw]
----------------------------------
註冊原型域名: 解放.台灣 (xn--4bvq92f.xn--kpry57d)
保留字域名(由下列相關字組合之域名):
解 觧
Domain Status: ok

whois中描述很明白,我注册的域名原型实际为解放.台灣 (xn--4bvq92f.xn--kpry57d)。由于中文分为简繁变体,同时又保留觧放.台灣(xn--4bvy92f.xn--kpry57d),同时.台灣又有一个简体为.台湾.台湾通过dname到.台灣,所以理论我拥有以下域名:

  • 解放.台灣 (xn–4bvq92f.xn–kpry57d)
  • 觧放.台灣 (xn–4bvy92f.xn–kpry57d)
  • 解放.台湾 (xn–4bvq92f.xn–kprw13d)
  • 觧放.台湾 (xn–4bvy92f.xn–kprw13d)

实际可以解析的域名只有:解放.台灣 (xn--4bvq92f.xn--kpry57d),但由于注册局(twnic)的dname,我解析解放.台灣 (xn--4bvq92f.xn--kpry57d)后,解放.台湾 (xn--4bvq92f.xn--kprw13d)后和我同步解析(cname),但不能单独为其设置解析。


; <<>> DiG 9.16.1-Ubuntu <<>> 解放.台湾 @h.dns.tw
;; QUESTION SECTION:
;解放.台湾.                     IN      A
;; ANSWER SECTION:
台湾.                   3600    IN      DNAME   台灣.
解放.台湾.              3600    IN      CNAME   解放.台灣.

; <<>> DiG 9.16.1-Ubuntu <<>> 解放.台灣 @h.dns.tw
;; QUESTION SECTION:
;解放.台灣.                     IN      A
;; AUTHORITY SECTION:
解放.台灣.              3600    IN      NS      chuck.ns.cloudflare.com.
解放.台灣.              3600    IN      NS      ada.ns.cloudflare.com.

所以如果我需要使用该域名建站,为了保持访客的访问正常,需要绑定

  • 解放.台灣 (xn–4bvq92f.xn–kpry57d)
  • 解放.台湾 (xn–4bvq92f.xn–kprw13d)

这两个host。

在cloudflare中,由于我只有解放.台灣 (xn--4bvq92f.xn--kpry57d)的解析权,只能激活该域名。并且其webserver只绑定了繁体host,通过解放.台湾 (xn--4bvq92f.xn--kprw13d)无法访问。

关于.tw的简繁变体,我测试了

  • 台网中心.tw (xn–fiq43lrrlfy5a.tw)
  • 台網中心.tw (xn–fiq43lrrlz83a.tw)

发现前者并没有激活NS,不确定是注册局无法激活还是客户端没有设置,这里不再单独注册域名进行测试。

cnnic对简繁变体域名的处理

在发现这么好玩的事情以后,我开始看cnnic管理的域名。

hit from [cwhois.cnnic.cn]
----------------------------------
Domain Name: 國.中国
Puny Name: xn--9cs.xn--fiqs8s
Domain Name: 國.中國
Puny Name: xn--9cs.xn--fiqz9s
Domain Name: 国.中国
Puny Name: xn--vcs.xn--fiqs8s
Domain Name: 国.中國
Puny Name: xn--vcs.xn--fiqz9s

DNS激活情况如下:

; <<>> DiG 9.16.1-Ubuntu <<>> xn--9cs.xn--fiqs8s @a.dns.cn
;; QUESTION SECTION:
;國.中国.                       IN      A
;; AUTHORITY SECTION:
國.中国.                86400   IN      NS      ns2.yiyu.com.
國.中国.                86400   IN      NS      ns1.yiyu.com.

; <<>> DiG 9.16.1-Ubuntu <<>> xn--9cs.xn--fiqz9s @a.dns.cn
;; QUESTION SECTION:
;國.中國.                       IN      A
;; AUTHORITY SECTION:
國.中國.                86400   IN      NS      ns1.yiyu.com.
國.中國.                86400   IN      NS      ns2.yiyu.com.

可以发现每个每个域名的ns都是处于设置状态。不存在dname一说,这里cnnic是把每个变体当作不同的域名进行处理。买一最高得到四个。 不过此处也存在一些安全风险。暂不细说

安全风险

2023年11月30日更新:
2022.08 时写这篇文章的时候存在此风险,后来我向CNNIC邮箱反馈了这个问题。目前国内主流的公共NS服务都已经解决了此风险,故公开详情:

当域名注册人使用了一些固定NS服务器的公共DNS服务时,比如上面提到的ns1.yiyu.com、ns2.yiyu.com。由于注册局同时设置了域名的变体域名NS到同样的NS服务器,所以攻击者可以通过在自己的账户下接入这些变体域名来接管这些域名的解析权。
注册商可以通过以下手段解决此风险:
1. 为每个账户设置不同的NS服务器域名前缀
例如DNSPOD、CLOUDFLARE的做法,攻击者由于与正常的用户分配的NS服务器地址前缀不同,所以无法接管。
2. 将变体域名与正体域名认为是同一个域名
这里是阿里云的做法,当攻击者想接入变体域名时候,会提示已经有用户接入过此域名,要求额外验证。