首页 > 其他分享 >CoreDNS搭建内网DNS服务

CoreDNS搭建内网DNS服务

时间:2023-06-09 10:25:27浏览次数:41  
标签:mxsm 服务 注册 local DNS coredns CoreDNS 内网

 

蚂蚁背大象创作等级LV.5 2022年02月16日 23:57 ·  阅读 1502

「这是我参与2022首次更文挑战的第30天,活动详情查看:2022首次更文挑战

1. 背景

因为自己有在开发一个聊天的服务,注册中心设计参考了RocketMQ的NameServer。注册中心都是单独部署,注册中心和注册中心之间没有数据交互。注册中心只有和接入服务和消息服务有交互。也就是每个注册中心都链接所有的接入服务和消息服务。通过心跳协议维持连接:

image.png

但是这样存在一个问题,例如我新增一个注册中心,在不停机的情况下只有在注册中心新增后新增的接入服务和消息处理服务才可能将信息同步到注册中心,前面的接入服务和消息处理服务就注册中心的IP是写死在配置文件没有做动态加载(动态加载也会很麻烦需要修改每台机器部署的服务的注册中心IP地址)。然后就想到DNS,DNS拥有域名和IP对应关系,只需要确定好注册中心的域名,然后获取到DNS中域名对应的IP地址就可以实现动态的将接入服务和消息处理服务动态的同步到新增的注册中心:

image.png

由于我这个是一个内网的域名服务,所以DNS服务需要自己搭建,在研究Nacos的时候发现了一个CoreDNS的域名服务。然后通过研究发现CoreDNS可以作为一个内网自建的域名服务,同时在K8s有应用。

2. CoreDNS安装

安装有两种方式:

  • 直接下载编译好的压缩包

    下载地址:github.com/coredns/cor…

    这种方式就是不关心自定义插件的开发,只是想搭建一个环境比较适合

  • 源码编译

    通过源码编译安装,下面来讲这种方式

2.1 本地源码编译

CoreDNS用Go编写,所以在编译之前确保已经安装了GO的开发环境

GO的版本需要大于1.17

从Github上面Check out下来项目,然后使用 make 编译项目:

  shell 复制代码
$ git clone https://github.com/coredns/coredns
$ cd coredns
$ make

2.2 Docker编译

  shell 复制代码
$ docker run --rm -i -t -v $PWD:/v -w /v golang:1.17 make

golang的Docker镜像版本可以选择

3. 配置例子

3.1 官方版Hello Word配置

根据官网的直接启动

  shell 复制代码
$ ./coredns

image.png

查询CoreDNS 服务:

  shell 复制代码
dig @127.0.0.1 -p 53 www.example.com

image.png 解析成功。

3.2 自定义域名解析

配置文件放在和 coredns 命令相同的 Corefile 文件中

语法:

  arduino 复制代码
# define a snippet
(snip) {
    prometheus
    log
    errors
}

. {
    whoami
    import snip
}

自定义配置:

  lua 复制代码
. {
    forward . 8.8.8.8
}
mxsm.local {
	file mxsm.local { 
        reload 30s 
    }
}

配置一个mxsm.local文件:

  lua 复制代码
@                       IN SOA   mxsm.local. devops.mxsm.local. (
                                     20200202 ; SERIAL
                                     7200     ; REFRESH
                                     600      ; RETRY
                                     3600000  ; EXPIRE
                                     60)      ; MINIMUM
@                       IN NS    dns1.mxsm.local.   
mxsm.local.             IN A     192.168.43.128         


redis.mxsm.local.         IN A     192.168.43.128
mysql.mxsm.local.         IN A     192.168.43.128
elasticsearch.mxsm.local. IN A     192.168.43.128
ftp                          IN A     192.168.43.128 

重新运行coredns服务,验证:

image.png

外网解析验证

image.png

到这里就搭建完成了

我是蚂蚁背大象,文章对你有帮助点赞关注我,文章有不正确的地方请您斧正留言评论~谢谢!

参考文档:

标签:mxsm,服务,注册,local,DNS,coredns,CoreDNS,内网
From: https://www.cnblogs.com/cheyunhua/p/17468393.html

相关文章

  • dnsmasq( DNS和DHCP)服务
    目录一、简介二、dnsmasq安装三、dnsmasq的解析流程四、dnsmasq的作用以及相关配置五、DHCP服务器设置 一、简介Dnsmasq提供DNS缓存和DHCP服务功能。作为域名解析服务器(DNS),dnsmasq可以通过缓存DNS请求来提高对访问过的网址的连接速度。作为DHCP服务器......
  • dnSpy进行反编译修改并编译运行EXE或DLL
    软件界面如下:回到目录回到目录该软件分别64位版本及32位版本,分别为dnSpy.exe及 dnSpy-x86.exe,调试时请注意调试所对应软件版本。回到目录现在进入话题:回到目录一、首先编写一个HelloWorld的控制台运行程序,如下图所示:回到目录回到目录代码如下:回到目录usingSystem;using......
  • 使用coredns作为你的内网dns
    简介coredns是一个用go语言写的dns服务器,熟悉k8s的同学都知道k8s的服务发现用的就是coredns,之前我一直使用的是dnsmasq,但是不知道为什么dnsmasq的解析在公司总是很慢,所以我就想着换一个dns软件试试,看来看去就选择了coredns继续简介首先说一下架构,我内网搭建了两台dns服务器,内网......
  • 各类配置文件(DNS, Firefox,Edge)
    DNS配置腾讯DNS:119.29.29.292402:4e00:: 2402:4e00:1::阿里云:223.5.5.5223.6.6.62400:3200::12400:3200:baba::1黑龙江联通:202.97.224.68202.97.224.69CiscoDNS208.67.222.222208.67.220.2202620:119:35::352620:119:53::53浏览器配置Firefoxabout:confi......
  • [网络调试]在内网接口配置nat hairpin enable测试不生效问题
    用户反馈F1030在内网接口启用nathairpinenable功能后,内网PC通过公网映射地址无法访问到内部服务器。现场F1030使用Ess9308P05版本,检查映射相关配置未发现问题。沟通了解,在公网上通过公网映射地址可以正常访问服务器,内网PC通过服务器私网地址也可以正常访问服务器,初步排除服......
  • 一次有关 DNS 解析导致 APP 慢的问题探究
    目录一、业务背景二、问题三、问题排查3.1、问题一:基于DNS延迟的解析3.2、问题二:HTTPDNS侧HTTPDNS基础理论相关问题四、优化方向4.1、域名解析配置4.2、靠近HTTPDNS服务端层4.3、靠近用户层五、扩展5.1、如何测试本地到权威DNS服务器获取域名的时间5.2、同地区不同网络,访问......
  • 利用frp进行内网穿透,实现本地web服务向外提供(https)
    0x01先决条件有一台公网服务器0x02初始项目把frps放到公网服务器把frpc放到内网服务器0x03服务端配置[common]bind_port=2333#frp服务端口token=token@xxxx#认证口令allow_ports=443,80#开放的端口,限制后增加安全0x04客户端配置[common]server_addr=......
  • linux网关和dns配置配置
    要更改Linux的默认网关,可以使用route命令或ip命令来完成。下面是使用这两种方法的步骤:使用route命令:打开终端窗口。输入以下命令查看当前的路由表:route-n。根据输出,找到默认网关的目标是"0.0.0.0"的行。记下当前默认网关的IP地址和网络接口名称(通常是eth0或enp0sX等)。输入......
  • C#之获取内网客户端ip地址
    直接上菜:///<summary>///获取客户端IP地址///</summary>///<returns></returns>publicstringGetClientIP(){try{stringresult=System.Web.HttpContext.Cur......
  • Linux中DNS服务器的搭建
    1.DNS服务的安装2.配置主配置文件named.conf3.配置扩展配置文件named.rfc1912.zones4.配置正向解析文件sdcet.cn.zone ......