Dobry den,
hledam nekoho, kdo by mi poradil a nebo me navedl, kde muzu mit problem s konfiguraci.

Knot resolver bezi na virtualu debian 10 - ip adresa serveru 192.168.128.44

samotny server bezi pravdepodobne bez problemu:

root@dns1:# sudo systemctl status kresd*.service
kresd@2.service - Knot Resolver daemon
Loaded: loaded (/lib/systemd/system/kresd@.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2020-04-12 21:47:16 CEST; 28min ago
Docs: man:kresd.systemd(7)
man:kresd(8)
Main PID: 425 (kresd)
Tasks: 1 (limit: 4701)
Memory: 10.5M
CGroup: /system.slice/system-kresd.slice/kresd@2.service
└─425 /usr/sbin/kresd -c /usr/lib/knot-resolver/distro-preconfig.lua -c /etc/knot-resolver/kresd.conf -n

Apr 12 21:47:48 dns1 kresd[425]: [23257.04][resl] finished: 4, queries: 1, mempool: 16400 B
Apr 12 21:47:48 dns1 kresd[425]: [38598.04][resl] => id: '44535' querying: '2404:1fc0:1000:400::42#00053' score: 10 zone cut: 'pool.ntp.org.' qname: '2.deBiAn.pOol.Ntp.orG.' qtype: 'A' pr
Apr 12 21:47:48 dns1 kresd[425]: [38598.04][resl] => id: '44535' querying: '31.3.105.98#00053' score: 10 zone cut: 'pool.ntp.org.' qname: '2.deBiAn.pOol.Ntp.orG.' qtype: 'A' proto: 'udp'
Apr 12 21:47:48 dns1 kresd[425]: [38598.04][iter] <= rcode: NOERROR
Apr 12 21:47:48 dns1 kresd[425]: [38598.04][cach] => stashed 2.debian.pool.ntp.org. A, rank 030, 38 B total, incl. 0 RRSIGs
Apr 12 21:47:48 dns1 kresd[425]: [38598.04][resl] <= server: '2a03:7900:104:1::2' rtt: >= 427 ms
Apr 12 21:47:48 dns1 kresd[425]: [38598.04][resl] <= server: '2404:1fc0:1000:400::42' rtt: >= 227 ms
Apr 12 21:47:48 dns1 kresd[425]: [38598.04][resl] <= server: '31.3.105.98' rtt: 27 ms
Apr 12 21:47:48 dns1 kresd[425]: [38598.04][resl] AD: request NOT classified as SECURE
Apr 12 21:47:48 dns1 kresd[425]: [38598.04][resl] finished: 4, queries: 1, mempool: 16400 B

kresd@1.service - Knot Resolver daemon
Loaded: loaded (/lib/systemd/system/kresd@.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2020-04-12 21:47:16 CEST; 28min ago
Docs: man:kresd.systemd(7)
man:kresd(8)
Main PID: 418 (kresd)
Tasks: 1 (limit: 4701)
Memory: 7.7M
CGroup: /system.slice/system-kresd.slice/kresd@1.service
└─418 /usr/sbin/kresd -c /usr/lib/knot-resolver/distro-preconfig.lua -c /etc/knot-resolver/kresd.conf -n

Apr 12 21:47:16 dns1 kresd[418]: [65562.01][resl] AD: request NOT classified as SECURE
Apr 12 21:47:16 dns1 kresd[418]: [65562.01][resl] finished: 4, queries: 1, mempool: 81952 B
Apr 12 21:47:16 dns1 kresd[418]: [priming] triggered priming query, next in 477371 seconds
Apr 12 21:47:16 dns1 kresd[418]: [00000.00][plan] plan '.' type 'NS' uid [65563.00]
Apr 12 21:47:16 dns1 kresd[418]: [65563.00][iter] '.' type 'NS' new uid was assigned .01, parent uid .00
Apr 12 21:47:16 dns1 kresd[418]: [65563.01][cach] => satisfied by exact RRset: rank 060, new TTL 477371
Apr 12 21:47:16 dns1 kresd[418]: [65563.01][iter] <= rcode: NOERROR
Apr 12 21:47:16 dns1 kresd[418]: [65563.01][resl] AD: request classified as SECURE
Apr 12 21:47:16 dns1 kresd[418]: [65563.01][resl] finished: 4, queries: 1, mempool: 81952 B
Apr 12 21:47:16 dns1 kresd[418]: [detect_time_skew] Local system time "Sun Apr 12 21:47:16 2020" is within RRSIG validity interval <"Sun Apr 12 06:00:00 2020","Sat Apr 25 07:00:00 2020">.

Konfigurace Knotu:

root@dns1:# more /etc/knot-resolver/kresd.conf
-- vim:syntax=lua:set ts=4 sw=4:
-- Refer to manual: https://knot-resolver.readthedocs.org/en/stable/

-- Network interface configuration
net.listen('127.0.0.1', 53, { kind = 'dns' })
net.listen('127.0.0.1', 853, { kind = 'tls' })
net.listen('::1', 53, { kind = 'dns', freebind = true })
net.listen('::1', 853, { kind = 'tls', freebind = true })

-- Load useful modules
--modules = {
-- 'policy',
-- 'hints > iterate', -- Load /etc/hosts and allow custom root hints
-- 'stats', -- Track internal statistics
-- 'predict', -- Prefetch expiring/frequent records
--}

verbose(true)

modules = {
'policy',
'view',
'hints',
'serve_stale < cache',
'workarounds < iterate',
'stats',
'predict'
}

-- Cache size
cache.size = 1 * GB

-- Root hints
hints.root_file = '/var/lib/knot-resolver/root.hints'

--hints.root({
-- ['i.root-servers.net.'] = { '2001:7fe::53', '192.36.148.17' }
--})

-- Accept all requests from these subnets
view:addr('192.0.0.0/8', policy.all(policy.PASS))

root@dns1:# more /etc/resolv.conf
nameserver 127.0.0.1

root@dns1:# dig www.seznam.cz

; <<>> DiG 9.11.5-P4-5.1-Debian <<>> www.seznam.cz
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58096
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.seznam.cz. IN A

;; ANSWER SECTION:
www.seznam.cz. 297 IN A 77.75.74.172
www.seznam.cz. 297 IN A 77.75.74.176
www.seznam.cz. 297 IN A 77.75.75.172
www.seznam.cz. 297 IN A 77.75.75.176

;; Query time: 2 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Apr 12 22:22:41 CEST 2020
;; MSG SIZE rcvd: 106

Mam problem, jakmile tento DNS resolver nastavim na svem notebooku jako primarni DNS. Stranky se nenacitaji a ani v zapnutem debug modu se nic nezobrazuje. Iptables na strane debianu jsou vypnute, krome fail2ban.

Neporadi mi prosim nekdo, co delam spatne? Dekuju.

Neposlouchá to na venkovních interfaces.
net.listen({ '0.0.0.0', '::' }, 53)
Nebo tam dej IP na které to má valit...

Dále doporučuji omezení na tvoje ip viz moje konfigurace(uprav si rozsahy):

-- Network policy

view:addr('10.0.0.0/8', policy.all(policy.PASS))
view:addr('172.16.0.0/12', policy.all(policy.PASS))
view:addr('192.168.0.0/16', policy.all(policy.PASS))
view:addr('185.93.60.0/22', policy.all(policy.PASS))
view:addr('0.0.0.0/0', policy.all(policy.DROP))

Dekuju Vam moc, zapomnel jsem toto vlakno uzavrit. Napsal mi jeden kluk pres SZ, prenastavil jsem to na ip interface misto 127.0.0.1 a vse se rozbehlo. Omezeni na svoji lokalni sit mam.

Presto, kdyvy Vas napadlo jeste nejaky tunning parametru, budu rad za Vase zkusenosti. Postupne jsem za ty roky presel z BINDu pres UNBOUND na KNOT resolver.

  • suk replied to this.

    pepulis Taky jsme s Whalebone přesli od Unboundu na KRES a nemůžeme si to vynachválit. Umožňuje nám dělat s Whalebone DNS a malware filtrací velké změny. Dodáváme Whalebone předkonfigurován pro ISPčka, zkusím ověřit, jestli je možné nějak nasdílet konfiguraci, ale mrkněte případně na https://youtu.be/RjTwU3JxqlM?t=4123, tam něco málo jde vidět. Konkrétně se tam řeší DNS over HTTPS a rozebírá se tam i:

    -- signal firefox to disable DNS over HTTPS and use this resolver instead
    policy.add(policy.suffix(policy.DENY, {todname('use-application-dns.net.')}))

    Ten řekne US Firefoxu, aby se dál ptal vašeho DNS a ne Cloudflare.

      suk Díky, Váš produkt je zajímavý.

      Aby bylo možné toto pravidlo používat je potřeba naloadovat modul policy, že?

      Ano + ještě view
      modules = {'policy', 'view'}

      Jinak tam aktuálně neděláme žádná velká kouzla. Jde mkrnout do střev, když si u sebe rozjedete. Budeme si teď hrát s dalšími optimalizacemi, ty už budou stát víc za zmínku. Ale je to ještě předčasné je zmiňovat.

      A na jakem virtualu, kolik cpu, ram apod. Vam prosim bezi knot resolver? Ja to mam momentalne na virtualu s 4 CPU, 4 GB RAMky, pocet uz. do 1 tis. Vyclenena cache:

      • -- Cache size
        cache.size = 1 * GB

      root@dns1:# sudo systemctl status kresd*.service
      kresd@3.service - Knot Resolver daemon
      Loaded: loaded (/lib/systemd/system/kresd@.service; enabled; vendor preset: enabled)
      Active: active (running) since Tue 2020-04-14 17:37:51 CEST; 1h 39min ago
      Docs: man:kresd.systemd(7)
      man:kresd(8)
      Main PID: 455 (kresd)
      Tasks: 1 (limit: 4700)
      Memory: 20.6M
      CGroup: /system.slice/system-kresd.slice/kresd@3.service
      └─455 /usr/sbin/kresd -c /usr/lib/knot-resolver/distro-preconfig.lua -c /etc/knot-resolver/kresd.conf -n

      Apr 14 17:37:51 dns1 systemd[1]: Starting Knot Resolver daemon...
      Apr 14 17:37:51 dns1 systemd[1]: Started Knot Resolver daemon.
      Apr 14 17:37:51 dns1 kresd[455]: [tls] Using ephemeral TLS credentials:
      Apr 14 17:37:51 dns1 kresd[455]: [tls] RFC 7858 OOB key-pin (0): pin-sha256=""

      kresd@2.service - Knot Resolver daemon
      Loaded: loaded (/lib/systemd/system/kresd@.service; enabled; vendor preset: enabled)
      Active: active (running) since Tue 2020-04-14 17:37:51 CEST; 1h 39min ago
      Docs: man:kresd.systemd(7)
      man:kresd(8)
      Main PID: 459 (kresd)
      Tasks: 1 (limit: 4700)
      Memory: 19.8M
      CGroup: /system.slice/system-kresd.slice/kresd@2.service
      └─459 /usr/sbin/kresd -c /usr/lib/knot-resolver/distro-preconfig.lua -c /etc/knot-resolver/kresd.conf -n

      Apr 14 17:37:51 dns1 systemd[1]: Starting Knot Resolver daemon...
      Apr 14 17:37:51 dns1 systemd[1]: Started Knot Resolver daemon.
      Apr 14 17:37:57 dns1 kresd[459]: [tls] Using ephemeral TLS credentials:
      Apr 14 17:37:57 dns1 kresd[459]: [tls] RFC 7858 OOB key-pin (0): pin-sha256=""

      kresd@1.service - Knot Resolver daemon
      Loaded: loaded (/lib/systemd/system/kresd@.service; enabled; vendor preset: enabled)
      Active: active (running) since Tue 2020-04-14 17:37:51 CEST; 1h 39min ago
      Docs: man:kresd.systemd(7)
      man:kresd(8)
      Main PID: 457 (kresd)
      Tasks: 1 (limit: 4700)
      Memory: 19.9M
      CGroup: /system.slice/system-kresd.slice/kresd@1.service
      └─457 /usr/sbin/kresd -c /usr/lib/knot-resolver/distro-preconfig.lua -c /etc/knot-resolver/kresd.conf -n

      Apr 14 17:37:51 dns1 systemd[1]: Starting Knot Resolver daemon...
      Apr 14 17:37:51 dns1 systemd[1]: Started Knot Resolver daemon.
      Apr 14 17:38:03 dns1 kresd[457]: [tls] Using ephemeral TLS credentials:
      Apr 14 17:38:03 dns1 kresd[457]: [tls] RFC 7858 OOB key-pin (0): pin-sha256=""

      kresd@4.service - Knot Resolver daemon
      Loaded: loaded (/lib/systemd/system/kresd@.service; enabled; vendor preset: enabled)
      Active: active (running) since Tue 2020-04-14 17:37:51 CEST; 1h 39min ago
      Docs: man:kresd.systemd(7)
      man:kresd(8)
      Main PID: 456 (kresd)
      Tasks: 1 (limit: 4700)
      Memory: 16.0M
      CGroup: /system.slice/system-kresd.slice/kresd@4.service
      └─456 /usr/sbin/kresd -c /usr/lib/knot-resolver/distro-preconfig.lua -c /etc/knot-resolver/kresd.conf -n

      Apr 14 17:37:51 dns1 systemd[1]: Starting Knot Resolver daemon...
      Apr 14 17:37:51 dns1 systemd[1]: Started Knot Resolver daemon.
      Apr 14 17:37:52 dns1 kresd[456]: [tls] Using ephemeral TLS credentials:
      Apr 14 17:37:52 dns1 kresd[456]: [tls] RFC 7858 OOB key-pin (0): pin-sha256=""

      Dekuju za reakci.

      • suk replied to this.

        pepulis Záleží na velikosti sítě, do 10.000 přípojek v dokumentaci doporučujeme - a uvidíme to jako minimální konfg:

        • 2 CPU cores
        • 4 GB RAM
        • 40 GB HDD (at least 30 GB in /var partition)

        Pro větší sítě se škáluje primárně CPU. O2 má samozřejmě konfiguraci někde jinde 🙂

        Na disk se zapisují logy o odfiltrovaném provozu + komplet audit DNS provozu.
        V RAM se drží nakešované politiky, blacklisty (cca 3.000.000 domén v jednu chvíli),...

        Ale síť od sítě se pak samozřejmě požadavky liší. Na systémové prostředky máme monitoring a statistiky. Tohle je jen příklad z labu: a) přehled resolverů, b) statistika konkrétního resolveru

        4 vCPUs
        8GB RAM
        100GB HDD

        Dobry vecer,

        jeste se hraji s konfiguraci a narazil jsem na test https://www.cloudflare.com/ssl/encrypted-sni/ a domnival se, ze mam
        DNS-over-TLS aktivovanou na svem knot resolveru.

        Ano, vim o konfuguraci:

        policy.add(policy.all(policy.TLS_FORWARD({{
        '1.1.1.1',
        hostname='cloudflare-dns.com',
        ca_file='/etc/pki/tls/certs/ca-bundle.crt'
        }})))

        Popravde jsem ale doufal, ze se nebudu muset odkazovat na jiny DNS, to uz bych rovnou mohl prestat vyuzivat svuj resolver a hned pouzit jako DNS 1.1.1.1. Ve Firefoxu mi to jede, ale v Chrome zatim ne. Co Vám?

        Dekuju za odpoved.

        o rok později

        Zkusím to tady oživit.

        Mám v Knot resolver zatím pouze v domácím labu a více méně si ho osahávám co kde a jak. Mám jen malé srovnání s Unbound.

        U Knot resolveru mi chybí něco jako: unbound-control dump_cache - podívat se na obsah keše. I statistiky unbound-control stats mi připadají logičtější než kresc client a volat stats.list():

        # kresc /run/knot-resolver/control/1
        Warning! kresc is highly experimental, use at own risk.
        Please tell authors what features you expect from client utility.
        
        kresc> stats.list()

        Existuje tam i modul http, kde jsou pak statistiky https://localhost:8453/stats, ale jsou v JSONu. 😀

        Znáte případně lepší možnost, kterou jsem přehlédl? Dále používáte Knot čistě jako Forwarding DNS (cache) nebo jako rekurzivní DNS?

        Díky za případné reakce 😃

          vecino Jen k té doplňující otázce - Knot Resolver se rekurzivně ptá od kořenových DNS, nemá jeden nadřazený DNS. Pro vracení interních IP adres z Knot DNS mám v resolveru tuhle konfiguraci:

          -- Internal domains
          policy.add(policy.suffix(policy.STUB('ip.interniho.dns.serveru'),
              policy.todnames({
                  'domena.cz',
                  '168.192.in-addr.arpa',
              })
          ))

            dacesilian Fakt se ti klaním a velice děkuji za tvůj příspěvek ... celej den se s tím průběžně peru a byl jsem hodně blízko, ale místo policy.STUB jsem tam rval furt policy.FORWARD a proto mi to ne a ne a nefungovalo. 😆

            Ještě mi to nefunguje s tou doménou ... používám to pro 107.10.in-addr.arpa a tam je to cajk to je pro mě to hlavní.

            Ještě jednou moc díky. 👍

            📡 Telekomunikace.cz