junkurihara / doh-auth-proxy

Local DNS proxy for DNS over HTTPS (DoH), Oblivious DoH (ODoH) and Multiple-relay-based ODoH extension (Mutualized ODoH; MODoH), which additionally supports domain-based filtering and proxy/resolver authentication
https://junkurihara.github.io/dns
MIT License
27 stars 6 forks source link

Feature request: Connectivity test and bootstrap resolvers #28

Closed przemyslaw0 closed 8 months ago

przemyslaw0 commented 1 year ago

I thinking on using doh-auth-proxy with systemd and in some Windows 10 PCs as a service.

I want to use a list of 2 ODoH relays and 10 ODoH servers, sometimes some servers are down and I cannot predict this, if using doh-auth-proxy with systemd won't work if one of the servers are down.

A good feature would be an automatic network connectivity test: The app would wait until the network is up and a check in the relays/servers would be performed to select only online relays/servers. This option would make doh-auth-proxy work fine with systemd or as a Windows service. This feature is implemented in dnscrypt-proxy: https://github.com/DNSCrypt/dnscrypt-proxy/blob/master/dnscrypt-proxy/example-dnscrypt-proxy.toml#L282-L300

Another feature that would be good to be implemented is the ability of using bootstrap resolvers: If using doh-auth-proxy alone as a DNS forwarder for the network, it couldn't find any DNS server to resolve the hostnames of relays/servers. This feature is also implemented in dnscrypt-proxy: https://github.com/DNSCrypt/dnscrypt-proxy/blob/master/dnscrypt-proxy/example-dnscrypt-proxy.toml#L234-L279

These are my suggestions.

junkurihara commented 1 year ago

Hi @przemyslaw0

Thanks for your suggestions!

For the network connectivity test, doh-auth-proxy has a feature of periodic health check to check the connectivity between the proxy and the destination. But as you suggested, it simply alerts the disconnection, and it is not used to update the internal list of relays and destination resolvers. So like the dnscrypt-proxy, the dynamic updates of healthy relays and destination would be nice.

For the feature of bootstrap resolvers, you can configure it with doh-auth-proxy as with dnscrypt-proxy. But unlike dnscrypt-proxy, only one resolver address can be specified, and doh-auth-proxy doesn't use the system resolver even if not specified (Default is Google DNS). https://github.com/junkurihara/doh-auth-proxy/blob/ee65688e9ace633a878cb7e78558eb4bcb67cce5/doh-auth-proxy.toml#L14-L15

przemyslaw0 commented 1 year ago

@junkurihara

Thanks.

I'm thinking on using doh-auth-proxy as a service in both Windows and Linux, network connectivity would be very good.

junkurihara commented 8 months ago

In v0.3.0, we implemented a periodic health check and now we can set multiple booststrap resolvers ( #43 )