centos7.5下coredns+etcd搭建DNS服务器
#安装etcd
yum install etcd -y
systemctl start --now etcd
#安装coredns
#下载二进制版本:https://github.com/coredns/coredns/releases 解压安装
tar zxvf coredns_1.7.0_linux_amd64.tgz
mv coredns /usr/bin
mkdir /etc/coredns
vi /etc/coredns/Corefile
.:53 { # 监听tcp和udp的53端口
etcd { # 配置启用etcd插件,后面可以指定域名,例如 etcd test.com {
stubzones # 启用存根区域功能。 stubzone仅在位于指定的第一个区域下方的etcd树中完成
path /coredns # etcd里面的路径 默认为/skydns,以后所有的dns记录就是存储在该存根路径底下
endpoint http://localhost:2379 # etcd访问地址,多个空格分开
# upstream设置要使用的上游解析程序解决指向外部域名的在etcd(认为CNAME)中找到的外部域名。
upstream 8.8.8.8:53 8.8.4.4:53 /etc/resolv.conf
fallthrough # 如果区域匹配但不能生成记录,则将请求传递给下一个插件
# tls CERT KEY CACERT # 可选参数,etcd认证证书设置
}
prometheus # 监控插件
cache 160
loadbalance # 负载均衡,开启DNS记录轮询策略
forward . 8.8.8.8:53 8.8.4.4:53 /etc/resolv.conf # 上面etcd未查询到的请求转发给设置的DNS服务器解析
log # 打印日志
}
#启动
nohup /usr/bin/coredns -conf /etc/coredns/Corefile > /tmp/coredns.log 2>&1 &
#设置域名解析
export ETCDCTL_API=3
#A记录
etcdctl put /coredns/com/leffss/www '{"host":"1.1.1.1","ttl":10}'
#CNAME记录
etcdctl put /coredns/com/leffss/www '{"host":"www.baidu.com","ttl":10}'
#如果不用etcd直接把文件写入到hosts让coredns去获取配置如下
.:53 {
# 绑定interface ip
bind 127.0.0.1
# 先走本机的hosts
# https://coredns.io/plugins/hosts/
hosts {
# 自定义sms.service search.service 的解析
# 因为解析的域名少我们这里直接用hosts插件即可完成需求
# 如果有大量自定义域名解析那么建议用file插件使用 符合RFC 1035规范的DNS解析配置文件
10.6.6.2 dev.myki.cn
10.6.6.3 pro.myki.cn
# ttl
ttl 60
# 重载hosts配置
reload 1m
# 继续执行
fallthrough
}
# file enables serving zone data from an RFC 1035-style master file.
# https://coredns.io/plugins/file/
# file service.signed service
# 最后所有的都转发到系统配置的上游dns服务器去解析
forward . /etc/resolv.conf
# 缓存时间ttl
cache 120
# 自动加载配置文件的间隔时间
reload 6s
# 输出日志
log
# 输出错误
errors
}
文章作者 🐳Myki
上次更新 2020-07-30