Eu encontrei alguns tópicos antigos sobre isso, mas eles parecem ter alguns anos. Por exemplo , openVPN - prioridade DNS de túnel dividido
Estou no Windows.
Estou conectado a uma rede local com DNS local.
Eu uso OpenVPN para me conectar a outra rede, esta rede tem recursos disponíveis em *.example.com.
É possível ter um DNS para *.example.com e outro para todo o resto? Eu sei que posso configurar um DNS local na minha máquina para resolvê-lo ou inserir todos os nomes de host de example.com no meu arquivo de hosts local.
Receio que não seja possível, pois o resolvedor de DNS faz o trabalho independentemente do que você está resolvendo ...
No Windows, há um "recurso" de que a métrica padrão na interface também é usada para a configuração de prioridade (ordem) relacionada ao(s) servidor(es) DNS que deve ser usado para resolver. Portanto, com base em qual servidor DNS (se for local ou em rede acessível por VPN) você planeja usar, você deve configurar a métrica padrão na interface TAP antes que a conexão seja estabelecida.
A única opção poderia ser (depende do comportamento específico do resolvedor) configurar o servidor DNS na VPN para resolver apenas domínios específicos e não fazer recursão. Portanto, uma vez que o servidor DNS não oferece resposta "para o restante das zonas", pode ser possível que o resolvedor de DNS local no sistema possa tentar o próximo servidor DNS. Então, com certeza, uma vez que o servidor DNS da VPN (pelo menos para a visualização) fará a recursão, o outro servidor DNS não será usado ... De qualquer forma, esse comportamento no lado do resolvedor de DNS (cliente) pode variar na implementação :-(.
A maioria dos clientes VPN tem uma configuração para substituir as configurações do servidor DNS quando você abre a conexão VPN, mas isso encaminhará todas as consultas DNS para os servidores DNS corporativos. Ter diferentes encaminhadores condicionais para diferentes domínios só é possível se você executar um servidor DNS na máquina que executa a VPN.
Existem alguns clientes VPN que implementam corretamente o DNS Dividido quando você está conectado à(s) sua(s) VPN(s) OpenVPN. Com esses clientes, posso me conectar a várias VPNs OpenVPN remotas ao mesmo tempo e usar DNSs diferentes para cada domínio em cada conexão VPN.
Para Windows e MacOS, você pode usar Viscosity . Não é grátis, mas funciona.
Nos desktops linux modernos, eu uso o Ubuntu, o DNS dividido é ativado por padrão quando você adiciona os pacotes apropriados para o NetworkManager e seu desktop (o NetworkManager tem toda a mágica para conversar com o systemd-resolved para configurar o dns dividido apropriado em cada conexão).
Parece que tenho que descobrir isso sempre que atualizo o OpenVPN, então aqui está o que descobri no mais recente, até o momento, 2.5.4-I603.
Normalmente, esse problema é resolvido usando a opção "block-outside-dns" forçando todas as consultas DNS por meio da VPN. No meu caso, no entanto, tenho Intranet local em minha casa com dispositivos que quero acessar também, e meu DNS VPN não sabe nada deles.
Meu gateway padrão deve permanecer meu roteador local, mas meu servidor VPN envia as rotas de rede VPN para o cliente para que isso não seja um problema. Eu só preciso que meu DNS da VPN seja consultado antes do meu DNS do ISP para que o endereço IP da VPN seja retornado para os hosts que também possuem endereços IP públicos (DNS dividido) e aqueles que existem apenas na rede VPN.
Para conseguir isso, minha interface OpenVPN deve ter a "Métrica de interface" mais baixa, que não deve ser confundida com a "Métrica de rota", que sempre faço.
Você pode definir a Métrica da Interface na linha de comando e aqui está um excelente exemplo de como fazer isso .
Isso também pode ser feito a partir do arquivo de configuração do cliente OpenVPN:
Infelizmente, mesmo com a versão mais recente do OpenVPN, isso requer privilégios de administrador.