Cegah VPN mengubah DNS pada Windows 7/8 pratinjau pengembang

10

Saya memiliki pelanggan yang menggunakan koneksi VPN, namun secara otomatis mengkonfigurasi pengaturan DNS saya ke server DNS yang tidak ada, yang berarti setiap resolusi DNS habis hingga alternatif dicoba, yang benar-benar memperlambat semua lalu lintas Internet.

Apakah ada cara agar saya dapat mencegah aplikasi mengabaikan pengaturan DNS saya (tanpa mengaktifkan UAC)?

Atau, apakah ada cara agar saya dapat mengatur semacam perutean lokal yang mengatakan 'ketika permintaan DNS untuk alamat IP A masuk, sebenarnya menggunakan alamat IP B'?

Saya menggunakan pratinjau Pengembang Windows 8 (tapi saya menduga itu harus bekerja sama dengan Windows 7).

Terima kasih

Wiebe Tijsma
sumber

Jawaban:

18

Saya tidak percaya ada cara untuk mencegah hal itu terjadi, selain dari penetapan server DNS secara statis pada koneksi VPN.

Untuk mengubah urutan server DNS ditanyai, seseorang seharusnya dapat mengubah urutan pengikatan antarmuka sesuai /superuser//a/314379/120267 , tetapi itu tampaknya tidak mempengaruhi koneksi VPN di pengujian pribadi saya pada Windows 7; Saya telah mengkonfirmasi bahwa koneksi VPN saya secara konsisten ditambahkan ke bagian atas HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Linkage\Binddaftar, terlepas dari pengaturan urutan pengikatan antarmuka.

Namun, Anda dapat mengatur ulang perubahan DNS setelah koneksi VPN dibuat.

Mengumpulkan informasi

Buka prompt perintah ( Start-> Run...-> cmd) lalu jalankan netsh interface ipv4 show dnsservers. Anda akan melihat output yang mirip dengan yang berikut:

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

Anda memerlukan nama antarmuka untuk VPN, dan secara opsional server DNS pertama yang bukan koneksi VPN Anda . Dalam contoh ini , masing-masing adalah My VPN dan 192.168.0.1 .


Mengatur Semuanya

Opsi 1: Nonaktifkan DNS VPN

Dengan asumsi Anda tidak memerlukan server DNS VPN sama sekali, Anda dapat menjalankan yang berikut ini di command prompt:

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

Jika Anda menjalankan netsh interface ipv4 show dnsserverslagi, Anda akan melihat bahwa server DNS yang terkait dengan VPN telah dihapus; server DNS koneksi non-VPN Anda akan digunakan untuk menyelesaikan nama host.


Opsi 2: Tambahan DNS VPN

Jika Anda memerlukan server DNS VPN Anda untuk menyelesaikan nama host intranet, Anda dapat menjalankan yang berikut ini di command prompt:

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

Dalam hal ini, netsh interface ipv4 show dnsserversakan menunjukkan bahwa server DNS pertama non-koneksi VPN Anda telah ditambahkan ke bagian atas daftar server DNS VPN Anda. Ini akan digunakan untuk menyelesaikan nama host terlebih dahulu, dan jika tidak berhasil, kembali menggunakan server DNS reguler VPN Anda.

Ashley Ross
sumber
Anda seorang pahlawan Pak, terima kasih atas jawaban yang luas, tampaknya berfungsi dengan baik! Saya mencoba main-main dengan netsh tetapi tidak berhasil sampai sejauh ini ...
Wiebe Tijsma
1

Saya memiliki masalah yang sama; menyambung ke server VPN akan menimpa DNS (klien VPN jarak jauh) workstation saya sehingga DNS LAN lokal akan dikaburkan. Saya menjelaskan masalah ini lebih detail pada sisi Stackoverflow sebelum saya menunjukkan bahwa saya seharusnya mempostingnya di sini.

Setelah membaca utas ini, jelas bahwa override tidak dapat dicegah menggunakan konfigurasi klien OpenVPN. Solusi saya adalah menambahkan file batch di direktori konfigurasi OpenVPN yang dieksekusi ketika koneksi OpenVPN terbentuk. Jika file OVPN disebut company.ovpn, file yang dijalankan saat terhubung harus dinamai company_up.bat.

Saya telah menambahkan beberapa file sejak versi yang saya posting ke pertanyaan saya di StackOverflow tadi malam. Sekarang terlihat seperti ini:

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: Retasan untuk menunggu beberapa detik sebelum melanjutkan. Versi terbaru (2.3) dari klien OpenVPN akan mengabaikan DNS dan perubahan rute jika dijalankan tanpa penundaan.

2: Atur DNS koneksi VPN untuk menunjuk ke localhost. Saya memiliki resolver (saya menggunakan SimpleDNS Plus ) yang berjalan di localhost yang meneruskan permintaan ke domain perusahaan ke server DNS perusahaan melalui VPN, dan segala sesuatu yang lain ke server DNS LAN lokal. Perhatikan bahwa saya tidak bisa menggunakan resolver LAN lokal untuk meneruskan kueri untuk domain perusahaan ke DNS perusahaan melalui VPN karena titik akhir VPN ada di localhost. Nama koneksi ("Local Area Connection 4") ditentukan pada prompt perintah melalui "ipconfig / all".

3: Server VPN perusahaan dikonfigurasikan untuk merutekan semua lalu lintas keluar melalui VPN sementara pada saat yang sama membatasi koneksi SSH keluar (ke Internet). Ini bertentangan dengan alur kerja saya, dan saya pertama kali menghapus rute "0.0.0.0 netmask 0.0.0.0" ...

4: .. dan kemudian saya menambahkan kembali rute 0.0.0.0/0 untuk menunjuk ke gateway LAN lokal, dan mengatur metrik (berat) ke 1000 sebagai catch-all untuk semua lalu lintas yang tidak dialihkan sebaliknya.

5: Tanpa "keluar 0" OpenVPN mengeluarkan peringatan kesalahan skrip gagal (dengan status keluar 1).

Semoga ini bermanfaat bagi seseorang .. ini berfungsi cukup baik bagi saya (tidak perlu melakukan penyesuaian rute atau DNS secara manual setiap kali saya membuka koneksi).

Ville
sumber
0

Apakah ada cara agar saya dapat mencegah aplikasi mengabaikan pengaturan DNS saya (tanpa mengaktifkan UAC)?

Setidaknya tidak ada cara mudah untuk melakukan itu.

Atau, apakah ada cara agar saya dapat mengatur semacam perutean lokal yang mengatakan 'ketika permintaan DNS untuk alamat IP A masuk, sebenarnya menggunakan alamat IP B'?

Anda dapat menambahkan entri ke file host ( C:\Windows\System32\drivers\etc\hosts). File ini berisi pemetaan dari nama host ke alamat IP dan lebih disukai daripada permintaan DNS.

Michael
sumber
Ya saya tahu tentang file hosts, tapi ini semua berbasis alamat IP sehingga sayangnya tidak berhasil ...
Wiebe Tijsma
Oh, baiklah, sekarang saya mendapatkan pertanyaan Anda. Dan tidak, Anda tidak dapat mengalihkan permintaan dari satu IP ke IP lainnya.
Michael
0

Bisakah Anda memeriksa status kotak centang 'Gunakan gateway default di jaringan jarak jauh'. Ini ditemukan dengan membuka properti koneksi VPN Anda dan pergi ke tab Networking dan pilih TCP / IP v4 atau TCP / IP V6 dan kemudian pilih properti dan kemudian lanjutkan. Ini dapat diaktifkan yang bisa berarti bahwa semua lalu lintas internet dialihkan melalui koneksi VPN. Tidak selalu mungkin untuk menonaktifkan ini dan masih melakukan apa yang Anda inginkan dengan VPN, tetapi itu dapat dinonaktifkan, mungkin mempercepat akses internet.

Jika itu tidak membantu, ada tab DNS di sana dan Anda dapat mencoba menambahkan server DNS Anda di sana. Saya sudah mencoba ini, tetapi saya berharap pengaturan ini untuk mengesampingkan pengaturan otomatis.

sgmoore
sumber
Itu tidak dicentang, jadi itu tidak merutekan semua lalu lintas internet melalui VPN (ketika nama akhirnya diselesaikan koneksi cukup cepat). Saya mencoba mengubah pengaturan DNS di sana, tetapi sayangnya itu semua berubah kembali secara otomatis ke pengaturan DNS yang tidak valid ketika saya memulai kembali koneksi :(
Wiebe Tijsma
Jika Anda tidak dapat menghentikan DNS yang diubah, apakah mungkin membuatnya lebih cepat gagal dengan menggunakan firewall untuk memblokir permintaan DNS ke alamat ini?
sgmoore
0

Sayangnya netsh tidak dapat menghapus server dns yang ditugaskan oleh dhcp. Tapi ini bisa dilakukan dengan menghapus parameter DhcpNameServer di

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

kunci registri.

bukan
sumber
0

Pada 2017 ini sekarang mungkin jika didasarkan pada OpenVPN

Tambahkan baris ke file konfigurasi klien Anda dari

tarik-filter abaikan "dhcp-option DNS"

dan itu akan mengabaikan semua baris konfigurasi yang dimulai dengan teks yang dikutip.

Tiga kata kunci tindakan adalah accept ignore reject. Saya belum menemukan kasus penggunaan untuk tolak.

Criggie
sumber
0

Saya cukup menghapus opsi ini dari konfigurasi VPN klien

setenv opt block-outside-dns

Itu menyelesaikan masalah

Ismail
sumber