Fórum Root.cz

Hlavní témata => Server => Téma založeno: Hamparle 23. 08. 2020, 10:29:41

Název: DNS server - změna dle cílové IP *
Přispěvatel: Hamparle 23. 08. 2020, 10:29:41
Potřeboval bych nějakém DNS serveru (konkrétně dnsqmasq, pokud to umí) tuhle specifickou věc.
Dám příklad, jak jsem si myslel, že to bude fungovat:
Kód: [Vybrat]
#konfigurační soubor dnsmasq.conf
address=/cpex.cz/
address=/35.191.123.123/
nebojinádirektiva=/35.191.123.123/
První řádek  klasicky ukáže prostředníček tomu, kdo by se ptal na nějakou sprostou doménu.
Druhý řádek jsem si myslel že bude fungovat tak, že ukáže prostředníček tomu, kdo se zeptá na některou z domén guardedschool.com venusgloria.com laughablelizards.com bravecalculator.com troubledtail.com grandmotherunit.com ). Vysvětlím: Tyto domény leží na jedné stejné IP adrese. Když klient se  tohoto dns serveru zeptá na doménu,  tak mu vnější dns server vrátí odpověď - v těchto pěti případech stejnou IP. A teď to kouzlo, dns server pozná podle řádku v konfiguraci, že se tato ip nachází v direktivě a tedy udělá to samé jako v případě idvert.cz, pošle mu místo skutečné IP adresy velké čtyři nuly - rozdíl je v tom že v prvním případě (doména) ani dns server nemusí ptát vnějšího serveru a rovnou ví, že má udělat s dotazem klienta krátký proces, zatímco u tohoto případu (zapsáno pomoci IP) se server musí zeptat DNS vnějšího serveru až podle shody IP odpovědi s IP v direktivě se odmlčí.

Pro kverulanty a rejpaly:
- Vím o riziku, že čistě hypoteticky tímto zápisem mohu odříznout nějakou nevinou doménu, ale považuji to za hodně nepravědodobné
- Samozřejmě že to jde řešit  pomocí iptables nebo rout, ale konkrétně mě jde o DNS řešení.
- Šlo by to i řešit, že zi zasviním  konfigurační soubor dns serveru desítkami domén
Název: Re:DNS server - změna dle cílové IP *
Přispěvatel: Ondřej Caletka 23. 08. 2020, 10:40:12
Dnsmasq toto nejspíš nepodporuje.

Obecně je možné něco takového zařídit třeba pomocí RPZ (https://www.root.cz/clanky/dns-rpz-mocny-firewall-nejen-pro-blokovani-hazardu/).
Název: Re:DNS server - změna dle cílové IP *
Přispěvatel: honzahommer 23. 08. 2020, 12:07:16
V DnsMasq to nepůjde, ale BIND (https://tools.ietf.org/id/draft-vixie-dnsop-dns-rpz-00.html#rfc.section.4.3 (https://tools.ietf.org/id/draft-vixie-dnsop-dns-rpz-00.html#rfc.section.4.3)) asi nějak takto (nezkoušel jsem).
Kód: [Vybrat]
#named.conf
options {
    ...
    response-policy { zone "rpz.zone"; };
    ...
};

zone "rpz.zone" {
    type master;
    file "rpz.zone";
    allow-query { none; };
};

Kód: [Vybrat]
# rpz.zone
@ SOA localhost. ROOT.localhost. (1 1h 15m 30d 2h)
NS  localhost.
32.199.62.190.35.rpz-ip CNAME .
Název: Re:DNS server - změna dle cílové IP * - vyřešeno direktivou alias
Přispěvatel: Hamparle 23. 08. 2020, 15:33:56
Tak vyřešeno direktivou alias=35.190.62.199,0.0.0.0 (BTW tenhle zápis natvrdo vrací 0.0.0.0, víte, jestli tam jde nějak udělat aby to vracelo NXDOMAIN ? -- Jako v případě address address=/connect.facebook.net/ vs address=/performax.cz/# - křížek znamená čtyři nule nebo osm nul )


:EDIT: DNSMasq umí vše:
-B, --bogus-nxdomain=<ipaddr>
Kód: [Vybrat]
alias=35.190.62.199,99.0.0.99
alias=135.222.62.199,99.0.0.99
bogus-nxdomain=99.00.00.99

vyzkoušeno na https://ipinfo.io/35.190.62.199

Díky za odpovědi, nicméně se mi zdá to RPZ příliš komplikované na to co chci.



Název: Re:DNS server - změna dle cílové IP *
Přispěvatel: Hamparle 23. 08. 2020, 15:54:33

Pardon správně je ten doplnující dotaz na nxdomain takhle (čili žádné oslí můstky přes alias, stačí přímo danou IP napsat do direktivy bogus-nxdomain). Třeba to pár milionům lidem pomůže. Píšu opravenou verzi jak je to správně.

bogus-nxdomain=35.190.62.199

Nicméně tak jako tak se doporučuje vracet  neplatnou IP místo NXDOMAIN.
Název: Re:DNS server - změna dle cílové IP *
Přispěvatel: czechsys 24. 08. 2020, 08:08:06
Misto neplatne IP bych vracel kdyz uz, tak 127.0.0.1.

A krome bind reseni lze podobne veci resit nasazenim treba dnsdist pred dns serverem.
Název: Re:DNS server dnsmasq - ignorace AAAA dotazů
Přispěvatel: Hamparle 27. 08. 2020, 23:50:18
Pokračuji v rozjetém vlaku.
Lze v démonu dnsmasq ignorovat AAAA dotazy ? Že je to ani nebude forwardovat.
Lze to nějak normálně nastavit než tímto trikem, co jsem našel někde??:
Kód: [Vybrat]
address=/tld/8.8.8.8 # adresa reálného dns
server=/tld/::

Misto neplatne IP bych vracel kdyz uz, tak 127.0.0.1.
Uniká mi smysl tohoto kroku. To se mi zdá kravina, to přece bude zanařáďovat stroj? (Mimochodem, jak si s tím DNS klient operačních systémů nebo prohlížečů poradí? Podle mě to musí vyhodnotit jako nesmysl, když jim vzdálený DNS server vrátí 127.0.0.1)
Název: Re:DNS server - změna dle cílové IP *
Přispěvatel: Hamparle 29. 08. 2020, 15:36:11
Citace
Kód: [Vybrat]
address=/tld/8.8.8.8 # adresa reálného dns
server=/tld/::
Dodatek. Ten trik (zdroje jsem našel zde "solved-disable-aaaa-response-for-a-given-domain" (https://discourse.pi-hole.net/t/solved-disable-aaaa-response-for-a-given-domain/13143/7)) mi nefunguje. "Rozbije to internet".Na dotazy to vrací refused. Zkoušel jsem různé pořadí, prohodit address a server...

Funguje tentro trik někomu jinému?
Název: Re:DNS server - změna dle cílové IP *
Přispěvatel: Hamparle 31. 08. 2020, 15:06:31
A věděli byste jiné řešení blokace AAAA pro dnsmasq?