Impedir que VPN mude o DNS no Windows 7/8 preview do desenvolvedor

10

Eu tenho um cliente que usa uma conexão VPN, mas ele configura automaticamente minhas configurações de DNS para um servidor DNS inexistente, o que significa que toda a resolução de DNS expira até que a alternativa seja tentada, o que realmente atrasa todo o tráfego da Internet.

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

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

Estou usando a visualização do Windows 8 Developer (mas suspeito que ela deva funcionar da mesma forma que o Windows 7).

Obrigado

    
por Wiebe Tijsma 21.02.2012 / 10:11

6 respostas

18

Eu 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 em que os servidores DNS são consultados, é suposto que um deles possa alterar a ordem de associação da interface de acordo com o link , mas isso não parece afetar as conexões VPN nos meus testes pessoais no Windows 7; Confirmei que minha conexão VPN foi consistentemente adicionada à parte superior da lista HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Linkage\Bind , independentemente das configurações de ordem de ligação da interface.

No entanto, você pode redefinir as alterações de DNS depois que a conexão VPN for estabelecida.

Coletando informações

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, do primeiro servidor DNS da conexão não VPN. Neste exemplo, eles são Minha VPN e 192.168.0.1 , respectivamente.

Configurando tudo

Opção 1: desabilitar DNS da VPN

Supondo que você não precise dos servidores DNS da 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: DNS VPN suplementar

Se você precisar que os servidores DNS da sua VPN resolvam nomes de host da intranet, você pode executar 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 conexão não VPN foi adicionado ao topo da lista de servidores DNS da VPN. Ele será usado para resolver nomes de host primeiro e, se não for bem-sucedido, voltará a usar os servidores DNS comuns da sua VPN.

    
por 27.02.2012 / 12:56
1

Eu tive um problema semelhante; conectar-se a um servidor VPN substituirá o DNS da minha estação de trabalho (cliente de VPN remoto) para que o DNS da LAN local seja obscurecido. Descrevi o problema mais detalhadamente no lado do Stackoverflow antes de foi apontado que eu deveria ter postado aqui em vez disso.

Depois de ler este tópico, é evidente que a substituição não pode ser evitada usando a configuração do cliente OpenVPN. Minha solução foi adicionar um arquivo de lote 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 denominado company_up.bat.

Eu aumentei o arquivo desde a versão que publiquei na minha pergunta no StackOverflow anteriormente. Agora parece com isso:

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 hack para esperar por alguns segundos antes de prosseguir. A versão mais recente (2.3) do cliente OpenVPN ignoraria as mudanças de DNS e de rota se executadas sem atraso.

2: Defina o DNS da conexão VPN para apontar para o host local. Eu tenho um resolvedor (eu uso SimpleDNS Plus ) em execução no host local que encaminha as consultas para o domínio da empresa para o servidor DNS da empresa sobre o VPN e tudo mais para o servidor DNS da LAN local. Observe que não consegui 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 por meio de "ipconfig / all".

3: O servidor VPN da empresa é configurado para rotear todo o tráfego de saída pela VPN e, ao mesmo tempo, restringir as conexões SSH de saída (à Internet). Isso entrou em conflito com meu fluxo de trabalho, e eu estou primeiro excluindo a rota "0.0.0.0 netmask 0.0.0.0" ...

4: .. e, em seguida, eu adiciono novamente a rota 0.0.0.0/0 para apontar para o gateway de LAN local e defino sua métrica (peso) para 1000 como um resumo para todo o tráfego que não é roteado de outra forma.

5: Sem "exit 0" o OpenVPN cospe um aviso de erro do script falhado (com um status de saída 1).

Espero que isso seja útil para alguém ... está funcionando razoavelmente bem para mim (não é necessário fazer ajustes de rota ou DNS manualmente toda vez que eu abro uma conexão).

    
por 29.12.2012 / 08:12
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 e vá para a guia Rede e selecione TCP / IP v4 ou TCP / IP V6 e, em seguida, selecione propriedades e, em seguida, avançado. Isso pode ser ativado, o que poderia significar que todo o tráfego da Internet é 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, pode acelerar o acesso à Internet.

Se isso não ajudar, há uma aba DNS lá e você pode tentar adicionar seus servidores DNS lá. Eu tentei isso, mas esperaria que essas configurações substituíssem as configurações automáticas.

    
por 21.02.2012 / 10:33
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.

    
por 09.03.2016 / 18:38
0

A partir de 2017, isso agora é possível se for baseado em OpenVPN

Adicione uma linha ao seu arquivo de configuração do cliente

pull-filter ignore "dhcp-option DNS "

e ele 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.

    
por 16.01.2017 / 05:39
0

Is there a way that I can prevent an application from overriding my DNS settings (without enabling UAC)?

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

Alternatively, is there a way that I can set up some kind of local routing that says 'when a DNS request for IP address A comes in, actually use IP address B'?

Você pode adicionar entradas ao arquivo hosts ( C:\Windows\System32\drivers\etc\hosts ). Este arquivo contém mapeamentos de nomes de host para endereços IP e é preferível às solicitações de DNS.

    
por 21.02.2012 / 10:18