Fórum Root.cz

Hlavní témata => Server => Téma založeno: waclaw 23. 06. 2020, 21:58:22

Název: Knot resolver a překlad blokovaných domén
Přispěvatel: waclaw 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!
Název: Re:Knot resolver a překlad blokovaných domén
Přispěvatel: vcunat 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.
Název: Re:Knot resolver a překlad blokovaných domén
Přispěvatel: waclaw 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!
Název: Re:Knot resolver a překlad blokovaných domén
Přispěvatel: vcunat 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 (https://www.nic.cz/odvr/) ("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.
Název: Re:Knot resolver a překlad blokovaných domén
Přispěvatel: vcunat 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)
Název: Re:Knot resolver a překlad blokovaných domén
Přispěvatel: waclaw 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é.
Název: Re:Knot resolver a překlad blokovaných domén
Přispěvatel: vcunat 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í.
Název: Re:Knot resolver a překlad blokovaných domén
Přispěvatel: Filip Jirsák 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á.
Název: Re:Knot resolver a překlad blokovaných domén
Přispěvatel: vcunat 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ší).
Název: Re:Knot resolver a překlad blokovaných domén
Přispěvatel: waclaw 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í.
Název: Re:Knot resolver a překlad blokovaných domén
Přispěvatel: vcunat 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.
Název: Re:Knot resolver a překlad blokovaných domén
Přispěvatel: Filip Jirsák 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.
Název: Re:Knot resolver a překlad blokovaných domén
Přispěvatel: AoK 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.
Název: Re:Knot resolver a překlad blokovaných domén
Přispěvatel: waclaw 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.
Název: Re:Knot resolver a překlad blokovaných domén
Přispěvatel: SB 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.
Název: Re:Knot resolver a překlad blokovaných domén
Přispěvatel: vcunat 01. 07. 2020, 10:04:58
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 [...]  Asi to tam vrátíme zpět, ale ještě nemám rozmyšleno [...]

Pro referenci, ta změna se nekoná, alespoň ne teď brzy:
https://gitlab.nic.cz/knot/knot-resolver/-/merge_requests/1015#note_160616
Název: Re:Knot resolver a překlad blokovaných domén
Přispěvatel: Filip Jirsák 09. 07. 2020, 13:04:23
Tak už to budete mít vyřešené i pro ODVR od CZ.NICu: Otevřený resolver od CZ.NIC vypíná ochranu proti DNS Rebinding a úpravuje DoH (https://www.root.cz/zpravicky/otevreny-resolver-od-cz-nic-vypina-ochranu-proti-dns-rebinding-a-upravuje-doh/).