Para obter o dnsmasq controlado pelo D-Bus que o NetworkManager executa para usar diferentes servidores DNS, existem as seguintes opções (obviamente, ajuste domínios e endereços IP nos exemplos):
- Adicione um arquivo ao
/etc/NetworkManager/dnsmasq.d
que define o servidor DNS para a sub-rede desejada:myvpn-server.conf
pode conterserver=/myvpn.domain.com/10.8.4.9
. Isso sempre será respeitado pelo dnsmasq mesmo quando não estiver conectado à VPN, nesse caso as consultas para esses domínios devem expirar. Desvantagem é que você precisa especificar o endereço IP estaticamente, a vantagem é a simplicidade - Use o D-Bus para falar diretamente com o dnsmasq e avisar para atualizar os servidores usando algo como
sudo dbus-send --system --print-reply --dest=org.freedesktop.NetworkManager.dnsmasq /uk/org/thekelleys/dnsmasq uk.org.thekelleys.SetDomainServers "array:string:192.168.0.1,/myvpn.domain.com/10.8.4.9"
. Isso pode ser roteirizado quando a VPN se conecta. Você precisaria pesquisar os servidores DNS existentes (o192.168.0.1
no meu exemplo) pelo D-Bus ou usandonm-cli
- Use o D-Bus para falar com o próprio Network Manager e diga para atualizar os servidores. Aqui está um exemplo de fazer isso usando o Python, que exigiria algum trabalho para incluir os servidores atuais.
Estou usando a primeira opção e apenas tentei versões preliminares dos outros dois