家用DNS选择
背景
折腾了下家里的路由器之后,发现DHCP分配的IP地址都乱了,以前用IP的一些服务无法运行。
用MAC绑定倒是可以解决这个问题,但是随之还是需要一个小的CMDB去存储这些信息,维护量还是存在。
于是就想找一个轻量级的DNS服务端来解决内网DNS的问题。
需求
必选
支持restful api的注册发现
轻量级
依赖少
迁移方便
文档丰富
学习成本低,知识复用
可选
最好有web页面进行管理
高可用无所谓
选型
Bind:比较熟悉了,但是太重,放弃。
PowerDNS:网上口碑不错,大多数人的选择,但是还是需要了解一些命令行和配置。还是有一定的学习成本的。而且无法迁移到生产上,知识投入产出比较低,感觉只是Bind的改进版。放弃。
CoreDNS:K8s组件之一,有学习成本但是可以移植到k8s上。有etcd服务发现的加持,二进制+配置文件,迁移和部署比较简单。
DNSmasq:路由器友好支持,和DHCP在一起。但是缺少服务发现和管理界面,不时之需的时候备选。或者路由器DNSmasq+CoreDNS的组合也是不错的。CoreDNS坏了用DNSmasq接管。
consul:天生就是服务发现的工具,也自带dns。就是不能递归。不过对于我来说足够用了。
架构
本地server:CoreDNS+ETCD 配置放到git上作为备份
本地client:DNSmasq缓存dns查询 转发的coredns上
路由器DNSmasq负责dhcp