CoreDNS 是一个DNS服务器软件,使用Golang编写。
本文是基于搭建OKD服务(BareMetal)的DNS配置部分进行来调整,以适应内网解析的需求;
一、系统和环境配置
操作系统:Fedora CoreOS 33.20210217.3.0
由于系统中自带了podman,免去了安装部分。
如果有需要可以使用CentOS 8
dnf -y install podman
二、启动pod
podman pod create -n core -p 53/udp -p 53/tcp
# !!! chcon -t container_var_lib_t /var/data/coredns/etcd/
# !!! setenforce 0
podman run -d --pod core --name etcd \
--volume /var/data/coredns/etcd:/etcd-data/ \
--name etcd Quay \
etcd --data-dir /etcd-data/ --name coredns_etcd \
--initial-advertise-peer-urls http://localhost:2380 --listen-peer-urls http://localhost:2380 \
--advertise-client-urls http://localhost:2379 --listen-client-urls http://localhost:2379 \
--initial-cluster coredns_etcd=http://localhost:2380
podman run -it -d --pod core --name dns \
-v /var/data/coredns/Corefile:/etc/coredns/Corefile \
coredns/coredns -conf=/etc/coredns/Corefile
三、Corefile文件
apps.internal 是内网需要解析的域名
.:53 {
template IN A apps.internal {
match .*apps\.internal
answer "{{ .Name }} 60 IN A 10.172.3.20"
fallthrough
}
etcd {
path /skydns
endpoint http://localhost:2379
fallthrough
# tls CERT KEY CACERT
}
rewrite name www.abc.com 1.1.1.1
prometheus
cache 160
loadbalance
forward . 127.0.0.1:5303 127.0.0.1:5301 127.0.0.1:5302 {
except www.cd.com
}
log
}
.:5301 {
forward . 8.8.8.8 8.8.4.4 {
tls_servername dns.google
}
}
.:5302 {
forward . 1.1.1.1 1.0.0.1 {
tls_servername cloudflare-dns.com
}
}
.:5303 {
forward . /etc/resolv.conf {
policy sequential
prefer_udp
}
}
四、添加解析
需要进入到etcd 的container中
alias etcdctlv3='ETCDCTL_API=3 etcdctl'
etcdctlv3 put /skydns/internal/api '{"host":"10.173.3.210","ttl":60}'