Impedir que a VPN altere o DNS na visualização do desenvolvedor do Windows 7/8

10

Eu tenho um cliente que usa uma conexão VPN, no entanto, ele configura automaticamente minhas configurações de DNS para um servidor DNS inexistente, o que significa que toda resolução de DNS atinge o tempo limite até que a alternativa seja tentada, o que reduz a velocidade de todo o tráfego da Internet.

Existe uma maneira de impedir que um aplicativo substitua minhas configurações de DNS (sem ativar o UAC)?

Como alternativa, existe uma maneira de configurar algum tipo de roteamento local que diga 'quando uma solicitação DNS para o endereço IP A chegar, use realmente o endereço IP B'?

Estou usando a visualização do desenvolvedor do Windows 8 (mas suspeito que funcione da mesma maneira que o Windows 7).

obrigado

Wiebe Tijsma
fonte

Respostas:

18

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\Bindlista, 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 dnsserversnovamente, 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 dnsserversmostrará 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.

Ashley Ross
fonte
Você é um herói, senhor, obrigado pela extensa resposta, parece funcionar bem! Eu tentei brincando com netsh mas não conseguiu chegar até aqui ...
Wiebe Tijsma
1

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: ping 127.0.0.1 -n 2 > nul
2: netsh interface ip set dns "Local Area Connection 4" static 127.0.0.1
3: route delete 0.0.0.0
4: route add -p 0.0.0.0/0 172.20.20.1 metric 1000
5: exit 0

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).

Ville
fonte
0

Existe uma maneira de impedir que um aplicativo substitua minhas configurações de DNS (sem ativar o UAC)?

Pelo menos não há uma maneira fácil de fazer isso.

Como alternativa, existe uma maneira de configurar algum tipo de roteamento local que diga 'quando uma solicitação DNS para o endereço IP A chegar, use realmente o endereço IP B'?

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.

Michael
fonte
Bem, eu sei sobre o arquivo hosts, mas isso é tudo o endereço IP baseado de modo que não funciona, infelizmente ...
Wiebe Tijsma
Oh, ok, agora eu recebo sua pergunta. E não, você não pode redirecionar solicitações de um IP para outro.
Michael
0

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.

sgmoore
fonte
Não está marcado, por isso não está direcionando todo o tráfego da Internet pela VPN (quando o nome é finalmente resolvido, a conexão é rápida o suficiente). Eu tentei mudar as configurações de DNS lá, mas, infelizmente, está tudo mudado de volta automaticamente para as configurações de DNS inválidos quando eu reiniciar a conexão :(
Wiebe Tijsma
Se você não pode impedir que o DNS seja alterado, é possível fazê-lo falhar mais rápido usando um firewall para bloquear solicitações de DNS para este endereço?
sgmoore 24/02
0

Infelizmente, o netsh não pode excluir servidores DNS atribuídos pelo DHCP. Mas isso pode ser feito limpando o parâmetro DhcpNameServer em

HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces\{id}

Chave do registro.

a1nt
fonte
0

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

filtro de extração ignora "DNS da opção dhcp"

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.

Criggie
fonte
0

Simplesmente removo esta opção da configuração da VPN do cliente

setenv opt block-outside-dns

Resolveu o problema

Ismail
fonte