Mac OS X Mountain Lion - Penyelesaian DNS menggunakan urutan yang salah pada VPN melalui koneksi dial-up


23

Saya menggunakan MacBook dengan Mac OS X 10.8.2 dan terhubung ke jaringan perusahaan saya melalui VPN. Semuanya berfungsi baik saat membuat koneksi VPN melalui LAN atau WLAN. Namun, ketika saya menggunakan koneksi dial-up (Huawei HSDPA USB Stick) nama host tidak diselesaikan dengan benar dalam aplikasi (misalnya Web-Browser). Alat baris perintah seperti host nameakan dengan benar menyelesaikan alamat IP, ping nametidak akan menyelesaikan.

Menggunakan scutil --dnsI membuang konfigurasi DNS saat menghubungkan melalui WLAN vs dial-up. Ada perbedaan penting dalam urutan pencarian:

connecting using WLAN:

resolver #1
  nameserver[0] : 192.168.80.10
  nameserver[1] : 192.168.80.24
  if_index : 6 (ppp0)
  reach    : Reachable,Transient Connection
  order    : 100000

resolver #2
  nameserver[0] : 192.168.80.10
  nameserver[1] : 192.168.80.24
  if_index : 6 (ppp0)
  reach    : Reachable,Transient Connection
  order    : 200000

resolver #3
  domain   : local
  options  : mdns
  timeout  : 5
  order    : 300000

resolver #4
  domain   : 254.169.in-addr.arpa
  options  : mdns
  timeout  : 5
  order    : 300200

resolver #5
  domain   : 8.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  order    : 300400

resolver #6
  domain   : 9.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  order    : 300600

resolver #7
  domain   : a.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  order    : 300800

resolver #8
  domain   : b.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  order    : 301000

DNS configuration (for scoped queries)

resolver #1
  nameserver[0] : 192.168.1.1
  if_index : 4 (en0)
  flags    : Scoped
  reach    : Reachable,Directly Reachable Address

resolver #2
  nameserver[0] : 192.168.80.10
  nameserver[1] : 192.168.80.24
  if_index : 6 (ppp0)
  flags    : Scoped
  reach    : Reachable,Transient Connection

Koneksi ppp0 adalah koneksi VPN. Seperti yang Anda lihat, dua server terhubung dan mereka menjawab dengan benar pada baris perintah dan dalam aplikasi.

Connecting via UMTS:

resolver #1
  nameserver[0] : 139.7.30.126
  nameserver[1] : 139.7.30.125
  if_index : 6 (ppp0)
  reach    : Reachable,Transient Connection
  order    : 100000

resolver #2
  nameserver[0] : 192.168.80.10
  nameserver[1] : 192.168.80.24
  if_index : 7 (ppp1)
  reach    : Reachable,Transient Connection
  order    : 100000

resolver #3
  nameserver[0] : 192.168.80.10
  nameserver[1] : 192.168.80.24
  if_index : 7 (ppp1)
  reach    : Reachable,Transient Connection
  order    : 200000

resolver #4
  domain   : local
  options  : mdns
  timeout  : 5
  order    : 300000

resolver #5
  domain   : 254.169.in-addr.arpa
  options  : mdns
  timeout  : 5
  order    : 300200

resolver #6
  domain   : 8.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  order    : 300400

resolver #7
  domain   : 9.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  order    : 300600

resolver #8
  domain   : a.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  order    : 300800

resolver #9
  domain   : b.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  order    : 301000

DNS configuration (for scoped queries)

resolver #1
  nameserver[0] : 192.168.80.10
  nameserver[1] : 192.168.80.24
  if_index : 7 (ppp1)
  flags    : Scoped
  reach    : Reachable,Transient Connection

resolver #2
  nameserver[0] : 139.7.30.126
  nameserver[1] : 139.7.30.125
  if_index : 6 (ppp0)
  flags    : Scoped
  reach    : Reachable,Transient Connection

Kali ini, ppp1 adalah koneksi VPN dan ppp0 adalah koneksi UMTS. Dari waktu respons dari perintah (menggunakan hostname yang tidak ada foo.bar.local) saya menyimpulkan bahwa pingmenggunakan rantai resolver pertama, di mana sebagai hostmenggunakan konfigurasi permintaan scoped. pingDibutuhkan 5 detik untuk mengembalikan "Tuan rumah tidak dikenal", hostsegera kembali. Saya menganggap ping berjalan ke timeout 5 detik dari mdns resolver.

Untuk memperbaiki masalah saya dengan pencarian DNS yang rusak ketika melakukan panggilan melalui VPN melalui modem, saya perlu mengubah urutan resolver. Sejauh ini saya belum menemukan cara untuk melakukan ini.

Ada ide yang menyambut.

Jawaban:


7

Saya memiliki masalah yang sama pada Mac saya, dan setelah memperbaikinya saya menemukan bahwa itu disebabkan oleh FortiClient (klien VPN). Bahkan ketika FortiClient terputus - DNSnya masih muncul di scutil.

Solusi bagi saya adalah:

scutil
> list ".*DNS"

Ini akan menampilkan daftar semua konfigurasi DNS, yang akan terlihat seperti:

subKey [0] = State:/Network/Global/DNS <br>
subKey [1] = State:/Network/MulticastDNS<br>
subKey [2] = State:/Network/OpenVPN/DNS<br>
subKey [3] = State:/Network/OpenVPN/OldDNS<br>
subKey [4] = State:/Network/PrivateDNS<br>
subKey [5] = State:/Network/Service/forticlientsslvpn/DNS <br>

Untuk memeriksa masing-masing dijalankan: (sampai Anda menemukan yang bermasalah)

> get key_name
> d.show

... dan untuk memperbaikinya jalankan:

> get key_name
> d.remove ServerAddresses
> set key_name

Ini adalah tampilannya di mesin saya:

> get State:/Network/Service/forticlientsslvpn/DNS 
> d.show
<dictionary> {
  ServerAddresses : <array> {
    0 : 192.168.30.6
    1 : 192.168.30.15
  }
  SupplementalMatchDomains : <array> {
    0 :
  }
  SupplementalMatchOrders : <array> {
    0 : 100000
  }
}
> d.remove ServerAddresses
> d.show
<dictionary> {
  SupplementalMatchDomains : <array> {
    0 :
  }
  SupplementalMatchOrders : <array> {
    0 : 100000
  }
}
> set State:/Network/Service/forticlientsslvpn/DNS
> exit

3

Coba ubah urutan entri DNS di panel preferensi Jaringan:

  1. Buka System PreferencesNetwork .

  2. Pilih layanan jaringan Anda di daftar di sebelah kiri.

  3. Buka kunci panel preferensi menggunakan kunci di sudut kiri bawah.

  4. Klik Tingkat Lanjut ... dan pilih tab DNS .

  5. Ubah urutan server DNS dengan menyeretnya ke atas / bawah.


2
Ini tidak memberikan jawaban untuk pertanyaan itu. Untuk mengkritik atau meminta klarifikasi dari penulis, tinggalkan komentar di bawah posting mereka - Anda selalu dapat mengomentari posting Anda sendiri, dan begitu Anda memiliki reputasi yang cukup, Anda akan dapat mengomentari setiap posting .
GRG

Itu komentar yang aneh. Poster itu tidak menyebutkan apakah dia telah mencoba ini dalam pertanyaannya dan itu mungkin relevan dan solusi sederhana untuk masalahnya. Sulit untuk mengatakan tanpa menggunakan pengaturan yang sama.
db

2
Seperti yang dikatakan, itu ditulis sebagai permintaan untuk klarifikasi - jawaban harus ditulis sebagai jawaban; komentar adalah tempat paling tepat untuk meminta klarifikasi. Jawaban ini ada dalam antrian ulasan Pos Kualitas Rendah, dan menurut saya komentar saham sepertinya paling tepat. Memang, menulis ulang ini sebagai jawaban (dan menambahkan detail seperti tangkapan layar dan daftar instruksi yang diformat dengan benar) akan menjadikan ini jawaban yang lengkap dan sah.
grg

Ini konyol. Apakah Anda Rainman atau apa? Itu adalah jawaban yang diungkapkan dengan cara yang pasif dan rendah hati (karena sangat jelas orang yang mengajukan pertanyaan - yang tampaknya cukup terampil - mungkin telah mencobanya tetapi hanya lupa menyebutkannya dalam pertanyaan). Dan jika Anda telah mencoba saran saya sendiri, Anda akan melihat bahwa kemungkinan besar tidak ada lagi langkah-langkah di luar langkah-langkah yang disertakan (System Preferences -> Network) diperlukan bagi seseorang yang mahir seperti OP.
db

Seperti yang sudah saya katakan, ini hanyalah pendapat saya. Saya bukan orang yang menurunkan Anda dengan cara. Saya telah mengedit jawaban Anda untuk memasukkan detail lebih lanjut tentang langkah-langkahnya. Jangan ragu untuk mengembalikan hasil edit jika Anda yakin itu tidak pantas.
GRG

2

Saya menemukan solusinya: DNS VPN Anda masih akan diabaikan, dan hanya DNS 3G-dongle yang akan digunakan, tetapi hanya menambahkan DNS VPN Anda ke daftar di bawah antarmuka 3G adalah caranya… Masalah utamanya adalah manajer konektivitas 3G menimpa konfigurasi setiap kali Anda mengklik terhubung, dan Anda memerlukan manajer konektivitas untuk mengaktifkan Radio pada dongle 3G ... jadi saya mencampurkan kedua solusi dalam satu:

  1. Sambungkan ke VPN Anda dan tulis DNS Anda (saya punya 2 di daftar). Anda dapat memeriksanya di Preferensi Jaringan → Lanjutan → tab DNS. Putuskan sambungan VPN. Anda perlu terhubung ke VPN karena DNS ditetapkan secara dinamis saat koneksi ...

  2. Sambungkan ke 3G Anda dan lakukan hal yang sama: tulis DNS di atas kertas. Lalu putuskan sambungan 3G.

  3. Buka Preferensi Jaringan → klik pada antarmuka 3G → Tingkat Lanjut → Tab DNS, dan di bawah tabel DNS (yang biasanya akan kosong karena Anda tidak terhubung) klik '+'. Tambahkan semua server DNS (yang dari 3G dulu dan kemudian tambahkan VPN nanti). Klik OK dan Terapkan.

  4. Mulai sekarang , untuk terhubung ke 3G, cukup colokkan USB Anda dan tunggu hingga Anda memiliki jangkauan 3G (Anda harus membuka manajer konektivitas 3G), tetapi jangan gunakan manajer konektivitas yang disediakan untuk terhubung. Dan jika terhubung secara otomatis, buka preferensi dan hapus centang pada centang itu. Anda perlu bahwa manajer hanya untuk menghidupkan radio di dalam USB Dongle, tidak ada yang lain.

    Jika Anda mengklik "terhubung" pada manajer 3G Anda, itu akan menimpa konfigurasi pada antarmuka 3G Anda dan Anda perlu mengulangi langkah 3 lagi.

  5. Buka Jaringan → Preferensi dan klik pada antarmuka 3G. Kemudian klik connect. Ini akan terhubung ke 3G Anda menggunakan server DNS yang dikonfigurasi (bukan diterima secara dinamis), yang mencakup DNS "publik" dan DNS VPN Anda.

  6. Hubungkan ke VPN Anda. Ini akan berfungsi seperti yang diharapkan.

Perlu diketahui bahwa:

  • Jika DNS VPN Anda berubah, Anda harus mengubahnya secara manual. Ini dapat dengan mudah diperiksa di bawah Jaringan → antarmuka VPN dengan Lanjutan → tab DNS karena DNS VPN Anda masih ditetapkan secara dinamis ke antarmuka (meskipun diabaikan oleh OS X).

  • Jika perubahan DNS 3G Anda (tidak mungkin) Anda perlu mengubahnya secara manual juga. Jika terjadi kesalahan dan Anda tidak dapat menavigasi Anda harus melalui manajer konektivitas 3G Anda, klik "Sambungkan" dan lihat DNS apa yang ditetapkan secara dinamis ... Itu akan mengharuskan Anda kembali ke langkah 3 dan mengonfigurasi ulang.


2

Saya memiliki masalah yang sama untuk waktu yang lama, tetapi sekarang saya punya waktu untuk menemukan solusi yang cocok untuk saya. Saya tidak mengubah urutan server DNS, tapi saya menggunakan server DNS di belakang VPN secara permanen.

  1. Terhubung melalui dial-up.

  2. Hubungkan koneksi VPN dan salin IP server DNS dan domain pencarian dari Koneksi VPN → Lanjutan → DNS.

  3. Putuskan koneksi VPN.

  4. Ping <name>atau <hostname>server VPN Anda dan tulis IP.

  5. Putuskan koneksi dial-up.

  6. Gandakan koneksi dial-up (mis. Beri nama "3G untuk VPN").

  7. Masukkan IP dan domain pencarian ke tab DNS dari koneksi dial-up. Mereka akan disimpan dan digunakan secara permanen.

  8. Terhubung melalui koneksi dial-up baru.

  9. Sekarang Anda tidak memiliki akses ke server nama (karena diamankan oleh VPN) - Anda harus mengedit alamat server dari koneksi VPN. Ganti host dengan IP.

  10. Terhubung melalui koneksi VPN dan Anda harus dapat menggunakannya.

Catatan: Secara umum nama host tidak berubah, tetapi IP bisa. Jadi jika itu tidak berhasil suatu hari nanti, lakukan langkah-langkahnya lagi ...


Hai Alexander, itu terdengar seperti pendekatan yang menjanjikan. Namun, saya tidak beruntung meskipun urutan resolver dns terlihat cukup bagus. Harus periksa lagi dengan IT kami.
user1248552

1

apa yang Anda katakan memberi saya petunjuk, jadi saya telah menambahkan ip dns dalam koneksi vpn ke daftar dns di koneksi utama (tidak ada yang mewah, hanya menggunakan antarmuka grafis untuk preferensi Jaringan.) Saya tidak yakin jika apa yang Anda berurusan dengan berbeda, tetapi berhasil dengan saya.


1

Ini masih terjadi di 10.13.0

Saya telah membuka laporan bug dengan Apple. Tidaklah normal bahwa "ping internalhostname" berfungsi tetapi "host internalhostname" atau "nslookup internalhostname" gagal dengan VPN terowongan terpisah (berbasis Cisco IPSec atau IKEv2).

Juga, seperti yang diperhatikan oleh beberapa orang, koneksi Cisco IPsec serta koneksi IKEv2 tidak dapat diprioritaskan dengan "Tetapkan urutan layanan" tidak seperti L2TP / IPsec yang bisa.

Poin lain yang ingin saya kemukakan adalah bahwa tunnel split Cisco IPSec atau IKEv2 VPN tidak menampilkan server DNS atau Search Domains dalam pengaturan Advanced mereka meskipun informasi ini muncul dengan "scutil --dns". L2TP / IPsec VPN tidak menunjukkan informasi ini dengan baik.

Sesuatu harus diberikan dan Apple perlu memberikan penjelasan / perbaikan.


Saya menemukan bahwa ini adalah situasi sekarang dengan macOS pada akhir 2017. Pembelahan DNS yang dikonfigurasi pada domain tidak dihormati. Saya menjalankan scutil --dnsperintah di atas dan tampaknya DNS dari VPN selalu yang terakhir, dan tidak digunakan untuk domain pencarian, bahkan jika sudah diatur dengan benar.
mcdado

0

Tidak bekerja di Lion / Mountain Lion, karena bug yang menyebabkan Server DNS lokal karena selalu digunakan alih-alih server DNS dari jaringan jarak jauh bahkan ketika Split DNS secara benar diatur di router VPN.

Namun, jika Anda menggunakan router Cisco ASA IPSEC, Anda dapat memaksa Server DNS jarak jauh untuk digunakan setiap kali Anda membuat koneksi VPN:

Jika menggunakan Cisco ASDM, buka Configuration> Network (Client) Access> Kebijakan Grup> (grup vpn Anda untuk OSX / iPhone)> Advanced> Split Tunneling

Ada set: Nama DNS (hapus centang "mewarisi" dan mendefinisikan nama domain dns internal, misalnya myoffice.local) Kirim Semua Pencarian DNS Throug Tunro: Setel ke YA (Ini adalah pengaturan penting)

Simpan dan jangan lupa untuk menyimpannya di flash untuk digunakan di masa depan.

Jika Anda menggunakan baris perintah iOS, setel:

group-policy <your-tunnel-group-name> attributes
 split-dns value myoffice.local
 split-tunnel-all-dns enable`

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.