KNOT DNS
some information related to knot dns / knot-dnsutils. Tested with ‘knotd (Knot DNS), version 3.3.3’ running on OpenBSD 7.5.
Install Knot
Build Config
we’re configure this server as “slave” which get’s it’s config from a Primary Nameserver
# /etc/knot/knot.conf
server:
rundir: "/var/run/knot"
user: _knot:_knot
automatic-acl: on
listen: [ xx.xx.xx.xx@53, xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx@53 ]
log:
- target: syslog
any: info
database:
storage: "/var/db/knot"
key:
- id: mykey
algorithm: hmac-sha256
secret: xXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXx=
remote:
- id: primary
address: [ xx.xx.xx.xx@53, xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx@53 ] # IP Address of Primary Nameserver
key: mykey
template:
# default
- id: default
storage: "/var/db/knot"
file: "%s.zone"
global-module: mod-stats
semantic-checks: on
zone:
# Slave Zones
- domain: your-domain.ch
master: primary
- domain: your-other-domain.de
master: primary
- domain: your-last-domain.com
master: primary
enable and start service
rcctl enable knot
rcctl restart knot
zone backup
folder="/tmp/knot"
mkdir $folder
chown -R _knot $folder
knotc zone-backup +backupdir $folder
Build query File
cat ${folder}/zonefiles/stoege.net.zone |awk "{print \$1,\$3}" |grep -E "(NS|DS|A|AAAA|PTR|MX|SOA)$" |\
sort -u -R > ${folder}/queries.txt
StressTests (from a Debian Box)
apt install knot-dnsutils
cd /tmp
scp root@45.32.159.233:/tmp/knot/queries.txt .
5k Queries
kxdpgun -i queries.txt 45.32.159.233
using interface ens18, XDP threads 1, UDP, native mode
thread#00: sent 5010, received 5010
total queries: 5010 (1002 pps)
total replies: 5010 (1002 pps) (100%)
average DNS reply size: 63 B
average Ethernet reply rate: 842459 bps (0.84 Mbps)
responded NOERROR: 5010
duration: 5 s
100k Queries
time kxdpgun -t 20 -Q 5000 -i queries.txt -b 20 -p 8853 45.32.159.233
using interface ens18, XDP threads 1, UDP, native mode
thread#00: sent 100020, received 0
total queries: 100020 (5001 pps)
total replies: 0 (0 pps) (0%)
average DNS reply size: 0 B
average Ethernet reply rate: 24 bps (0.00 Mbps)
duration: 20 s
real 0m22.052s
user 0m0.092s
sys 0m0.183s
khost – Simple DNS lookup utility¶
# khost stoege.net
stoege.net. has IPv4 address 159.69.214.12
stoege.net. has IPv6 address 2a01:4f8:c0c:fff7::2
stoege.net. mail is handled by 10 ideo.noflow.ch.
# khost stoege.net -t SOA
stoege.net. start of authority is ns1.noflow.ch. hostmaster.noflow.ch. 2024052701 3600 900 1209600 1800
kdig – Advanced DNS lookup utility¶
# kdig stoege.net A
;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 57426
;; Flags: qr rd ra; QUERY: 1; ANSWER: 1; AUTHORITY: 0; ADDITIONAL: 0
;; QUESTION SECTION:
;; stoege.net. IN A
;; ANSWER SECTION:
stoege.net. 1800 IN A 159.69.214.12
;; Received 44 B
;; Time 2024-07-10 19:27:20 CEST
;; From 108.61.10.10@53(UDP) in 1.4 ms
short answer
# kdig +short stoege.net AAAA
2a01:4f8:c0c:fff7::2
output in json
# kdig +json stoege.net AAAA
{
"dateString": "2024-07-10T19:28:01+0200",
"dateSeconds": 1720632481,
"msgLength": 56,
"ID": 27609,
"QR": 1,
"Opcode": 0,
"AA": 0,
"TC": 0,
"RD": 1,
"RA": 1,
"AD": 0,
"CD": 0,
"RCODE": 0,
"QDCOUNT": 1,
"ANCOUNT": 1,
"NSCOUNT": 0,
"ARCOUNT": 0,
"QNAME": "stoege.net.",
"QTYPE": 28,
"QTYPEname": "AAAA",
"QCLASS": 1,
"QCLASSname": "IN",
"answerRRs": [
{
"NAME": "stoege.net.",
"TYPE": 28,
"TYPEname": "AAAA",
"CLASS": 1,
"CLASSname": "IN",
"TTL": 1800,
"rdataAAAA": "2a01:4f8:c0c:fff7::2",
"RDLENGTH": 16,
"RDATAHEX": "2A0104F80C0CFFF70000000000000002"
}
]
}
Any Comments ?
sha256: 4034db839fb307e487b0188f378a9bc142ededf7de783788811c270f126f03f5