Windows 7/8 geliştirici önizlemesinde VPN'nin DNS'yi değiştirmesini önleme


10

VPN bağlantısı kullanan bir müşterim var, ancak DNS ayarlarımı varolmayan bir DNS sunucusuna otomatik olarak yapılandırıyor, yani tüm DNS çözümlemesi alternatif denenene kadar zaman aşımına uğruyor, bu da tüm İnternet trafiğini gerçekten yavaşlatıyor.

Bir uygulamanın (UAC'yi etkinleştirmeden) DNS ayarlarımı geçersiz kılmasını önleyebileceğim bir yol var mı?

Alternatif olarak, 'IP adresi A için bir DNS isteği geldiğinde, aslında IP adresini B kullan' diyen bir tür yerel yönlendirme ayarlamamın bir yolu var mı?

Windows 8 Developer önizlemesini kullanıyorum (ancak Windows 7 ile aynı şekilde çalışacağından şüpheleniyorum).

Teşekkürler

Yanıtlar:


18

VPN bağlantısına statik olarak DNS sunucuları atamak dışında, bunun olmasını önlemenin bir yolu olduğuna inanmıyorum .

DNS sunucularının sorgulanma sırasını değiştirmek için, arayüz bağlama sırasını https://superuser.com/a/314379/120267 uyarınca değiştirebileceği düşünülüyor , ancak bunun VPN bağlantılarını etkilemediği görülüyor Windows 7'deki kişisel testlerim; HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Linkage\BindArayüz bağlama sırası ayarlarından bağımsız olarak VPN bağlantımın listenin en üstüne eklendiğini doğruladım .

Ancak, VPN bağlantısı kurulduktan sonra DNS değişikliklerini sıfırlayabilirsiniz.

Bilgi toplamak

Bir komut istemi açın ( Start-> Run...-> cmd) ve ardından çalıştırın netsh interface ipv4 show dnsservers. Aşağıdakine benzer bir çıktı göreceksiniz:

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

İhtiyacınız arayüz adını isteğe VPN için, ve olmayan VPN bağlantının ilk DNS sunucusu . Bu örnekte , sırasıyla My VPN ve 192.168.0.1'dir .


Her Şeyi Ayarlama

Seçenek 1: VPN DNS'yi devre dışı bırakma

VPN'nizin DNS sunucularına hiç ihtiyacınız olmadığını varsayarsak, komut isteminde aşağıdakileri çalıştırabilirsiniz:

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

netsh interface ipv4 show dnsserversTekrar çalıştırırsanız , VPN ile ilişkili DNS sunucularının kaldırıldığını göreceksiniz; VPN olmayan bağlantınızın DNS sunucuları ana bilgisayar adlarını çözümlemek için kullanılacaktır.


2. Seçenek: VPN DNS'sini tamamlayın

İntranet ana bilgisayar adlarını çözümlemek için VPN'nizin DNS sunucularına ihtiyacınız varsa, komut isteminde aşağıdakileri çalıştırabilirsiniz:

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

Bu durumda, netsh interface ipv4 show dnsserversVPN olmayan bağlantınızın ilk DNS sunucusunun VPN'nizin DNS sunucuları listesinin en üstüne eklendiğini gösterir. Önce ana bilgisayar adlarını çözümlemek için kullanılır ve başarısız olursa VPN'nizin normal DNS sunucularını kullanmaya geri dönün.


Sen bir kahramansın efendim, kapsamlı cevap için teşekkürler, iyi çalışıyor gibi görünüyor! Netsh ile
uğraşmayı

1

Benzer bir sorunum vardı; bir VPN sunucusuna bağlanmak, yerel LAN DNS'in gizlenmesini sağlamak için iş istasyonumun (uzak VPN istemcisi) DNS'sini geçersiz kılar. Bunu bunun yerine buraya göndermem gerektiğini belirtmeden önce Stackoverflow tarafında sorunu daha ayrıntılı olarak açıkladım.

Bu iş parçacığını okuduktan sonra, OpenVPN istemci yapılandırması kullanılarak geçersiz kılmanın önlenemeyeceği açıktır. Benim çözümüm OpenVPN yapılandırma dizinine OpenVPN bağlantısı kurulduğunda çalışan bir toplu iş dosyası eklemekti. OVPN dosyasına company.ovpn adı verilirse, connect üzerinde çalışan dosyanın company_up.bat olarak adlandırılması gerekir.

Bu gece daha önce StackOverflow'da soruma gönderdiğim sürümden beri dosyayı biraz artırdım. Şimdi şöyle görünüyor:

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: Devam etmeden önce birkaç saniye beklemek için bir hack. OpenVPN istemcisinin en son sürümü (2.3), gecikmeden yürütülürse DNS ve yol değişikliklerini yok sayar.

2: VPN bağlantısının DNS'sini localhost'u gösterecek şekilde ayarlayın. Sorguları şirket etki alanı için VPN üzerinden şirket DNS sunucusuna ve diğer her şeyi yerel LAN DNS sunucusuna ileten localhost üzerinde çalışan bir çözümleyici ( SimpleDNS Plus kullanıyorum ) var. VPN uç noktası localhost'ta olduğundan, şirket etki alanı için sorguları VPN üzerinden şirket DNS'sine iletmek için yerel bir LAN çözümleyici kullanamayacağımı unutmayın. Bağlantı adı ("Yerel Ağ Bağlantısı 4") komut isteminde "ipconfig / all" aracılığıyla belirlendi.

3: Şirket VPN sunucusu, tüm giden trafiği VPN üzerinden yönlendirirken aynı zamanda giden (İnternet'e) SSH bağlantılarını kısıtlayacak şekilde yapılandırılmıştır . Bu iş akışımla çakıştı ve önce "0.0.0.0 ağ maskesi 0.0.0.0" yolunu siliyorum ...

4: .. ve sonra yerel LAN ağ geçidini işaret etmek için 0.0.0.0/0 yolunu yeniden ekler ve metrik (ağırlık) değerini, aksi yönde yönlendirilmeyen tüm trafik için bir catch-all olarak 1000 olarak ayarlarım.

5: "exit 0" olmadan OpenVPN komut dosyasının başarısız olduğu bir hata uyarısı verir (çıkış durumu 1 ile).

Umarım bu birisi için yararlıdır .. benim için oldukça iyi çalışıyor (her bağlantıyı açtığımda manuel olarak rota veya DNS ayarlamaları yapmaya gerek yok).


0

Bir uygulamanın (UAC'yi etkinleştirmeden) DNS ayarlarımı geçersiz kılmasını önleyebileceğim bir yol var mı?

En azından bunu yapmanın kolay bir yolu yok.

Alternatif olarak, 'IP adresi A için bir DNS isteği geldiğinde, aslında IP adresini B kullan' diyen bir tür yerel yönlendirme ayarlamamın bir yolu var mı?

Hosts dosyasına ( C:\Windows\System32\drivers\etc\hosts) giriş ekleyebilirsiniz . Bu dosya, ana bilgisayar adlarından IP adreslerine eşlemeler içerir ve DNS isteklerine göre tercih edilir.


Ben hosts dosyası hakkında biliyorum, ama bu ne yazık ki çalışmıyor bu yüzden tüm IP adresi tabanlı ...
Wiebe Tijsma

Oh, tamam, şimdi sorunuzu alıyorum. Ve hayır, istekleri bir IP'den diğerine yönlendiremezsiniz.
Michael

0

'Uzak ağda varsayılan ağ geçidini kullan' onay kutusunun durumunu kontrol edebilir misiniz? Bu, VPN bağlantınızın özelliklerini açıp Ağ Oluşturma sekmesine gidip TCP / IP v4 veya TCP / IP V6'yı seçip özellikleri ve ardından gelişmiş'i seçerek bulunur. Bu, tüm internet trafiğinin VPN bağlantısı üzerinden yönlendirildiği anlamına gelebilir. Bunu devre dışı bırakmak ve VPN ile istediğinizi yapmak her zaman mümkün değildir, ancak devre dışı bırakılabilir, internet erişimini hızlandırabilir.

Bu işe yaramazsa, orada bir DNS sekmesi vardır ve orada DNS sunucularınızı eklemeyi deneyebilirsiniz. Bunu denedim, ancak bu ayarların otomatik ayarları geçersiz kılmasını beklerim.


İşaretlenmez, bu nedenle tüm internet trafiğini VPN üzerinden yönlendirmez (ad sonunda çözüldüğünde bağlantı yeterince hızlıdır). Orada DNS ayarlarını değiştirmeyi denedim, ancak bağlantıyı yeniden başlattığımda maalesef otomatik olarak geçersiz DNS ayarlarına geri döndü :(
Wiebe Tijsma

DNS'nin değiştirilmesini durduramıyorsanız, bu adrese gelen DNS isteklerini engellemek için bir güvenlik duvarı kullanarak daha hızlı başarısız olmasını sağlamak mümkün mü?
sgmoore

0

Ne yazık ki netsh, dhcp tarafından atanan dns sunucularını silemez. Ancak bu, içindeki DhcpNameServer parametresini temizleyerek yapılabilir

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

kayıt defteri anahtarı.


0

2017 itibariyle, OpenVPN tabanlıysa bu mümkün

İstemci yapılandırma dosyanıza bir satır ekleyin

çekme filtresi "dhcp-seçenek DNS" yi yoksay

ve alıntı yapılan metinle başlayan tüm itilen yapılandırma satırlarını yok sayar.

Üç işlem anahtar kelimesi accept ignore reject. Reddetmek için bir kullanım durumu bulamadım.


0

Bu seçeneği istemci VPN yapılandırmasından kaldırıyorum

setenv opt block-outside-dns

Sorunu çözdü

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.