目录

记录域名被莫名其妙停止解析两天的心路历程


风和日丽的一天下午,我正在开心的码代码,突然操作系统提示连接家里路由的VPN断开了,我想着可能又是网络波动,没当一回事, 于是继续快乐的干活,后来无意发现我网站也访问不了,然后ping了一下域名,甚至连域名也解析不了了,我这才发现特么的事情严重了。

查看域名发现是个serverhold状态,被注册局锁定,想着我一码农工作者积极向上思想健康,热爱国家拥护我dang,不偷不抢不写病毒木马不用域名做跳转乱搞事,不至于滥用被封,再加上域名是serverhold状态不是clienthold那大概率可能性就是实名问题?然后在这不明就理的情况下我就被停止解析了两天。

当然后续问题也解决了,貌似是因为域名注册实名的地址信息需要和身份证上的一致,跟供应商工单不停交涉了两天,我确实重新提交实名就解封了。

这其中交涉定位问题完全是靠自己,这让我觉得DNS解析要么找个靠谱的服务商,要么不要简单的受制于人,于是写了这个心路历程,主要是想记录解决办法。

  • 搞个不需要实名的DDNS

一般这个得用国外的服务提供商,这样除了只能提供二级域名不是很爽外,还有一个重要的问题是解析问题,很多路由高级设置里只支持国内几家,比如花生壳,公网云之类,国外的解析可能需要自己写代码来解决了。

好在大部分DDNS的解析API都是非常简单的,我举个栗子,如果用noip,支持OAuth 2.0认证,在curl中和go语言中都可以很简单的搞定,具体代码我就懒得写了,以下思路可以解决问题:

  1. 访问外网拿到WAN口IP,这类查询外网IP的网站特别多比如ip.cn等等

  2. 一定时间内轮循比对记录下的WAN口IP,一旦发现有改变,就提交更新

  3. OAuth 2.0认证在go中这么写

1
2
req, err := http.NewRequest("GET", url, nil)
req.SetBasicAuth(config.Username, config.Password)

noip服务更新IP的API接口是这个 http://dynupdate.no-ip.com/nic/update?myip=%s&hostname=%s, 是不是简单到代码都呼之欲出了。

  • 转域名到dnspod

对于顶级域名,目前除了花生壳,还没有其他家支持,其实顶级域名要自己解析还可以转入到dnspod下。

dnspod下解析方案也跟如上类似,但也有以下不同的地方。

  1. 通过 https://dnsapi.cn/Domain.List 拿到域名对应的id号

  2. 对应的ID号以http post json的方式提交注册,对应API地址是 https://dnsapi.cn/Record.Ddns ,具体可查dnspod的文档

这种就稍微麻烦一些,但是好处可以把顶级域名解析控制在我们自己手里,不至于受制于人。