I solved my IPv6 and DNS problem.
The problem:
I didn't have IPv6 before, I used Adguard Home on a mini-PC for IPv4, and everything worked. After setting up to receive (dynamic) IPv6 from the provider, I found that the devices that run on IPv6 stopped accessing AdGuard Home. These devices accessed the router's DNS, and the router used some kind of global DNS (possibly the provider's DNS) instead of my Adguard Home.
Solution:
The devices generate Link-Local (fe80::) addresses for themselves. But the UI does not allow you to specify such an address as an IPv6 DNS address (I suppose there are reasons for this).
But the UI allows you to specify a ULA (Unique Local Address (fd**::)) IPv6. Currently, by default, Keenetic does not enable the distribution of ULA addresses to devices. To enable this, run the command (on the <router address>/a or <router address>/ControlPanel/cli page) :
OR to assign a random ULA IPv6 prefix:
ipv6 local-prefix default
OR to assign a specific ULA IPv6 prefix:
ipv6 local-prefix fd00:caba::/48
(I found the commands here)
Don't forget to save the changes:
system configuration save
Find the IPv6 address on the device (mini-pc/Raspberry), (for example, using ifconfig) and enter this IP in:
My Networks and Wi-Fi → Home segment → DNS IPv6 server 1
After that, devices on the local network will receive IPv6 DNS belonging to the device with AdGuard Home and send DNS requests directly to it.