使用CoreDNS搭建DNS服务器

木木2年前技术文章1299

简介

CoreDNS是一个DNS服务器/转发器,用Go编写,可以链接插件。每个插件执行一个 (DNS) 功能。

CoreDNS是云原生计算基金会毕业的项目。

CoreDNS是一个快速灵活的DNS服务器。这里的关键词是_灵活的_:使用CoreDNS,您可以通过利用插件对DNS数据执行所需的操作。如果某些功能不是开箱即用的,您可以通过编写插件来添加它。

安装

获取CoreDNS源代码

git clone https://github.com/coredns/coredns

使用Docker编译CoreDNS

CoreDNS 需要 Go 才能编译。但是,如果您已经安装了 Docker,并且不想设置 Go 环境,则可以使用Docker轻松构建 CoreDNS:

# 进入clone下来的源码目录
docker run --rm -i -t -v $PWD:/v -w /v golang:1.17 make

此处建议安装go 环境进行编译,无论如何编译都需要设置goproxy,否则会因为网络原因导致编译失败。

编译成功后可以看到一个二进制的文件

测试下是否正常

./coredns -dns.port 1053

再开一个会话测试一下

dig @localhost -p 1053 a www.baidu.com

可以看到正常

域名解析配置

基本参数

先看下CoreDns的参数

./coredns -h

编写配置文件

配置文件名称Corefile

# 监听1053端口,将所有域名解析请求转发到223.5.5.5的53端口
.:1053 {
   forward . 223.5.5.5:53
   log
}

forward的相关说明

重新开启服务后再次测试下

可以看到已经正常解析了

插件

由于我们的目的是给内网的机器配置上对应的域名,所以这里使用hosts插件

创建hosts文件

# qanp nas
192.168.0.150 nas.ilomumu.xyz

# rancher
172.16.0.7 rancher.ilomumu.xyz

# harbor
172.16.0.7 notary.ilomumu.xyz
172.16.0.7 harbor.ilomumu.xyz

# gitlab
172.16.0.12 gitlab.ilomumu.xyz

# grafana
172.16.0.7 grafana.ilomumu.xyz

# traffik
172.16.0.7 traefik.ilomumu.xyz
172.16.0.7 rancher-traefik.ilomumu.xyz

编辑CoreDns配置

# ilomumu.xyz
ilomumu.xyz:53 {
    # 开启缓存
    cache
    # 使用hosts文件
    hosts /opt/coredns/hosts {
        # 解析失败使用下个模块
        fallthrough
    }
    # 失败后转发
    forward . 2400:3200::1
    log
}

# 监听53端口,将所有域名解析请求转发到223.5.5.5的53端口
.:53 {
    cache
    forward . 2400:3200::1
    log
}

测试一下

看到可以正常解析

验证一下

可以看到正常解析内外网

编写service文件

创建文件/usr/lib/systemd/system/coredns.service

[Unit]
Description=CoreDns

[Service]
Type=simple
ExecStart=/opt/coredns/coredns -conf /opt/coredns/Corefile -pidfile /opt/coredns/coredns.pid

[Install]
WantedBy=multi-user.target

启动服务并开机启动

systemctl start coredns
systemctl enable coredns

可以看到启动成功


相关文章

keycloak高可用部署

keycloak高可用部署

添加keycloak应用rancher应用商店模式添加keycloak仓库地址rancher应用商店添加bitnami的helm仓库地址https://charts.bitnami.com/bitna...

SparkStreaming对接kafka消费模式区别

SparkStreaming对接kafka消费模式区别

Sparkstreaming对接kafka使用的消费方式与常规的kafka消费方式完全不同,其中区别主要为消费者的管理方式不同。Ø  常规消费模式Kafka常规的消费模式以消费者组为消费单元...

Mac安装Hadoop文档-保姆级操作(二)

Mac安装Hadoop文档-保姆级操作(二)

配置hadoop进入hadoop的目录:cd /opt/homebrew/Cellar/hadoop/3.3.6/libexec/etc/hadoop修改core-site.xml<config...

HDFS Fsimage分析磁盘目录(文件级别)

HDFS Fsimage分析磁盘目录(文件级别)

首先获取fsimage信息hdfs dfsadmin -fetchImage  /opt/fsimage格式化fsimage 转换为可读文本hdfs oiv -i /opt/fsimage/fsima...

flink单task多slot调优

flink单task多slot调优

1. 单taskmanager多slot的设置方法方式一:在配置文件中配置taskmanager.numberOfTaskSlots,通过修改提交任务的客户端配置文件中的配置flink-co...

EMR集群主机/opt/bignode目录占用巨大并持续增长

EMR集群主机/opt/bignode目录占用巨大并持续增长

问题现象:如下qa环境集群中,master节点出现如下磁盘告警处理步骤:登陆到该节点服务器,首先定位是哪个目录占用系统盘空间较大定位是由于:/opt/bignode/blocklet_indexing...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。