coredns简介

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目前支持的行为,括号里面的英文表示插件:

  • 从文件提供区域数据; 支持DNSSEC(仅限NSEC)和DNS(file)。
  • 从主机检索区域数据,即充当辅助服务器(仅限AXFR)(secondary)。
  • 快速签署区域数据(dnssec)
  • 响应负载均衡(loadbalance)
  • 允许区域传输,即充当主服务器(file)
  • 从磁盘自动加载区域文件(auto)
  • 缓存(cache)
  • 对endpoint的健康检查(health)
  • 使用ETCD作为后端,即SkyDNS(ETCD)的101.5%替换(etcd)
  • 使用k8s(kubernetes)作为后端(kubernetes)
  • 作为一个代理转发查询到一些其他(递归)域名服务器(proxy)
  • 提供指标(使用Prometheus)(metrics)
  • 提供查询(log)和错误(errors)日志记录
  • 支持CH类:version.bind和friends(chaos)
  • 分析支持(pprof)
  • 重写查询(qtype,qclass和qname)(rewrite)
  • 回传所使用的IP地址,传输和端口号(whoami)

安装

查找coredns的release版本,当前测试版本为:1.7.0

https://github.com/coredns/coredns/releases

下载

wget https://github.com/coredns/coredns/releases/download/v1.7.0/coredns_1.7.0_linux_amd64.tgz
tar xf coredns_1.7.0_linux_amd64.tgz
mv coredns /usr/sbin

查看coredns版本

# coredns -version
CoreDNS-1.7.0
linux/amd64, go1.14.4, f59c03d

配置systemctl启动方式

vim /usr/lib/systemd/system/coredns.service

[Unit]
Description=CoreDNS DNS server
Documentation=https://coredns.io
After=network.target [Service]
PermissionsStartOnly=true
LimitNOFILE=1048576
LimitNPROC=512
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_BIND_SERVICE
NoNewPrivileges=true
User=root
ExecStart=/usr/sbin/coredns -conf=/etc/coredns/corefile
ExecReload=/bin/kill -SIGUSR1 $MAINPID
Restart=on-failure [Install]
WantedBy=multi-user.target

  

配置

1. 创建目录

mkdir /etc/coredns
mkdir /etc/coredns/zones

2. 添加配置文件

vim /etc/coredns/corefile

.:53 {
# 配置轮询
loadbalance
# 最后所有的都转发到系统配置的上游dns服务器去解析
forward . 8.8.8.8 8.8.4.4
# 缓存时间
cache 10
# 自动加载配置文件的间隔时间
reload 10s
# 输出日志
log
# 输出错误
errors # 使用auto插件配置 test.com ,只会对 test.com 这个域的请求应答。
auto test.com {
# test.com 的zones位置,会自动读取 zones下的文件,文件命名方式为 db.test.com ,虽然会读取其他的文件,但只会对auto指令后的域名做应答。
directory /etc/coredns/zones
# 每10s 重新加载 zones 的文件内容。
reload 10s
} # hosts插件,不支持泛域名解析。
hosts {
172.19.8.115 t1.qq.com
172.19.8.114 t2.qq.com
# ttl
ttl 60
# 重载hosts配置
reload 10s
# 继续执行
fallthrough
}
}

  

```test.com```采用zone文件格式,注意文件名的格式,```db+domain```的格式。如```db.test.com```,此文件为```test.com```的域名定义文件。

cat /etc/coredns/zones/db.test.com

$TTL 3600 ; 记录超时时间
$ORIGIN test.com. ; 指定origin,下面的@符号可以作为他的别名,注意后面的.
; SOA 后面的记录及通讯地址 比如 ns.test.com. admin.test.com. 并没有什么卵用, 测试随便写什么好像都不影响
@ IN SOA ns.test.com. admin.test.com. (
2020082626 ; Serial
4H ;Refresh
1H ; Retry
7D ; Expire
4H ) ;Negative Cache TTL test.com. IN NS ns1 ; ns.example.com is a nameserver for example.com
test.com. IN NS ns2 ; ns.somewhere.example is a backup nameserver for example.com
ns1 IN A 172.19.8.113
ns2 IN A 172.19.8.114 qq IN A 172.19.8.11
qq IN A 172.19.8.12
*.test.com. IN A 172.19.8.13

  

> 1. 每次修改需要修改 SOA serial。
> 2. *.test.com. 为泛域名解析。hosts插件不支持泛域名解析。

修改完后显示

[INFO] plugin/file: Successfully reloaded zone "test.com." in "/etc/coredns/zones/db.test.com" with 2020082628 SOA serial
[INFO] plugin/file: Sent notifies for zone "test.com." to []

服务器 /etc/resolv.conf 配置

nameserver 172.19.8.113 # 指向dns本机即可

  

另外一种配置hosts方式

#
.:53 {
# 配置轮询
loadbalance
# 最后所有的都转发到系统配置的上游dns服务器去解析
forward . 8.8.8.8 8.8.4.4
# 缓存时间
cache 10
# 自动加载配置文件的间隔时间
reload 10s
# 输出日志
log
# 输出错误
errors # 使用auto插件配置 test.com ,只会对 test.com 这个域的请求应答。
auto test.com {
# test.com 的zones位置,会自动读取 zones下的文件,文件命名方式为 db.test.com ,虽然会读取其他的文件,但只会对auto指令后的域名做应答。
directory /etc/coredns/zones
# 每10s 重新加载 zones 的文件内容。
reload 10s
} # hosts插件,不支持泛域名解析。
hosts /etc/coredns/hosts/hostsfile {
# ttl
ttl 60
# 重载hosts配置
reload 10s
# 继续执行
fallthrough
}
}

  

> hosts 指定文件,但是只能配一个hosts块。

cat /etc/coredns/hosts/hostsfile

172.19.8.113 t1.qq.com
172.19.8.114 t1.qq.com
172.19.8.114 t2.qq.com
172.19.8.115 t3.qq.com

coredns 安装的更多相关文章

  1. Kubernetes1.91(K8s)安装部署过程(七)--coredns安装

    为了是集群内的服务能使用dns进行服务解析,集群内需要使用dns服务器,可以按照kube官方dns,即kubedns或者其他的dns,比如coredns, 本例中按照的为coredns,按照简单,编辑 ...

  2. CoreDNS安装及集群验证

    目录 叙述 安装 测试 一 测试 二 CoreDNS 叙述 截止到目前为止,整个集群的核心组件已经安装完成. 此时集群内部还需要 CoreDNS 组件的支持. 安装 CoreDNS 是以 Pod 的形 ...

  3. k8s二进制部署 - coredns安装

    coredns的资源清单文件rabc.yaml apiVersion: v1 kind: ServiceAccount metadata: name: coredns namespace: kube- ...

  4. 二进制安装 k8s 1.15.6 集群

    目录: 第一篇 环境介绍与基础配置 第二篇 部署前期准备工作 第三篇 ETCD 集群部署 第四篇 master节点的部署介绍和前置工作 第五篇 kube-nginx 和 keepalived 部署安装 ...

  5. k8s1.11.0安装、一个master、一个node、查看node名称是主机名、node是扩容进来的、带cadvisor监控服务

    一个master.一个node.查看node节点是主机名 # 安装顺序:先在test1 上安装完必要组件后,就开始在 test2 上单独安装node组件,实现node功能,再返回来配置test1加入集 ...

  6. k8s1.11.0安装、一个master、一个node、查看node名称是ip、node是扩容进来的、带cadvisor监控服务

    一个master.一个node.查看node节点是ip # 安装顺序:先在test1 上安装完必要组件后,就开始在 test2 上单独安装node组件,实现node功能,再返回来配置test1加入集群 ...

  7. 【手打】coredns单台使用

    目录: coredns介绍 coredns安装 corendns配置 coredns介绍 CoreDNS 其实就是一个 DNS 服务,而 DNS 作为一种常见的服务发现手段,所以很多开源项目以及工程师 ...

  8. Kubernetes全栈架构师(二进制高可用安装k8s集群扩展篇)--学习笔记

    目录 二进制Metrics&Dashboard安装 二进制高可用集群可用性验证 生产环境k8s集群关键性配置 Bootstrapping: Kubelet启动过程 Bootstrapping: ...

  9. k8s kubernetes 核心笔记 镜像仓库 项目k8s改造(含最新k8s v1.16.2版本)

    k8s kubernetes 核心笔记 镜像仓库 项目k8s改造 2019/10/24 Chenxin 一 基本资料 一 参考: https://kubernetes.io/ 官网 https://k ...

随机推荐

  1. 【LeetCode】118. Pascal's Triangle 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 Java解法 Python解法 日期 [LeetCo ...

  2. css的鼠标手势总结

    css的鼠标手势 cursor:pointer; 或 cursor:hand : 手型 cursor:crosshair : 十字 cursor:text : 文本 cursor:wait : 等待 ...

  3. ON LARGE BATCH TRAINING FOR DEEP LEARNING: GENERALIZATION GAP AND SHARP MINIMA

    目录 概 主要内容 一些解决办法 Keskar N S, Mudigere D, Nocedal J, et al. On Large-Batch Training for Deep Learning ...

  4. element 表格只展开一行(点击下一行上一行关闭)

    源码:第一步 <el-table :data="tableData" border :row-class-name="tableRowClassName" ...

  5. RTD2171U替代方案|CS5266Typec转HDMI 4K60HZ转换芯片方案|CS5266芯片

    RTD2171U 是一款USB Type-C到HDMI转换器结合了USB Type-C输入接口和数字高清多媒体接口(HDMI)输出转换芯片.嵌入式微控制器基于工业标准8051内核.接收器端口将信道配置 ...

  6. 从JVM设计角度解读Java内存模型

    第十六章:Java内存模型 本文我们将重点放在Java内存模型(JMM)的一些高层设计问题,以及JMM的底层需求和所提供的保证,还有一些高层设计原则背后的原理. 例如安全发布,同步策略的规范以及一致性 ...

  7. Spring企业级程序设计 • 【目录】

    章节 内容 实践练习 Spring企业级程序设计目录(作业笔记) 第1章 Spring企业级程序设计 • [第1章 Spring之旅] 第2章 Spring企业级程序设计 • [第2章 Spring ...

  8. UML 基本模型元素

    目录 1. 结构模型元素 (1)类(class) (2)接口(interface) (3)协作(collaboration) (4)用例(use case) (5)活动类(active class) ...

  9. C#/.NET之WebAPI(从入门到放弃一)

    1.怎么理解WebApi,他究竟是什么? 关于这一篇,视频学习可参照B站up主:全栈ACE,全栈ACE的个人空间,社区QQ群如下,有什么问题也可加群咨询. 首先使用Visual Studio创建一个新 ...

  10. exit hook

    之前经常改 malloc_hook , realloc_hook,free_hook 为 one_gadget 来 get shell ,最近看到一种利用是改 exit hook(winmt师傅告诉我 ...