DNS server - změna dle cílové IP *

Hamparle

  • ****
  • 348
  • junior developer ucho
    • Zobrazit profil
    • E-mail
DNS server - změna dle cílové IP *
« kdy: 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


Re:DNS server - změna dle cílové IP *
« Odpověď #1 kdy: 23. 08. 2020, 10:40:12 »
Dnsmasq toto nejspíš nepodporuje.

Obecně je možné něco takového zařídit třeba pomocí RPZ.

Re:DNS server - změna dle cílové IP *
« Odpověď #2 kdy: 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) 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 .

Hamparle

  • ****
  • 348
  • junior developer ucho
    • Zobrazit profil
    • E-mail
Re:DNS server - změna dle cílové IP * - vyřešeno direktivou alias
« Odpověď #3 kdy: 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.



« Poslední změna: 23. 08. 2020, 15:38:59 od Hamparle »

Hamparle

  • ****
  • 348
  • junior developer ucho
    • Zobrazit profil
    • E-mail
Re:DNS server - změna dle cílové IP *
« Odpověď #4 kdy: 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.
« Poslední změna: 23. 08. 2020, 15:58:03 od Hamparle »


Re:DNS server - změna dle cílové IP *
« Odpověď #5 kdy: 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.

Hamparle

  • ****
  • 348
  • junior developer ucho
    • Zobrazit profil
    • E-mail
Re:DNS server dnsmasq - ignorace AAAA dotazů
« Odpověď #6 kdy: 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)

Hamparle

  • ****
  • 348
  • junior developer ucho
    • Zobrazit profil
    • E-mail
Re:DNS server - změna dle cílové IP *
« Odpověď #7 kdy: 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") 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?

Hamparle

  • ****
  • 348
  • junior developer ucho
    • Zobrazit profil
    • E-mail
Re:DNS server - změna dle cílové IP *
« Odpověď #8 kdy: 31. 08. 2020, 15:06:31 »
A věděli byste jiné řešení blokace AAAA pro dnsmasq?