Knot resolver a překlad blokovaných domén

Knot resolver a překlad blokovaných domén
« kdy: 23. 06. 2020, 21:58:22 »
Ahoj,

CZ.NIC nebo Cloudflare blokují překlad některých domén. Jde nějak nastavit knot resolver, aby refused request byl přeložen jiným resolverem?
Mám nastaveno několik resolverů (CZ.NIC, Cloudflare, Google), pokud je inkriminovaná doména přeložena tím, který jí blokuje, tak je prostě nedostupná.

Díky!
« Poslední změna: 23. 06. 2020, 22:47:00 od Petr Krčmář »


vcunat

  • ***
  • 121
    • Zobrazit profil
    • E-mail
Re:Knot resolver a překlad blokovaných domén
« Odpověď #1 kdy: 24. 06. 2020, 23:36:25 »
To blokování mi přijde podezřelé.  Ani jeden z těchto dvou by defaultně neměl blokovat nic (neveřejné adresy nepočítám, ty stejně běžně použitelné nejsou).  Návratový kód REFUSED by mi přišel obzvláště podezřelý, ale to jste asi na mysli neměl.

Pro forwarding Knot Resolveru jde "najednou" nastavit až čtyři adresy, kde při některých druzích chyb se skutečně zkouší další adresy, ale pořadí zkoušení není fixní a snaží se upřednostňovat nejlepší adresy (dle rychlosti a kvality odpovědí).  Nevím o žádném jiném řešení uvnitř, to spíš u klientů jde nastavit něco jako primární a sekundární což se možná takto chová.

Vyvíjím Knot Resolver.

Re:Knot resolver a překlad blokovaných domén
« Odpověď #2 kdy: 25. 06. 2020, 07:14:41 »
CZ.NIC blokuje všechny privátní adresy dle https://www.nic.cz/odvr/ včetně localhostu. U Cloudflare si už nepamatuju, které to byly.

Knot Resolver mám nastaven na tyto forwardy...
Kód: [Vybrat]
policy.add(policy.all(policy.TLS_FORWARD({
        { '193.17.47.1', hostname='odvr.nic.cz' },
        { '2001:148f:ffff::1', hostname='odvr.nic.cz' },
        { '1.1.1.1', hostname='cloudflare-dns.com' },
        { '2606:4700:4700::1111', hostname='cloudflare-dns.com' },
        { '8.8.8.8', hostname='dns.google' },
        { '2001:4860:4860::8888', hostname='dns.google' },
})))

REFUSED to opravdu vrací...
Kód: [Vybrat]
# nslookup fuf.me 193.17.47.1
Server:         193.17.47.1
Address:        193.17.47.1#53

** server can't find fuf.me: REFUSED
Pokud CZ.NIC resolver zakomentuji, fuf.me se přeloží.

Citace
Pro forwarding Knot Resolveru jde "najednou" nastavit až čtyři adresy
Tohle se udělá jak? Nebo je to myšleno tak, jak už to mám?

A řešení, že bych vyjmenované domény nastavoval někde natvrdo mi nepřijde správné.

Díky!

vcunat

  • ***
  • 121
    • Zobrazit profil
    • E-mail
Re:Knot resolver a překlad blokovaných domén
« Odpověď #3 kdy: 25. 06. 2020, 08:25:52 »
Pokud CZ.NIC resolver zakomentuji, fuf.me se přeloží.

... přeloží se na 127.0.0.1, tedy localhost.  To jsou ty neveřejné adresy o kterých jsem psal, takové opravdu blokované v ODVR jsou ("rebinding").  1.1.1.1 je neblokuje.  Vy máte nějaké využití pro neveřejné adresy ve veřejném DNS?

S tím REFUSED kódem se omlouvám, neuvědomil jsem si že ten rebinding je vyřešen s ním.

vcunat

  • ***
  • 121
    • Zobrazit profil
    • E-mail
Re:Knot resolver a překlad blokovaných domén
« Odpověď #4 kdy: 25. 06. 2020, 08:41:59 »
Knot Resolver mám nastaven na tyto forwardy...
Kód: [Vybrat]
policy.add(policy.all(policy.TLS_FORWARD({
        { '193.17.47.1', hostname='odvr.nic.cz' },
        { '2001:148f:ffff::1', hostname='odvr.nic.cz' },
        { '1.1.1.1', hostname='cloudflare-dns.com' },
        { '2606:4700:4700::1111', hostname='cloudflare-dns.com' },
        { '8.8.8.8', hostname='dns.google' },
        { '2001:4860:4860::8888', hostname='dns.google' },
})))

Mimochodem, s tímhle se (mi) kresd ani nenačte:
Kód: [Vybrat]
lib/knot-resolver/kres_modules/policy.lua:149: TLS_FORWARD supports at most four targets (in a single call)


Re:Knot resolver a překlad blokovaných domén
« Odpověď #5 kdy: 25. 06. 2020, 13:01:53 »
Knot Resolver mám nastaven na tyto forwardy...
Kód: [Vybrat]
policy.add(policy.all(policy.TLS_FORWARD({
        { '193.17.47.1', hostname='odvr.nic.cz' },
        { '2001:148f:ffff::1', hostname='odvr.nic.cz' },
        { '1.1.1.1', hostname='cloudflare-dns.com' },
        { '2606:4700:4700::1111', hostname='cloudflare-dns.com' },
        { '8.8.8.8', hostname='dns.google' },
        { '2001:4860:4860::8888', hostname='dns.google' },
})))

Mimochodem, s tímhle se (mi) kresd ani nenačte:
Kód: [Vybrat]
lib/knot-resolver/kres_modules/policy.lua:149: TLS_FORWARD supports at most four targets (in a single call)

Jo to bude tím, že jsem si nic.cz dočasně zakomentoval, takže mám jen 4 :)

Veřejné DNS na localhost se využívá např. při vývoji webů. Pro některé věci je třeba reálná doména, a aby si ji každý vývojář nemusel nastavovat na svém stroji sám, tak se použije veřejná. Blokování localhostu mi přijde zbytečné.

vcunat

  • ***
  • 121
    • Zobrazit profil
    • E-mail
Re:Knot resolver a překlad blokovaných domén
« Odpověď #6 kdy: 25. 06. 2020, 14:10:26 »
Oh, každý vývojář má svou instanci webu na localhostu a všichni najednou se na něj přesměrují přes nastavení v globálním DNS?  Takové použití mě opravdu nenapadlo.

No osobně bych myslel, že s rozumnými dnešními prohlížeči už blokování rebindingu není užitečné, ale změnu na cz.nic ODVR nevidím teď realisticky a ani jsem to detailně nezkoumal - CORS apod. nejspíš znáte lépe než já :)


K věci: dříve v Knot Resolveru při kombinaci přeposílání a REFUSED byly zkoušeny i další adresy v seznamu, ale teď díky Vám vidím že ta vlastnost v 5.1.0 neúmyslně vypadla díky interakci jedné změny se starší chybou v související logice.  Asi to tam vrátíme zpět, ale ještě nemám rozmyšleno jak ke všem situacím přistoupit - jak velká šance v různých kombinacích je že posláním na další adresu dostaneme lepší odpověď, aby nešlo skoro vždy o plýtvání.

Re:Knot resolver a překlad blokovaných domén
« Odpověď #7 kdy: 25. 06. 2020, 14:57:11 »
Vy máte nějaké využití pro neveřejné adresy ve veřejném DNS?
Když se neveřejné IPv4 adresy používají kvůli nedostatku veřejných IPv4 adres. Stejně chci k zařízením s takovou IPv4 adresou přistupovat přes DNS název – k serverům, routerům, webkamerám, NASům apod. Ne vše ještě podporuje IPv6. Dělat kvůli tomu split-horizon DNS je práce navíc, je pak problém, když přecházíte mezi sítěmi a někde zůstane nakešovaná negativní odpověď. Pokud někdo ten DNS název zjistí a veřejném DNS si to přeloží na privátní IPv4 adresu, ať si znalost té privátní IPv4 adresy užije, mně to nevadí, že ji zná.

vcunat

  • ***
  • 121
    • Zobrazit profil
    • E-mail
Re:Knot resolver a překlad blokovaných domén
« Odpověď #8 kdy: 25. 06. 2020, 15:19:47 »
No, OK.  Když jsme u toho, pokud jde o Turris, tak tohle použití je celkem zadarmo, protože všechna DHCP jména jde lokálně vkládat do DNS jedním checkboxem (defaultně do *.lan ale použití vlastněné domény je ještě lepší).

Re:Knot resolver a překlad blokovaných domén
« Odpověď #9 kdy: 25. 06. 2020, 19:29:04 »
Můj záměr byl, zda jde knot resolver nastavit tak, že pokud aktuálně použitý resolver DNS název z nějakého důvodu nepřeloží, tak použít jiný ze seznamu definovaných. Takových domén asi nebude mnoho, takže by to nemuselo nijak vytěžovat knot, pokud jde o tohle. Fuknce by mohla být volitelná.
To, že různé veřejné DNS služby blokují různé domény, tomu se asi nevyhneme, ale bylo by dobré to umět nějak vyřešit a nebrat negativní odpověď jednoho resolveru jako definitivní.

Co se týká zmínky o Turrisu, tak nevím o čem je přesně řeč. Píšu z pohledu uživatele Knot Resolveru 5.1 na FC32.

...jak velká šance v různých kombinacích je že posláním na další adresu dostaneme lepší odpověď, aby nešlo skoro vždy o plýtvání.
« Poslední změna: 25. 06. 2020, 19:33:57 od waclaw »

vcunat

  • ***
  • 121
    • Zobrazit profil
    • E-mail
Re:Knot resolver a překlad blokovaných domén
« Odpověď #10 kdy: 25. 06. 2020, 19:36:55 »
Záleží co je to "negativní odpověď", tedy jak se to blokování dělá.  Někteří například strčí adresu web-serveru kde se zobrazí "chtěli jste navštívit nebezpečnou adresu".  REFUSED je pro tohle rozumné, dobře poznatelné.  Konfigurovatelnost tohoto chování zatím plánována nebyla, rozhodně to nevidím v krátkém horizontu.

Re:Knot resolver a překlad blokovaných domén
« Odpověď #11 kdy: 26. 06. 2020, 08:50:08 »
Takových domén asi nebude mnoho
Nejčastější negativní odpovědí bude „název neexistuje“, NXDOMAIN. Bude se vracet např. pokaždé, když někdo při psaní adresy do prohlížeče udělá překlep a adresa nebude existovat. Neříkám, že by to muselo server moc vytěžovat. Spíš jde o to, že hledáte obecné řešení vašeho konkrétního problému, ale zatím je to zobecnění docela vágní a zdá se, že ignoruje souvislosti.

Podle mne je pro vás nejjednodušší přestat používat ODVR CZ.NICu. Pokud vím, např. žádný z poskytovatelů „4x“ DNS resolverů (Cloudflare, Google, IBM) RFC1918 adresy neblokuje, takže alternativy jsou. Já ODVR CZ.NICu právě kvůli tomu blokování RFC1918 nepoužívám. Protože sice chápu, co se tím sleduje, a že starší doporučení tvrdí, že se RFC1918 nemají objevit ve veřejné DNS, ale v současné situaci, kdy veřejné IPv4 adresy nejsou, považuji privátní adresy ve veřejném DNS za nejmenší zlo – a veřejný DNS resolver by je podle mne neměl blokovat, rozhodnutí by mělo být na koncové síti.

Re:Knot resolver a překlad blokovaných domén
« Odpověď #12 kdy: 26. 06. 2020, 11:27:15 »
použití privátních IP adres pod veřejnými doménami vidím čím dál častěji pro interní systémy uvnitř firem. Dříve se používaly neobsazené generické domény (typu .dev, .internal či zkratky firem), ale se ale začaly rozšiřovat top level domény, tohle začalo být překážkou a mohlo dojít k nefunknčosti.

Další rána je poměrně striktní chování prohlížečů kolem TLS, není snadné si vystavit interní CA, aby ho prohlížeč bral vážně, takže se používají TLS certifikáty vystavené na veřejné domény (klidně wildcard, aby nedošlo k vyzrazení těch domén) a domény se směrují přes privátní rozsahy do intranetu.

Spousty prohlížečů, mobilních telefonů a dalších zařízení, které uživatel dneska používá a chce s nimi fungovat i v interních systémech neumí jednoduše a spolehlivě přetížit nameservery a volá si svoje.

Řešením by mohlo být si zřídit vlastní AS a používat veřejné rozsahy ip adres routovaných pouze interně, ale to neni pro spousty společností dostupné.

Je čím dále těžší mít pro malé společnosti interní systémy, které nejsou v internetu.

Re:Knot resolver a překlad blokovaných domén
« Odpověď #13 kdy: 26. 06. 2020, 13:37:49 »
Podle mne je pro vás nejjednodušší přestat používat ODVR CZ.NICu. Pokud vím, např. žádný z poskytovatelů „4x“ DNS resolverů (Cloudflare, Google, IBM) RFC1918 adresy neblokuje, takže alternativy jsou. Já ODVR CZ.NICu právě kvůli tomu blokování RFC1918 nepoužívám. Protože sice chápu, co se tím sleduje, a že starší doporučení tvrdí, že se RFC1918 nemají objevit ve veřejné DNS, ale v současné situaci, kdy veřejné IPv4 adresy nejsou, považuji privátní adresy ve veřejném DNS za nejmenší zlo – a veřejný DNS resolver by je podle mne neměl blokovat, rozhodnutí by mělo být na koncové síti.

Přesně tak to teď mám nastaveno, CZ.NIC jsem zakomentoval.

Můj dotaz byl míněn obecně, protože do protokolu DNS zase tak detailně nevidím.
Hledal jsem řešení, jak ty blokace obejít a vypadá, že aktuálně je nejjednodušší pouze dané resolvery nepoužívat.

SB

  • ****
  • 347
    • Zobrazit profil
    • E-mail
Re:Knot resolver a překlad blokovaných domén
« Odpověď #14 kdy: 26. 06. 2020, 15:02:56 »
...a veřejný DNS resolver by je podle mne neměl blokovat, rozhodnutí by mělo být na koncové síti.

Však není nikde napsané, že CZ.NIC nemůže poskytovat dvoje adresy DNS - jedny blokující, druhé neblokující. Stejně tam už teď asi mají hen ty balancéry s více servery.