在我开发的项目notr内网穿透当中引入DNS来解决一个问题:git
每次客户端链接都会修改其A记录,解析到链接的服务器节点上。目前DNS版本还很是简单,已经开源成notrns项目。可是这个项目还有几个问题:github
经过github了解到CoreDNS和etcd两个项目,就想着用CoreDNS代替notrns来作动态域名解析,使用etcd来作存储,使用etcd是基于如下考量:mongodb
CoreFile:数据库
notr.tech {
etcd {
path /skydns
endpoint http://localhost:2379
upstream
}
log
}
复制代码
➜ bin git:(master) ./etcdctl put /skydns/tech/notr/yingjiu/ '{"host":"192.168.1.2"}'
OK
➜ bin git:(master) nslookup yingjiu.notr.tech 127.0.0.1
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: yingjiu.notr.tech
Address: 192.168.1.2
➜ bin git:(master) ./etcdctl put /skydns/tech/notr/yingjiu/ '{"host":"192.168.1.3"}'
OK
➜ bin git:(master) nslookup yingjiu.notr.tech 127.0.0.1
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: yingjiu.notr.tech
Address: 192.168.1.3
➜ bin git:(master)
复制代码
接下来只须要在registry将etcd client集成进去便可,改造完以后整个软件变成了下图所示的流程。bash