Add local_addr configuration for doh-server (#39)
author Ming Aldrich-Gan
()
committer Star Brilliant
()
commit 2332d9b7c1e2575048c2fe158753a1c7e51260e0
tree 74bb0a81cf96fe871b31c114ceb5e6e98b14e6ea
parent 7f5a23584f547f72b3f5d227f972ab97112897d0
Add local_addr configuration for doh-server (#39)

* Add local_addr configuration for doh-server

This commit adds a `local_addr` string value to `doh-server.conf`, specifying the IP address and port from which outgoing calls to upstream DNS resolvers should originate. This value is set as the `udpClient`'s and `tcpClient`'s `Dialer.LocalAddr` when initializing a `NewServer`. If the value is left empty in `doh-server.conf`, it defaults to the first `listen` address (which in turn defaults to `"127.0.0.1:8053"`).

One use case for this would be if `doh-server` is proxying requests to a local DNS resolver (e.g. `unbound` or Pi-hole). Up to version 2.0.0, all DNS queries from `doh-server` are sent from `127.0.0.1` (even if the `listen` address is set to a different loopback IP address), making it hard to distinguish them from all other local DNS queries from the same machine in the query logs.

* Revert defaulting of local_addr to listen address

This commit reverts to the existing behavior when `conf.LocalAddr == ""`, i.e. letting `dns.Client` instantiate its own `Dialer` with the default local address.

* Fixup comment in configuration file

* Log errors from Dialer instantiation (e.g. if LocalAddr port is missing)

* Fixup other comment in configuration file

* Return error and log fatal
doh-server/config.go
doh-server/doh-server.conf
doh-server/main.go
doh-server/server.go