Fórum Root.cz
Hlavní témata => Server => Téma založeno: 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:
#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
-
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/).
-
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).
#named.conf
options {
...
response-policy { zone "rpz.zone"; };
...
};
zone "rpz.zone" {
type master;
file "rpz.zone";
allow-query { none; };
};
# rpz.zone
@ SOA localhost. ROOT.localhost. (1 1h 15m 30d 2h)
NS localhost.
32.199.62.190.35.rpz-ip CNAME .
-
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>
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.
-
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.
-
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.
-
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??:
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)
-
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?
-
A věděli byste jiné řešení blokace AAAA pro dnsmasq?