标签:重写 zone udp 程序 number 开机启动 toc conda 简介
CoreDNS是一个DNS服务器,和Caddy Server具有相同的模型:它链接插件。CoreDNS是云本土计算基金会启动阶段项目。
CoreDNS是SkyDNS的继任者。 SkyDNS是一个薄层,暴露了DNS中的etcd中的服务。 CoreDNS建立在这个想法上,是一个通用的DNS服务器,可以与多个后端(etcd,kubernetes等)进行通信。
CoreDNS旨在成为一个快速灵活的DNS服务器。 这里的关键灵活指的是:使用CoreDNS,您可以使用DNS数据进行所需的操作。 还可以自已写插件来实现DNS的功能。
CoreDNS可以通过UDP / TCP(旧式的DNS),TLS(RFC 7858)和gRPC(不是标准)监听DNS请求。
CoreDNS目前支持的行为,括号里面的英文表示插件:
使用yum安装,最简化配置,非集群,生成环境建议部署etcd集群。 安装
% yum install etcd -y
启动
% systemctl start etcd
设置开机启动
% systemctl enable etcd
下载二进制版本:https://github.com/coredns/coredns/releases 解压安装
% tar zxvf coredns_1.3.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记录轮询策略
proxy . 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 &
验证
% dig +short @localhost www.baidu.com
www.a.shifen.com.
61.135.169.121
61.135.169.125
coredns只能使用etcd v3版本api添加的数据,etcdctl命令默认使用v2版本api,设置v3 api方法
% export ETCDCTL_API=3
或者添加以下内容到环境变量 vim ~/.bash_profile
:
export ETCDCTL_API=3
% etcdctl put /coredns/com/leffss/www ‘{"host":"1.1.1.1","ttl":10}‘
OK
查询结果:
% dig @localhost +short www.leffss.com
1.1.1.1
如果想添加多条记录,让coredns轮询,方法如下:
% etcdctl put /coredns/com/leffss/www/x1 ‘{"host":"1.1.1.2","ttl":10}‘
OK
% etcdctl put /coredns/com/leffss/www/x2 ‘{"host":"1.1.1.3","ttl":10}‘
OK
查询结果:
% dig @localhost +short www.leffss.com
1.1.1.2
1.1.1.3
**注意:**如果想让取消设置的轮询值,需要删除/coredns/com/leffss/www/x1与/coredns/com/leffss/www/x2
% etcdctl put /coredns/com/leffss/www ‘{"host":"1002::4:2","ttl":10}‘
OK
查询结果:
% dig -t AAAA @localhost +short www.leffss.com
1002::4:2
% etcdctl put /coredns/com/leffss/www ‘{"host":"www.baidu.com","ttl":10}‘
OK
查询结果:
% dig -t CNAME @localhost +short www.leffss.com
www.baidu.com.
% etcdctl put /coredns/com/leffss/www ‘{"host":"www.baidu.com","port":80,"ttl":10}‘
OK
查询结果:
% dig -t SRV @localhost +short www.leffss.com
10 100 80 www.baidu.com.
% etcdctl put /coredns/com/leffss/www ‘{"text":"This is text!","ttl":10}‘
OK
查询结果:
% dig -t TXT @localhost +short www.leffss.com
"This is text!"
centos7.5下coredns+etcd搭建DNS服务器
标签:重写 zone udp 程序 number 开机启动 toc conda 简介
原文地址:https://www.cnblogs.com/leffss/p/10148507.html