1.各类本地DNS软件对比:
序号名称优点性能支持代理公有DNS支持多级域名支持主机名映射支持范域名支持热加载配置操作性评分
1dnsmasq功能齐全、灵活配置99376次/秒是是是否否很简单8
2bind灵活配置58533次/秒否是否否否简单7.5
3coredns配置灵活27202次/秒是是是是是简单9
结论:coredns支持泛域名、hosts映射,配置也简单等优点,但性能上比较差,但满足我们日常的需求。
2. coreDns搭建:
2.1 简介:
CoreDNS是Golang编写的一个插件式DNS服务器,是Kubernetes 1.13 后所内置的默认DNS服务器
2.2 安装环境及安装包:
linux(centos和ubuntu)
coredns_x.x.x_linux_amd64.tgz
说明:安装包下载地址:https://github.com/coredns/coredns/releases
可以选择特定版本自行下载,然后sftp上传到安装机器;也可以登录机器wget下载
如下载版本1.8.4:
wget https://github.com/coredns/coredns/releases/download/v1.8.4/coredns_1.8.4_linux_amd64.tgz
2.3 安装(版本1.8.4):
切换到服务器的安装包上传目录或者下载目录:
> ls coredns_*
coredns_1.8.4_linux_amd64.tgz
> tar xf coredns_1.8.4_linux_amd64.tgz
> mv coredns /usr/sbin
2.4 查看coredns版本
> coredns -version
CoreDNS-1.8.4
linux/amd64, go1.16.4, 053c4d5
2.5 配置
创建目录
> mkdir /etc/coredns
> mkdir /etc/coredns/zones
> mkdir /etc/coredns/hosts
2.添加配置文件内容(包括域名starsee.it和starsee.cn 以及hosts映射)
> vi /etc/coredns/corefile
.:53 {
# 配置轮询
loadbalance
# 先走本机的hosts
# https://coredns.io/plugins/hosts/
auto {
# 例如starsee.it 的zones位置,会自动读取 zones下的文件,文件命名方式为 db.starsee.it ,虽然会读取其他的文件,但只会对auto指令后的域名做应答。
directory /etc/coredns/zones
# 每10s 重新加载 zones 的文件内容。
reload 10s
}
hosts /etc/coredns/hosts/hostsfile {
# 自定义sms.service search.service 的解析
# 因为解析的域名少我们这里直接用hosts插件即可完成需求
# 如果有大量自定义域名解析那么建议用file插件使用 符合RFC 1035规范的DNS解析配置文件
# ttl
ttl 60
# 重载hosts配置
reload 1m
# 继续执行
fallthrough
}
# file enables serving zone data from an RFC 1035-style master file.
# https://coredns.io/plugins/file/
# file service.signed service
# 最后所有的都转发到系统配置的上游dns服务器去解析
forward . 8.8.8.8 114.114.114.114
# 缓存时间ttl
cache 120
# 自动加载配置文件的间隔时间
reload 6s
# 输出日志
log
# 输出错误
errors
}
3.域名配置文件(starsee.it):
starsee.it采用zone文件格式,注意文件名的格式,```db+domain```的格式。如db.starsee.it,此文件为starsee.it的域名定义文件。
> vi /etc/coredns/zones/db.starsee.it
$ORIGIN starsee.it.
; SOA 格式 [domain_name] IN SOA [域主服务器或主DNS服务器名] [管理员email] (时间信息)
@ IN SOA starsee.it. root.starsee.it. (
2019071601 ; Serial
4H ; Refresh
1H ; Retry
7D ; Expire
4H ) ; Negative Cache TTL
; 配置 DNS 记录,指向 ns1.rainsay.me
@ IN NS starsee.it.
confluence IN A 192.168.0.175
gitlab IN A 192.168.0.175
harbor IN A 192.168.0.137
* IN A 192.168.0.11
4.域名配置文件(starsee.cn):
starsee.cn采用zone文件格式,注意文件名的格式,```db+domain```的格式。如db.starsee.cn,此文件为starsee.cn的域名定义文件。
> vi /etc/coredns/zones/db.starsee.cn
$ORIGIN starsee.cn.
; SOA 格式 [domain_name] IN SOA [域主服务器或主DNS服务器名] [管理员email] (时间信息)
@ IN SOA starsee.cn. root.starsee.cn. (
2019071601 ; Serial
4H ; Refresh
1H ; Retry
7D ; Expire
4H ) ; Negative Cache TTL
; 配置 DNS 记录,指向 ns1.rainsay.me
@ IN NS starsee.cn.
oa IN A 192.168.0.128
admin IN A 192.168.0.200
5.host文件配置:
> vi /etc/coredns/hosts/hostsfile
192.168.0.137 hadoop-slave-01
192.168.0.140 hadoop-slave-02
192.168.0.141 hadoop-slave-03
192.168.0.142 hadoop-slave-04
192.168.0.135 hadoop-slave-05
192.168.0.136 hadoop-slave-06
192.168.0.143 hadoop-slave-07
#cdh
192.168.0.60 cdh001-192-168-0-60
192.168.0.61 cdh002-192-168-0-61
192.168.0.62 cdh003-192-168-0-62
192.168.0.63 cdh004-192-168-0-63
#vcenter
192.168.0.209 photon-machine
6. 配置systemctl启动方式
注:centos为 /usr/lib/systemd/system/coredns.service,ubuntu为 /lib/systemd/system/coredns.service
> vi /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=coredns
WorkingDirectory=/etc/coredns
ExecStart=/usr/sbin/coredns -conf=/etc/coredns/corefile
ExecReload=/bin/kill -SIGUSR1 $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
2.6 启动配置:
#添加业务用户
> useradd coredns -s /sbin/nologin
#配置开机自启
> systemctl enable coredns
#启动服务
> systemctl start coredns
#查看服务状态
> systemctl status coredns
PS:永久停止Ubuntu默认DNS服务
53端口被占用
> sudo systemctl disable --now systemd-resolved