使用CoreDNS搭建DNS服务器

木木3年前技术文章2181

简介

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

可以看到启动成功


相关文章

静默安装oracle11g单实例

环境: CentOS 7.8 11.2.0.4.0 orclp:172.16.104.31一、准备1、依赖包检查pdksh 在 redhat 上叫 ksh检查是否有安装root# rpm -q bin...

MySQL keepalived安装配置(二)

MySQL keepalived安装配置(二)

一、keepalived安装配置1.1、主备库安装keepalived服务:yum install -y keepalived yum install -y python MySQL-python1...

压测实操--nnbench压测hdfs_namenode负载方案

压测实操--nnbench压测hdfs_namenode负载方案

本次压测使用nnbench对namenode负载进行性能测试。nnbench生成很多与HDFS相关的请求,给NameNode施加较大的压力,这个测试能在HDFS上创建、读取、重命名和删除文件操作。对应...

MySQL DDL 风险评估

MySQL DDL 风险评估

一、前言变更是数据库离不开的话题,从 MySQL 5.6 开始,推出 online DDL 即变更期间不锁表,本篇文章介绍 MySQL 变更对数据库的影响如何去判断。二、DDL 风险提示1. 变更速查...

Alluxio 部署

Alluxio 部署

1、基础环境准备配置java环境变量tar -xzvf jdk-8u281-linux-x64.tar.gz -C /opt ln -s ...

prometheus黑盒监控

prometheus黑盒监控

黑盒监控即以用户的身份测试服务的外部可见性,常见的黑盒监控包括 HTTP探针、TCP探针、Dns、Icmp等用于检测站点、服务的可访问性、服务的连通性,以及访问效率等。prometheus提供了bla...

发表评论    

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