etcd3+coredns设置域名解析

@etcd3+coredns设置域名解析

一、 总则

本文将etcd3作为coredns的后端实现动态的域名解析功能,并使用curl命令操作etcd3中的数据,实现远程添加域名域名解析的功能。

二、 安装etcd

  1. 使用yum安装,最简化配置,非集群安装

    yum install –y etcd

  2. 修改配置,将/etc/etcd/etcd.conf 配置中‘ETCD_LISTEN_CLIENT_URLS’和‘ETCD_ADVERTISE_CLIENT_URLS’修改为“http://0.0.0.0:2379”
    vim /etc/etcd/etcd.conf
    在这里插入图片描述

  3. 启动etcd

    systemctl start etcd
    

三、 安装coredns

  1. 下载coredns二进制版本:https://github.com/coredns/coredns/releases

  2. 解压安装:

    tar zxvf coredns_1.3.0_linux_amd64.tgz
    mv coredns /usr/bin
    mkdir /etc/coredns
    
  3. 添加主配置文件/etc/coredns/Corefile
    vim /etc/coredns/Corefile

    .:53 {	# 监听tcp和udp的53端口
       etcd {   # 配置启用etcd插件,后面可以指定域名,例如 etcd test.com {
           stubzones # 启用存根区域功能。 stubzone仅在位于指定的第一个区域下方的etcd树中完成
         path /skydns # etcd里面的路径 默认为/skydns,以后所有的dns记录就是存储在该存根路径底下
         endpoint http://localhost:2379 # etcd访问地址
           # upstream设置要使用的上游解析程序解决指向外部域名的在etcd(认为CNAME)中找到的外部域名。
           upstream 8.8.8.8:53 8.8.4.4:53 /etc/resolv.conf   
           fallthrough # 如果区域匹配但不能生成记录,则将请求传递给下一个插件
           # tls CERT KEY CACERT # 可选参数,etcd认证证书设置
       }
       prometheus  # 监控插件
       cache 160
       loadbalance   # 负载均衡,开启DNS记录轮询策略
       proxy . 8.8.8.8:53 8.8.4.4:53 /etc/resolv.conf  # 上面etcd未查询到的请求转发给设置的DNS服务器解析
       log # 打印日志
    }
    
    
    
  4. 启动coredns

    nohup /usr/bin/coredns -conf /etc/coredns/Corefile > /tmp/coredns.log 2>&1 &

四、 etcdctl设置域名解析

  1. coredns只能使用etcd v3版本api添加的数据,etcdctl命令默认使用v2版本api,设置v3 api方法:
    export ETCDCTL_API=3
    或者添加以下内容到环境变量 vim ~/.bash_profile:
    export ETCDCTL_API=3

  2. 通过etcdctl设置域名解析:
    (1)A记录
    etcdctl put /skydns/com/test6/www ‘{“host”:”1.1.1.1”}’
    解析:
    dig @localhost +short www.test6.com
    在这里插入图片描述
    (2)AAAA记录
    etcdctl put /skydns/com/test6/aaaa '{"host":"32:68::d"}'
    在这里插入图片描述
    解析:
    dig -t AAAA @解析ip +short aaaa.test6.com
    在这里插入图片描述
    (3)TXT记录
    etcdctl put /skydns/com/test6/txt '{"text":"This is txt"}'
    解析:
    dig -t txt @localhost +short txt.test6.com
    在这里插入图片描述
    (4)MX记录
    etcdctl put /skydns/com/test6/mail '{"host":"192.168.19.5", "mail":true}'
    解析:
    dig -t mx @localhost +short mail.test6.com
    在这里插入图片描述

  3. 查看etcd中数据
    etcdctl get /skydns/com/test6/www#查询对应数据
    etcdctl get /skydns --prefix#查看以”/skydns”为开头的数据

五、 通过curl设置域名解析

注意:通过curl和postman向etcd3中导入数据,并通过域名解析,必须使用base64编码

  1. 准备key值和value值的base64编码
    key值(/skydns/com/last/www):
    在这里插入图片描述
    value值(A记录:{"host":"123.123.132.123"},AAAA记录:{"host":"32::32:d:43"},TXT记录:{"txt":"This is txt"}, MX记录:{"host":"123.123.132.123","mail":true})
    在这里插入图片描述

  2. 将生成的base64编码导入etcd,在“ip:port”与“kv”之间的信息要根据etcd3的版本进行分别设置,具体如图(curl -d '{"key":"key值base64编码","value":"value值base64编码"}' -X POST http://127.0.0.1:2379/v3alpha/kv/put):
    在这里插入图片描述

  3. 解析(相对文件位置倒着排列到skydns文件夹之前,具体解析方式参考第四节):
    dig @ip +short www.last.com
    在这里插入图片描述

  4. curl查询
    公式:curl -d '{"key":"key值base64编码"}' -X POST http://ip:port/v3alpha/kv/range
    在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值