Impedisci alla VPN di cambiare DNS sull'anteprima dello sviluppatore di Windows 7/8


10

Ho un cliente che utilizza una connessione VPN, tuttavia configura automaticamente le mie impostazioni DNS su un server DNS inesistente, il che significa che ogni risoluzione DNS scade fino a quando non viene provata l'alternativa, che rallenta davvero tutto il traffico Internet.

Esiste un modo per impedire a un'applicazione di sovrascrivere le mie impostazioni DNS (senza abilitare UAC)?

In alternativa, c'è un modo in cui posso impostare una sorta di routing locale che dice "quando arriva una richiesta DNS per l'indirizzo IP A, effettivamente uso l'indirizzo IP B"?

Sto usando l'anteprima dello sviluppatore di Windows 8 (ma sospetto che dovrebbe funzionare allo stesso modo di Windows 7).

Grazie

Risposte:


18

Non credo che ci sia un modo per impedire che ciò accada, oltre all'assegnazione statica dei server DNS sulla connessione VPN.

Per modificare l'ordine in cui vengono interrogati i server DNS, si suppone che si possa cambiare l'ordine di associazione dell'interfaccia come da /superuser//a/314379/120267 , ma ciò non sembra influire sulle connessioni VPN in i miei test personali su Windows 7; Ho confermato che la mia connessione VPN viene costantemente aggiunta in cima HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Linkage\Bindall'elenco, indipendentemente dalle impostazioni dell'ordine di associazione dell'interfaccia.

Tuttavia, è possibile ripristinare le modifiche DNS dopo aver stabilito la connessione VPN.

Raccolta di informazioni

Aprire un prompt dei comandi ( Start-> Run...-> cmd) e quindi eseguire netsh interface ipv4 show dnsservers. Vedrai un output simile al seguente:

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

È necessario il nome dell'interfaccia per la VPN e, facoltativamente, il primo server DNS della tua connessione non VPN . In questo esempio, sono rispettivamente My VPN e 192.168.0.1 .


Impostazione di tutto

Opzione 1: disabilita VPN DNS

Supponendo che non siano affatto necessari i server DNS della VPN, è possibile semplicemente eseguire quanto segue nel prompt dei comandi:

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 esegui di netsh interface ipv4 show dnsserversnuovo, vedrai che i server DNS associati alla VPN sono stati rimossi; i server DNS della tua connessione non VPN verranno utilizzati per risolvere i nomi host.


Opzione 2: integrare il DNS VPN

Se sono necessari i server DNS della VPN per risolvere i nomi host della Intranet, è possibile eseguire quanto segue nel prompt dei comandi:

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

In questo caso, netsh interface ipv4 show dnsserversmostrerà che il primo server DNS della tua connessione non VPN è stato aggiunto in cima all'elenco dei server DNS della tua VPN. Verrà utilizzato per risolvere prima i nomi host e, in caso di esito negativo, ricorrere all'utilizzo dei normali server DNS della VPN.


Sei un eroe signore, grazie per la risposta estesa, sembra funzionare benissimo! Ho provato a scherzare con netsh ma non sono riuscito ad arrivare così lontano ...
Wiebe Tijsma,

1

Ho avuto un problema simile; la connessione a un server VPN avrebbe la precedenza sul DNS della mia workstation (client VPN remoto) in modo da oscurare il DNS LAN locale. Ho descritto il problema più dettagliatamente sul lato StackOverflow prima di farmi notare che avrei dovuto invece pubblicarlo qui.

Dopo aver letto questo thread è evidente che non è possibile impedire la sostituzione utilizzando la configurazione del client OpenVPN. La mia soluzione è stata quella di aggiungere un file batch nella directory di configurazione OpenVPN che viene eseguito quando si forma la connessione OpenVPN. Se il file OVPN si chiama company.ovpn, il file eseguito su connect deve essere denominato company_up.bat.

Ho aumentato un po 'il file dalla versione che ho pubblicato alla mia domanda in StackOverflow questa sera. Ora sembra così:

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: un hack per attendere un paio di secondi prima di procedere. L'ultima versione (2.3) del client OpenVPN ignorerebbe il DNS e instraderebbe le modifiche se eseguita senza ritardi.

2: imposta il DNS della connessione VPN in modo che punti all'host locale. Ho un resolver (utilizzo SimpleDNS Plus ) in esecuzione sull'host locale che inoltra le query al dominio dell'azienda al server DNS dell'azienda tramite la VPN e tutto il resto al server DNS LAN locale. Si noti che non è stato possibile utilizzare un resolver LAN locale per inoltrare le query per il dominio aziendale al DNS dell'azienda tramite VPN poiché l'endpoint VPN si trova sull'host locale. Il nome della connessione ("Local Area Connection 4") è stato determinato al prompt dei comandi tramite "ipconfig / all".

3: il server VPN aziendale è configurato per instradare tutto il traffico in uscita attraverso la VPN limitando allo stesso tempo le connessioni SSH in uscita (a Internet). Ciò è in conflitto con il mio flusso di lavoro e per prima cosa sto eliminando il percorso "0.0.0.0 netmask 0.0.0.0" ...

4: .. e quindi aggiungo nuovamente la route 0.0.0.0/0 per puntare al gateway LAN locale e imposto la sua metrica (peso) su 1000 come catch-all per tutto il traffico che non viene instradato altrimenti.

5: Senza "exit 0" OpenVPN genera un avviso di errore dello script non riuscito (con uno stato di uscita 1).

Spero che questo sia utile per qualcuno .. funziona abbastanza bene per me (non è necessario effettuare manualmente il percorso o le regolazioni DNS ogni volta che apro una connessione).


0

Esiste un modo per impedire a un'applicazione di sovrascrivere le mie impostazioni DNS (senza abilitare UAC)?

Almeno non esiste un modo semplice per farlo.

In alternativa, c'è un modo in cui posso impostare una sorta di routing locale che dice "quando arriva una richiesta DNS per l'indirizzo IP A, effettivamente uso l'indirizzo IP B"?

È possibile aggiungere voci al file hosts ( C:\Windows\System32\drivers\etc\hosts). Questo file contiene mappature dai nomi host agli indirizzi IP ed è preferito rispetto alle richieste DNS.


Beh, conosco il file hosts, ma questo è basato su tutti gli indirizzi IP, quindi sfortunatamente non funziona ...
Wiebe Tijsma,

Oh, ok, ora ho la tua domanda. E no, non è possibile reindirizzare le richieste da un IP all'altro.
Michael,

0

Puoi controllare lo stato della casella di controllo "Usa gateway predefinito su rete remota". Questo si trova aprendo le proprietà della tua connessione VPN e vai alla scheda Networking e seleziona TCP / IP v4 o TCP / IP V6 e quindi seleziona le proprietà e poi avanzate. Questo potrebbe essere abilitato, il che potrebbe significare che tutto il traffico Internet viene instradato tramite la connessione VPN. Non è sempre possibile disabilitarlo e fare comunque ciò che vuoi con la VPN, ma può essere disabilitato, potrebbe accelerare l'accesso a Internet.

Se ciò non aiuta, c'è una scheda DNS lì e potresti provare ad aggiungere lì i tuoi server DNS. Ho provato questo, ma mi aspetto che queste impostazioni prevalgano sulle impostazioni automatiche.


Non è controllato, quindi non sta instradando tutto il traffico Internet su VPN (quando il nome è finalmente risolto la connessione è abbastanza veloce). Ho provato a modificare le impostazioni DNS lì, ma sfortunatamente tutto è tornato automaticamente alle impostazioni DNS non valide quando riavvio la connessione :(
Wiebe Tijsma,

Se non riesci a fermare la modifica del DNS, è possibile farlo fallire più velocemente utilizzando un firewall per bloccare le richieste DNS a questo indirizzo?
sgmoore,

0

Sfortunatamente netsh non può cancellare i server DNS assegnati da dhcp. Ma questo può essere fatto cancellando il parametro DhcpNameServer in

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

chiave di registro.


0

A partire dal 2017 questo è ora possibile se si basa su OpenVPN

Aggiungi una riga al tuo file di configurazione del client di

pull-filter ignora "DNS opzione dhcp"

e ignorerà tutte le righe di configurazione inviate che iniziano con il testo tra virgolette.

Le tre parole chiave di azione sono accept ignore reject. Non ho scoperto un caso d'uso per il rifiuto.


0

Rimuovo semplicemente questa opzione dalla configurazione VPN del client

setenv opt block-outside-dns

Ha risolto il problema

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.