I have set up dnsmasq and dnxproxy for DNS over TLS, DNS over HTTPS, and all the other ones it supports. I also uploaded and installed the LuCi app for it.
What I am unsure of, is how the bootstrap, fallback and upstream servers are supposed to interact with each other, and particularly when there are multiple servers per each category. For example...
config dnsproxy 'servers'
list bootstrap 'tls://9.9.9.9'
list fallback 'tls://8.8.8.8'
list upstream 'https://base.dns.mullvad.net/dns-query'
So from what I understand, the "bootstrap" server will be used to resolve any DoH "upstream" server, and then if the "upstream" ever fails, then it will resort to the "fallback". However, what about with something like this...
config dnsproxy 'servers'
list bootstrap 'tls://9.9.9.9'
list bootstrap 'tls://149.112.112.112'
list upstream 'https://base.dns.mullvad.net/dns-query'
list upstream 'https://dns.adguard-dns.com/dns-query'
list fallback 'tls://8.8.8.8'
list fallback 'tls://8.8.4.4'
I am wondering how the logic works with multiple servers specified for each bootstrap, upstream, and fallback category, and if this configuration is even valid. I'm assuming it is since the LuCi app generated it, but it's a little bit unclear about what logic it applies to this list...
Is there some kind of branched-iteration? Because that seems like it would get complicated to grasp... Assuming that any DNS request will iterate through the list of upstream servers, trying the first one listed first? Then, depending on if it's a DoH server, I assume it will then iterate over the list of boostrap servers until it gets an answer back. Then, if it goes through the list of bootstrap servers and doesn't get an answer, then will the first upstream server then iterate through the list of fallback servers to attempt to get an answer? Because it would seem to me if this was the case, that iterating through the upstream servers would be pointless since one of the servers in the fallback would surely succeed before it could ever reach that point?
I don't think that would be a particularly good system so I am wondering instead if each bootstrap, upstream and fallback has a respective counterpart, such as...
config dnsproxy 'servers'
list bootstrap 'upstream 1's bootstrap'
list bootstrap 'upstream 2's bootstrap'
list upstream 'upstream 1'
list upstream 'upstream 2'
list fallback 'upstream 1's fallback'
list fallback 'upstream 2's fallback'