NetworkManager/DNS
NetworkManager implements several dns clients.
default
The default method adds the DNS servers from the network connections. It gives a warning that "the libc resolver may not support more than 3 nameservers".
This can have issues with some applications (such as aerc or senpai) as the top 3 DNS servers may be inaccessible over your WiFi network.
(for example T-Mobile adds 4 DNS Servers which are only accessible on their network: https://rudism.com/solving-openvpn-dns-issues-on-android-clients/)
dnsmasq
Setting
dns=dnsmasq
in NetworkManager.conf by default will have issues, as NetworkManager will overwrite the /etc/resolv.conf which dnsmasq needs by default.
edit /etc/dnsmasq.conf
resolv-file=/var/run/NetworkManager/no-stub-resolv.conf
and add it to the default runlevel so openrc will autostart it.
issue: if dnsmasq crashes, network related things will totally fail to work.
With the above configuration, it's always crashing on boot... almost-certainly because /var/run/NetworkManager/no-stub-resolv.conf doesn't exist yet. To work around this, edit /etc/init.d/dnsmasq and add
supervisor=supervise-daemon respawn_delay=2 # respawn_max defaults to 10, so this effectively gives NetworkManager 20 seconds to create the file
There might also be a problem with receiving MMS when connected to wifi (e.g. if your carrier's MMS server name will only resolve on their DNS server). There's a config option that tells it to check all DNS servers (instead of the presumed fastest one) which we should probably also set to handle this case.
static
To prevent adding DNS servers by NetworkManager (for example, if you prefer do not use ISP's nameservers), add to /etc/NetworkManager/NetworkManager.conf
[main] dns=none
and add preferred DNS servers to /etc/resolv.conf, for example
nameserver 127.0.0.1