以二进制形式部署 CoreDNS 服务器
文章目录
背景
CoreDNS 是 Golang 编写的一个插件式 DNS 服务器,Kubernetes 1.13 后内置的默认 DNS 服务器。特点如下:
插件化
:基于 Caddy 框架,实现了一个插件链的架构,将不同应用端功能抽象成插件形式,官网展示 插件列表。配置简单化
:使用 Corefile DSL 语法形式的配置文件,学习成本低。一体化的解决方案
:单独二进制可执行程序,内置插件已满足大多需求。
环境说明
- 操心系统:
ARMBIAN 5.77
- 主机IP:
192.168.8.113
安装部署
-
下载安装
CoreDNS
1 2 3 4 5
wget https://github.com/coredns/coredns/releases/download/v1.8.5/coredns_1.8.5_linux_arm64.tgz tar xf coredns_1.8.5_linux_arm64.tgz mv coredns /usr/local/bin/
-
创建启动用户
1
useradd coredns -s /sbin/nologin
-
创建
Corefile
服务配置文件1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
mkdir -p /data/coredns cat > /etc/coredns/Corefile << EOF .:53 { bind 0.0.0.0 hosts { #hangup ttl 60 reload 1m fallthrough } forward . /etc/resolv.conf cache { success 65536 3600 300 denial 8192 600 60 prefetch 1 60m 10% } reload 6s log errors } EOF chown coredns:coredns -R /etc/coredns
配置详解
ttl
记录保存时间以秒
为单位fallthrough
如果hosts
中找不到,则进入下一个阶段继续查找,如上述配置文件中,将转发给 系统默认 DNS 进行解析reload
自动重载配置文件forward
将解析转发到系统配置的上游 DNS 服务器进行解析cache
DNS 记录缓reload
自动加载配置文件的间隔时间log
打印日志errors
打印错误日志
-
创建
systemd
配置文件1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
cat > /lib/systemd/system/coredns.service << EOF [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=coredns WorkingDirectory=/etc/coredns/ ExecStart=/usr/local/bin/coredns -conf=/etc/coredns/Corefile ExecReload=/bin/kill -SIGUSR1 \$MAINPID Restart=on-failure [Install] WantedBy=multi-user.target EOF
-
添加 主机记录
1
sed -i "/hangup/a 192.168.8.1 treesir.io" /etc/coredns/Corefile
-
删除主机记录
1
sed -i "/treesir.io/d" /etc/coredns/Corefile
-
启动服务
1 2 3
systemctl daemon-reload \ && systemctl enable coredns.service --now \ && systemctl status coredns.service
测试使用
测试添加 A 记录
www.treesir.io
至192.168.8.1
|
|
测试解析百度,同样正常得到解析。
TODO
参考文档