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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM