Tidak dapat menyelesaikan host melalui koneksi VPN dari Mac OS X [ditutup]

10

Pembukaan

Saya mengatur koneksi VPN dari Macbook saya, dan sepertinya terhubung dengan sukses.

VPN yang berfungsi

Namun, saya tidak dapat mengakses komputer kerja saya karena nama host tidak terselesaikan:

$ ping myusername
ping: cannot resolve myusername: Unknown host

Solusi Baru

Setelah mencoba semua yang saya bisa, saya menemukan bahwa perintah ini membuat jaringan VPN dan internet tersedia untuk saya:

sudo route add -net 192.168.7.218 192.168.7.117 255.255.0.0

Server DNS perusahaan dapat diakses oleh IP mereka. Bagaimana cara mengkonfigurasi jaringan untuk menggunakannya untuk semua yang dimulai dari 192.168?

Solusi Lama

Saya menemukan solusi sementara yang memungkinkan saya untuk mengakses jaringan melalui VPN dengan memodifikasi dua opsi:

Saya menaruh tanda centang di Kirim semua lalu lintas melalui koneksi VPN :

Opsi VPN

Saya secara manual memasukkan nama Domain Pencarian di pengaturan DNS antarmuka VPN:

memasukkan nama domain dalam opsi VPN

Melakukan dua langkah ini sudah cukup untuk membuat komputer saya yang berfungsi bisa ping:

$ nslookup myusername
Server:     192.168.10.16
Address:    192.168.10.16#53

Name:   myusername.universe.mycompany
Address: 192.168.11.56

$ ping myusername
PING myusername.universe.mycompany (192.168.11.56): 56 data bytes
64 bytes from 192.168.11.56: icmp_seq=0 ttl=126 time=126.164 ms

Namun, saat saya menyetel semua lalu lintas untuk pergi melalui VPN, saya tidak bisa lagi mengakses Internet:

$ ping google.com
PING google.com (74.125.232.48): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1

Pertanyaan

Bagaimana cara mengatur jaringan dengan benar sehingga mengerti kapan harus melalui VPN, dan kapan menggunakan koneksi normal? Saya membutuhkannya untuk menyelesaikan nama server Windows dengan benar.

Jika saya perlu memposting output perintah konsol, saya bersedia melakukan itu jika Anda memberi tahu saya yang mana tepatnya.
Setiap bantuan sangat dihargai, karena ini adalah semacam show stopper untuk saya sekarang.

Terima kasih!

Dan
sumber
Apa subnet mask VPN Anda? Jika 255.255.255.0 Anda tidak dapat mencapai server dns 192.168.10.x karena subnet Anda adalah 192.168.7.x.
hsmiths
ifconfigoutput untuk ppp0adalah flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1396 inet 192.168.7.232 --> 192.168.7.117 netmask 0xffffff00jadi saya kira itu adalah 255.255.255.0. Bagaimana saya mengubahnya? Terima kasih.
Dan
@shsmith, silakan lihat bagian Penanganan Masalah Baru. Anda benar, server DNS tidak dapat diakses. Saya biasa routemembuatnya tersedia karena saya tidak menemukan cara untuk mengubah netmask. Bagaimana saya menandainya sebagai "DNS untuk semua yang berhubungan dengan 192.168"?
Dan
Saya tidak tahu apa server VPN yang Anda miliki di ujung jarak jauh, tapi saya pikir di situlah Anda harus mencari untuk memperbaiki masalah. Sepertinya VPN adalah pengaturan terowongan terpisah, yang berarti kedua akses ke ujung VPN adalah melalui VPN, tetapi akses (Internet) lainnya adalah melalui gateway normal Anda. Server VPN harus dikonfigurasikan untuk menentukan server nama dan domain yang digunakan untuk ini. Selain itu, pertanyaan Anda tentang menandai server DNS yang akan digunakan untuk 192.168. Kueri terkait adalah yang salah - itu bagian nama domain yang perlu 'ditandai', untuk digunakan dengan server DNS internal, bukan IP.
barryj
@barryj, terima kasih banyak atas masukan Anda. Saya akan bertanya kepada administrator, tetapi saya pikir saya adalah satu-satunya yang memiliki masalah ini, jadi saya tidak ingin meluangkan waktu jika saya dapat membuatnya sendiri. Sedangkan untuk DNS, saya hanya ingin menggunakan VPN untuk mengakses komputer lain di jaringan Windows, mis. Komputer saya yang bekerja untuk RDC, server database untuk pengembangan, dll.
Dan

Jawaban:

3

Anda mungkin ingin melihat halaman resolver

Mengutip satu solusi:

Konfigurasi untuk klien tertentu dapat dibaca dari file yang memiliki format yang dijelaskan dalam halaman manual ini. Ini saat ini terletak oleh sistem dalam file /etc/resolv.conf dan dalam file yang ditemukan di direktori / etc / resolver. Namun, konfigurasi klien tidak terbatas pada penyimpanan file. Implementasi strategi pencarian multi-klien DNS juga dapat menemukan konfigurasi klien di sumber data lain, seperti Database Konfigurasi Sistem. Pengguna sistem DNS tidak boleh membuat asumsi tentang sumber data konfigurasi.

AFAIK Anda perlu menempatkan sebuah file bernama example.comdalam /etc/resolverdengan IP dari nameserver untuk domain bahwa jika Anda ingin nameserver khusus untuk example.com- Bisa jadi mereka menggunakan resolv.confsintaks, saya tidak ingat. Tapi Anda harus bisa mengetahuinya :)

EDIT: Sejauh mengotomatiskan prosesnya, saya cukup yakin itu bisa dilakukan dengan AppleScript atau Automator. Tapi saya tidak pernah memikirkannya sehingga pertanyaan kedua tentang topik itu bisa membantu.

Martin M.
sumber
Terima kasih! Bekerja dengan baik. Sintaks untuk file di / etc / resolver seperti resolv.conf, misalnya "nameserver 1.2.3.4" bekerja di luar kotak untuk saya.
Per Lundberg
3

Tampaknya ada masalah dengan pengaturan OSX netmask salah. Ini adalah pengalaman saya menggunakan PPTP VPN di Snow Leopard dan Mountain Lion, dan didukung oleh utas ini di sini .

Saya menemukan solusi di sini , yang melibatkan pengaturan aturan routing untuk lalu lintas ppp0.

Pada dasarnya:

$ sudo <your_text_editor_of_choice> /etc/ppp/ip-up

    #!/bin/sh
    /sbin/route add -net 192.168 -interface ppp0

$ sudo chmod 755 /etc/ppp/ip-up

Ini akan mengatur aturan perutean setiap kali Anda terhubung ke VPN.

Dekan
sumber
2

Resolusi DNS Mac OSX lucu. Inilah perbaikan cepat.

  1. Masukkan kode berikut ini dalam nama file reset_dns.

    #!/bin/bash
    
    function get_pri_srvc_id ()
    {
      cat <<EOF | scutil | \
        grep 'PrimaryService' | \
        awk -F': ' '{print $2}'
    show State:/Network/Global/IPv4
    EOF
    }
    
    function get_srvc_name ()
    {
      cat <<EOF | scutil | \
        grep 'UserDefinedName' | \
        awk -F': ' '{print $2}'
    show Setup:/Network/Service/$1
    EOF
    }
    
    function get_srvc_ids ()
    {
      cat <<EOF | scutil | \
        sed -nEe '
    /ServiceOrder/ {
      :ids
      n
      /[0-9]+ :/ {
        s/ *[0-9]+ : ([0-9A-Z-]+) */\1/p
        b ids
      }
    }'
    show Setup:/Network/Global/IPv4
    EOF
    }
    
    function get_srvc_id_by_name ()
    {
      local srvc_ids=$(get_srvc_ids)
    
      for srvc_id in $srvc_ids
      do
        local srvc_name=$(get_srvc_name "$srvc_id")
        if [[ "$srvc_name" == "$1" ]]
        then
          echo $srvc_id
          return
        fi
      done
    }
    
    function get_dns_ips ()
    {
      local srvc_id=$(get_srvc_id_by_name "$1")
    
      cat <<EOF | scutil | \
        sed -nEe '
    /ServerAddresses/ {
      :ips
      n
      /[0-9]+ :/ {
        s/ *[0-9]+ : ([0-9.]+) */\1/p
        b ips
      }
    }'
    show $2:/Network/Service/$srvc_id/DNS
    EOF
    }
    
    function set_dns_ips ()
    {
      networksetup -setdnsservers "$@"
    }
    
    vpn_srvc_name='MY VPN'
    ip_file='/tmp/setup_dns_ips'
    
    pri_srvc_id=$(get_pri_srvc_id)
    pri_srvc_name=$(get_srvc_name "$pri_srvc_id")
    
    if [[ ! -e "$ip_file" ]]
    then
      setup_dns_ips=$(get_dns_ips "$pri_srvc_name" "Setup")
      state_dns_ips=$(get_dns_ips "$pri_srvc_name" "State")
      setup_vpn_ips=$(get_dns_ips "$vpn_srvc_name" "Setup")
      state_vpn_ips=$(get_dns_ips "$vpn_srvc_name" "State")
    
      echo "set_dns_ips $pri_srvc_name $setup_vpn_ips $state_vpn_ips $setup_dns_ips $state_dns_ips"
      set_dns_ips "$pri_srvc_name" $setup_vpn_ips $state_vpn_ips $setup_dns_ips $state_dns_ips
    
      if [[ -z "$setup_dns_ips" ]]
      then
        setup_dns_ips="Empty"
      fi
    
      echo $setup_dns_ips >$ip_file
    else
      setup_dns_ips=$(cat $ip_file)
    
      echo "set_dns_ips $pri_srvc_name $setup_dns_ips"
      set_dns_ips "$pri_srvc_name" $setup_dns_ips
    
      rm $ip_file
    fi
    
  2. Ganti kata 'MY VPN' dengan nama koneksi VPN Anda.

  3. Setelah terhubung ke VPN Anda, jalankan reset_dnsdari jendela terminal

Mac OSX hanya menggunakan server DNS yang terkait dengan koneksi jaringan 'Primer' Anda. Kode di atas menambahkan server DNS dari koneksi VPN Anda ke koneksi jaringan Utama (yaitu biasanya Wi-Fi atau Ethernet) sehingga server DNS VPN Anda akan digunakan terlebih dahulu, kemudian server DNS koneksi Utama Anda kedua.

Jalankan reset_dnsperintah lagi setelah memutuskan bentuk VPN Anda untuk menghapus entri dan mengembalikan konfigurasi server DNS asli. Ini adalah opsional, karena biasanya tidak ada ruginya membiarkan server DNS tetap terhubung.

mesin pengupas
sumber
0

Saya memiliki masalah yang sama. Ternyata router rumah saya berada pada kisaran IP yang sama dengan sistem kerja saya. Setelah saya mengubah router rumah saya ke jangkauan yang berbeda, saya dapat terhubung.

pengguna174089
sumber