Não acredito que haja uma maneira de impedir que isso aconteça, além de atribuir estaticamente os servidores DNS na conexão VPN.
Para alterar a ordem na qual os servidores DNS são consultados, supõe-se que seja possível alterar a ordem de ligação da interface conforme /superuser//a/314379/120267 , mas isso não parece afetar as conexões VPN em meus testes pessoais no Windows 7; Confirmei que minha conexão VPN é constantemente adicionada ao topo da HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Linkage\Bind
lista, independentemente das configurações da ordem de ligação da interface.
No entanto, você pode redefinir as alterações no DNS após o estabelecimento da conexão VPN.
Coletando informação
Abra um prompt de comando ( Start
-> Run...
-> cmd
) e execute netsh interface ipv4 show dnsservers
. Você verá uma saída semelhante à seguinte:
Configuration for interface "My VPN"
Statically Configured DNS Servers: 11.22.33.44
55.66.77.88
...
Configuration for interface "Local Network Connection"
DNS servers configured through DHCP: 192.168.0.1
192.168.0.2
...
Você precisa do nome da interface para a VPN e, opcionalmente, o primeiro servidor DNS da sua conexão não VPN . Neste exemplo, eles são My VPN e 192.168.0.1 , respectivamente.
Configurando Tudo
Opção 1: desativar o DNS da VPN
Supondo que você não precise dos servidores DNS da sua VPN, basta executar o seguinte no prompt de comando:
netsh interface ipv4 delete dnsservers name="<Interface Name>" address=all validate=no
Eg: netsh interface ipv4 delete dnsservers name="My VPN" address=all validate=no
Se você executar netsh interface ipv4 show dnsservers
novamente, verá que os servidores DNS associados à VPN foram removidos; os servidores DNS da sua conexão não VPN serão usados para resolver nomes de host.
Opção 2: Suplementar o DNS da VPN
Se você precisar dos servidores DNS da sua VPN para resolver nomes de host da intranet, execute o seguinte no prompt de comando:
netsh interface ipv4 add dnsservers name="<Interface Name>" address=<Non-VPN DNS server> index=1 validate=no
Eg: netsh interface ipv4 add dnsservers name="My VPN" address=192.168.0.1 index=1 validate=no
Nesse caso, netsh interface ipv4 show dnsservers
mostrará que o primeiro servidor DNS da sua conexão não VPN foi adicionado ao topo da lista dos servidores DNS da sua VPN. Ele será usado para resolver os nomes de host primeiro e, se não der certo, volte a usar os servidores DNS regulares da sua VPN.
Eu tive um problema parecido; a conexão com um servidor VPN substituiria o DNS da minha estação de trabalho (cliente VPN remoto) para que o DNS da LAN local fosse obscurecido. Descrevi o problema mais detalhadamente no lado do Stackoverflow antes de me indicar que deveria ter postado aqui.
Depois de ler esse encadeamento, é evidente que a substituição não pode ser evitada usando a configuração do cliente OpenVPN. Minha solução foi adicionar um arquivo em lotes no diretório de configuração do OpenVPN que é executado quando a conexão OpenVPN é formada. Se o arquivo OVPN for chamado company.ovpn, o arquivo executado na conexão precisará ser nomeado company_up.bat.
Aumentei o arquivo alguns desde a versão que publiquei para minha pergunta no StackOverflow hoje à noite. Agora fica assim:
1: Um truque para aguardar alguns segundos antes de continuar. A versão mais recente (2.3) do cliente OpenVPN ignoraria o DNS e as alterações de rota se executadas sem demora.
2: Defina o DNS da conexão VPN para apontar para o host local. Eu tenho um resolvedor (eu uso o SimpleDNS Plus ) em execução no host local que encaminha as consultas ao domínio da empresa para o servidor DNS da empresa pela VPN e tudo o mais para o servidor DNS da LAN local. Observe que não foi possível usar um resolvedor de LAN local para encaminhar as consultas do domínio da empresa para o DNS da empresa pela VPN, pois o ponto de extremidade da VPN está no host local. O nome da conexão ("Conexão local 4") foi determinado no prompt de comando via "ipconfig / all".
3: O servidor VPN da empresa está configurado para rotear todo o tráfego de saída através da VPN e, ao mesmo tempo, restringir as conexões SSH de saída (para a Internet). Isso entrou em conflito com meu fluxo de trabalho e, primeiro, estou excluindo a rota "0.0.0.0 netmask 0.0.0.0" ...
4: .. e, em seguida, adiciono novamente a rota 0.0.0.0/0 para apontar para o gateway da LAN local e defino sua métrica (peso) como 1000 como um catch-all para todo o tráfego que não é roteado de outra forma.
5: Sem "saída 0", o OpenVPN cospe um aviso de erro do script falhou (com um status de saída 1).
Espero que isso seja útil para alguém .. está funcionando razoavelmente bem para mim (não há necessidade de fazer ajustes de rota ou DNS manualmente toda vez que abro uma conexão).
fonte
Pelo menos não há uma maneira fácil de fazer isso.
Você pode adicionar entradas ao arquivo hosts (
C:\Windows\System32\drivers\etc\hosts
). Esse arquivo contém mapeamentos de nomes de host para endereços IP e é preferível às solicitações de DNS.fonte
Você pode verificar o status da caixa de seleção 'Usar gateway padrão na rede remota'. Isso é encontrado abrindo as propriedades da sua conexão VPN, vá para a guia Rede e selecione TCP / IP v4 ou TCP / IP V6 e, em seguida, selecione Propriedades e depois Avançado. Isso pode estar ativado, o que pode significar que todo o tráfego da Internet seja roteado pela conexão VPN. Nem sempre é possível desativá-lo e ainda fazer o que você deseja com a VPN, mas pode ser desativado, pois pode acelerar o acesso à Internet.
Se isso não ajudar, existe uma guia DNS e você pode tentar adicionar seus servidores DNS. Eu tentei isso, mas espero que essas configurações substituam as configurações automáticas.
fonte
Infelizmente, o netsh não pode excluir servidores DNS atribuídos pelo DHCP. Mas isso pode ser feito limpando o parâmetro DhcpNameServer em
Chave do registro.
fonte
A partir de 2017, isso agora é possível se for baseado no OpenVPN
Adicione uma linha ao seu arquivo de configuração do cliente de
e ignorará todas as linhas de configuração enviadas que começam com o texto citado.
As três palavras-chave de ação são
accept
ignore
reject
. Eu não descobri um caso de uso para rejeitar.fonte
Simplesmente removo esta opção da configuração da VPN do cliente
setenv opt block-outside-dns
Resolveu o problema
fonte