使用CoreDNS搭建DNS服务器

木木3年前技术文章2015

简介

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

可以看到启动成功


相关文章

greenplum扩容

一、纵向扩展1、执行命令,生成参数文件[gpadmin@gw_mdw1 ~]$ gpexpand -f seg_hosts -D test 20190327:23:18:01:007122 gpex...

CDP实操--配置KNOX SSO(五)

CDP实操--配置KNOX SSO(五)

1.1配置Atlas的SSO身份验证在Knox SSO的topology里配置Knox与LDAP集成认证如下,并重启Knox服务role=authenticationauthentication.na...

Prometheus与Zabbix的对比

一、Prometheus与Zabbix的对比对比项PrometheusZabbixPrometheus优势Zabbix优势管理二进制文件启动LNMP+编译轻量级Server,便于迁移和维护-配置配置文...

Hive3 on spark 集成

Hive3 on spark 集成

前置条件hadoop yarn环境正常oracle jdk 1.8版本1、spark2 下载准备https://archive.apache.org/dist/spark/spark-2.4.5/sp...

MySQL 函数触发隐式转换应对策略

前言MySQL 中,当 SQL 索引字段使用了函数的话,会出现隐式转换的问题,导致索引失效,从而导致 SQL 执行效率变慢。本篇文章介绍 MySQL 不同版本此类问题的应对策略。1. 环境介绍以下是本...

大数据集群部署规划(五)规划HDFS容量

        HDFS DataNode以Block的形式,保存用户的文件和目录,同时在NameNode中生成一个文件...

发表评论    

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