Knot Resolver, GPL lisanslı açık kaynak bir DNS resolver çözümüdür. Threading yapısı bulunmayan, Shared-nothing architecture (SN) modelini kullanan yeniden uygulanacak konfigürasyonlar olduğunda herhangi bir kesinti yaşanmadan değişikliği uygulayabileceğiniz yapıdadır.
Knot Resolver, Cloudflare tarafından sunulan public DNS resolver servisinin temelini oluşturmaktadır.
Kurulum
Knot Resolver paketlerinin dağıtımlara göre paket kurulumu aşağıda bulunmaktadır.
Debian-based
# wget https://secure.nic.cz/files/knot-resolver/knot-resolver-release.deb
# sudo dpkg -i knot-resolver-release.deb
# sudo apt update
# sudo apt install -y knot-resolver
CentOS 7+
# sudo yum install -y https://secure.nic.cz/files/knot-resolver/knot-resolver-release.el.rpm
# sudo yum install -y knot-resolver
Fedora
# sudo dnf install -y https://secure.nic.cz/files/knot-resolver/knot-resolver-release.fedora.rpm
# sudo dnf install -y knot-resolver
Knot Resolver yapılandırmamız sadece belirli bir subnet aralığı için sorguya açık olacaktır. DNSSEC doğrulaması için ayrıca ek bir konfigürasyon yapmanıza gerek yoktur. DNSSEC doğrulaması Knot Resolver 4.0 itibarıyla öntanımlı olarak aktif hale getirilmiştir.
# dig secstack.net +dnssec @192.168.1.5
; <<>> DiG 9.16.1-Ubuntu <<>> secstack.net +dnssec @192.168.1.102
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55637
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 1232
;; QUESTION SECTION:
;secstack.net. IN A
;; ANSWER SECTION:
secstack.net. 300 IN A 104.27.146.233
secstack.net. 300 IN A 104.27.147.233
secstack.net. 300 IN A 172.67.163.219
secstack.net. 300 IN RRSIG A 13 2 300 20201123110942 20201121090942 34505 secstack.net. ZZhZWXa9fIQqRZ79CqvdLuoylM3rlILZBcMkrNdQ9JJgj6cU+YKBzfO3 z+65o8CED5uez9AbqEQCaLwKZCmG8g==
;; Query time: 8 msec
;; SERVER: 192.168.1.102#53(192.168.1.102)
;; WHEN: Sun Nov 22 10:09:42 UTC 2020
;; MSG SIZE rcvd: 197
Yapılandırma
Knot Resolver konfigürasyonunu düzenliyoruz.
# vim /etc/knot-resolver/kresd.conf
Konfigürasyon içeriğimiz aşağıda yer almaktadır.
net.listen('192.168.1.5', 53, { kind = 'dns' })
modules.load('rebinding < iterate')
modules.load('view')
view:addr('192.168.0.0/16', policy.all(policy.PASS))
view:addr('0.0.0.0/0', policy.all(policy.DROP))
Interface adresimizi tanımlıyoruz. Sorguya açılacak ve kapatılacak subnet aralıklarını tanımlıyoruz.
Son olarak Knot Resolver servisini çalıştırarak başlangıca ekliyoruz.
# systemctl start kresd@1.service
# systemctl enable kresd@1.service