AI:
V `dnsmasq` bohužel neexistuje přímo vestavěná možnost filtrovat logování dotazů na konkrétní domény. Nicméně existují způsoby, jak toho dosáhnout pomocí úprav konfigurace nebo přesměrování logu do externího skriptu, který tyto nežádoucí řádky odstraní před jejich uložením do souboru.
Možná řešení1.
Filtrování logu pomocí `syslog` nebo externího skriptu: Můžete přesměrovat logování `dnsmasq` do souboru a následně použít skript (např. pomocí `grep` nebo `awk`), který z logu odstraňuje řádky obsahující nežádoucí domény. Například můžete upravit `/etc/dnsmasq.conf` nebo parametr spuštění `dnsmasq` tak, aby logoval do specifického souboru:
- Kód: Vybrat vše
dnsmasq --log-queries --log-facility=/var/log/dnsmasq.log
Poté můžete použít skript jako tento ke zpracování logu:
- Kód: Vybrat vše
tail -f /var/log/dnsmasq.log | grep -vE 'microsoft.com|odposlech.tcl.com|cmoud.huacdn.cn' > /var/log/dnsmasq_filtered.log
Tento skript vyfiltruje záznamy, které obsahují nežádoucí domény, a uloží výsledek do jiného logu.
2. Použití `rsyslog` pro filtrování: Pokud `dnsmasq` loguje přes `syslog`, můžete upravit `/etc/rsyslog.conf` nebo `/etc/rsyslog.d/` a vytvořit pravidlo pro filtrování. Například:
- Kód: Vybrat vše
if $msg contains "microsoft.com" then stop
Toto pravidlo zastaví logování zpráv obsahujících doménu `microsoft.com`. Další nežádoucí domény můžete přidat stejným způsobem.
3. Modifikace odpovědi pomocí `dnsmasq.conf`: Už jste zmiňoval, že jste zkoušel odpovědi změnit na `NXDOMAIN`. Možná by stálo za to se podívat na specifická nastavení, jako například použití `server=/doména/#` k filtrování nebo přesměrování dotazů na lokální adresu, což by mohlo snížit frekvenci dotazů:
- Kód: Vybrat vše
address=/odposlech.tcl.com/#
address=/cmoud.huacdn.cn/#
Zkuste různé varianty, abyste zjistil, co funguje nejlépe na specifické dotazy.
4. Vyřazení dotazů pomocí `ipset`: Pokročilejší variantou je nasazení `ipset` pro blokování dotazů na určité domény, což může částečně snížit počet logovaných řádků. Např.:
- Kód: Vybrat vše
ipset create blocklist hash:ip
iptables -I INPUT -m set --match-set blocklist src -j DROP
Poté přidáte IP adresy nebo domény do této sady.
ZávěrNejelegantnějším řešením je použití filtrace logů pomocí `rsyslog` nebo skriptu, protože vám to poskytuje nejvíce flexibility při správě logů a nevyžaduje to zásahy do samotné funkce `dnsmasq`.