zoukankan      html  css  js  c++  java
  • coredns 安装

    coredns简介

    CoreDNS是一个DNS服务器,和Caddy Server具有相同的模型:它链接插件。CoreDNS是云本土计算基金会启动阶段项目。
    CoreDNS是SkyDNS的继任者。 SkyDNS是一个薄层,暴露了DNS中的etcd中的服务。 CoreDNS建立在这个想法上,是一个通用的DNS服务器,可以与多个后端(etcd,kubernetes等)进行通信。
    CoreDNS旨在成为一个快速灵活的DNS服务器。 这里的关键灵活指的是:使用CoreDNS,您可以使用DNS数据进行所需的操作。 还可以自已写插件来实现DNS的功能。
    CoreDNS可以通过UDP / TCP(旧式的DNS),TLS(RFC 7858)和gRPC(不是标准)监听DNS请求。
    CoreDNS目前支持的行为,括号里面的英文表示插件:

    • 从文件提供区域数据; 支持DNSSEC(仅限NSEC)和DNS(file)。
    • 从主机检索区域数据,即充当辅助服务器(仅限AXFR)(secondary)。
    • 快速签署区域数据(dnssec)
    • 响应负载均衡(loadbalance)
    • 允许区域传输,即充当主服务器(file)
    • 从磁盘自动加载区域文件(auto)
    • 缓存(cache)
    • 对endpoint的健康检查(health)
    • 使用ETCD作为后端,即SkyDNS(ETCD)的101.5%替换(etcd)
    • 使用k8s(kubernetes)作为后端(kubernetes)
    • 作为一个代理转发查询到一些其他(递归)域名服务器(proxy)
    • 提供指标(使用Prometheus)(metrics)
    • 提供查询(log)和错误(errors)日志记录
    • 支持CH类:version.bind和friends(chaos)
    • 分析支持(pprof)
    • 重写查询(qtype,qclass和qname)(rewrite)
    • 回传所使用的IP地址,传输和端口号(whoami)

    安装

    查找coredns的release版本,当前测试版本为:1.7.0

    https://github.com/coredns/coredns/releases

    下载

    wget https://github.com/coredns/coredns/releases/download/v1.7.0/coredns_1.7.0_linux_amd64.tgz
    tar xf coredns_1.7.0_linux_amd64.tgz
    mv coredns /usr/sbin
    

    查看coredns版本

    # coredns -version
    CoreDNS-1.7.0
    linux/amd64, go1.14.4, f59c03d
    

    配置systemctl启动方式

    vim /usr/lib/systemd/system/coredns.service
    
    [Unit]
    Description=CoreDNS DNS server
    Documentation=https://coredns.io
    After=network.target
    
    [Service]
    PermissionsStartOnly=true
    LimitNOFILE=1048576
    LimitNPROC=512
    CapabilityBoundingSet=CAP_NET_BIND_SERVICE
    AmbientCapabilities=CAP_NET_BIND_SERVICE
    NoNewPrivileges=true
    User=root
    ExecStart=/usr/sbin/coredns -conf=/etc/coredns/corefile
    ExecReload=/bin/kill -SIGUSR1 $MAINPID
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    

      

    配置

    1. 创建目录

    mkdir /etc/coredns
    mkdir /etc/coredns/zones

    2. 添加配置文件

    vim /etc/coredns/corefile
    
    .:53 {
    # 配置轮询
    loadbalance
    # 最后所有的都转发到系统配置的上游dns服务器去解析
    forward . 8.8.8.8 8.8.4.4
    # 缓存时间
    cache 10
    # 自动加载配置文件的间隔时间
    reload 10s
    # 输出日志
    log
    # 输出错误
    errors
    
    # 使用auto插件配置 test.com ,只会对 test.com 这个域的请求应答。
    auto test.com {
    # test.com 的zones位置,会自动读取 zones下的文件,文件命名方式为 db.test.com ,虽然会读取其他的文件,但只会对auto指令后的域名做应答。
    directory /etc/coredns/zones
    # 每10s 重新加载 zones 的文件内容。
    reload 10s
    }
    
    # hosts插件,不支持泛域名解析。
    hosts {
    172.19.8.115 t1.qq.com
    172.19.8.114 t2.qq.com
    # ttl
    ttl 60
    # 重载hosts配置
    reload 10s
    # 继续执行
    fallthrough
    } 
    }
    

      

    ```test.com```采用zone文件格式,注意文件名的格式,```db+domain```的格式。如```db.test.com```,此文件为```test.com```的域名定义文件。


    cat /etc/coredns/zones/db.test.com

    $TTL 3600 ; 记录超时时间
    $ORIGIN test.com. ; 指定origin,下面的@符号可以作为他的别名,注意后面的.
    ; SOA 后面的记录及通讯地址 比如 ns.test.com.	admin.test.com. 并没有什么卵用, 测试随便写什么好像都不影响
    @	IN	SOA	ns.test.com.	admin.test.com. (
    2020082626 ; Serial
    4H	;Refresh
    1H ; Retry
    7D ; Expire
    4H	) ;Negative Cache TTL
    
    test.com. IN NS ns1 ; ns.example.com is a nameserver for example.com
    test.com. IN NS ns2 ; ns.somewhere.example is a backup nameserver for example.com
    ns1	IN	A	172.19.8.113
    ns2	IN	A	172.19.8.114
    
    qq	IN	A	172.19.8.11
    qq	IN	A	172.19.8.12
    *.test.com.	IN	A	172.19.8.13
    

      

    > 1. 每次修改需要修改 SOA serial。
    > 2. *.test.com. 为泛域名解析。hosts插件不支持泛域名解析。

    修改完后显示

    [INFO] plugin/file: Successfully reloaded zone "test.com." in "/etc/coredns/zones/db.test.com" with 2020082628 SOA serial
    [INFO] plugin/file: Sent notifies for zone "test.com." to []
    

    服务器 /etc/resolv.conf 配置

    nameserver 172.19.8.113 # 指向dns本机即可
    

      

    另外一种配置hosts方式

    #
    .:53 {
    # 配置轮询
    loadbalance
    # 最后所有的都转发到系统配置的上游dns服务器去解析
    forward . 8.8.8.8 8.8.4.4
    # 缓存时间
    cache 10
    # 自动加载配置文件的间隔时间
    reload 10s
    # 输出日志
    log
    # 输出错误
    errors
    
    # 使用auto插件配置 test.com ,只会对 test.com 这个域的请求应答。
    auto test.com {
    # test.com 的zones位置,会自动读取 zones下的文件,文件命名方式为 db.test.com ,虽然会读取其他的文件,但只会对auto指令后的域名做应答。
    directory /etc/coredns/zones
    # 每10s 重新加载 zones 的文件内容。
    reload 10s
    }
    
    # hosts插件,不支持泛域名解析。
    hosts /etc/coredns/hosts/hostsfile {
    # ttl
    ttl 60
    # 重载hosts配置
    reload 10s
    # 继续执行
    fallthrough
    } 
    }
    

      

    > hosts 指定文件,但是只能配一个hosts块。

    cat /etc/coredns/hosts/hostsfile

    172.19.8.113 t1.qq.com
    172.19.8.114 t1.qq.com
    172.19.8.114 t2.qq.com
    172.19.8.115 t3.qq.com
  • 相关阅读:
    jquery手写实现单页滚动导航
    小程序:商品分类,实现滑块视图
    微信小程序增加悬浮在线客服
    小程序 杂记
    自动售货机 扫描支付 原理
    HTTP的SSL 证书安装
    表达
    Linux 下svn恢复到某一版本
    倒车入库 技巧
    svn 杂记
  • 原文地址:https://www.cnblogs.com/cptao/p/13590575.html
Copyright © 2011-2022 走看看