Impossibile risolvere l'host tramite la connessione VPN da Mac OS X [chiuso]


10

Il preambolo

Ho impostato una connessione VPN dal mio Macbook e sembra connettersi correttamente.

VPN funzionante

Tuttavia, non riesco ad accedere al mio computer di lavoro perché il nome host non viene risolto:

$ ping myusername
ping: cannot resolve myusername: Unknown host

La nuova soluzione alternativa

Dopo aver provato tutto il possibile, ho scoperto che questo comando mi ha reso disponibile sia la rete VPN che Internet:

sudo route add -net 192.168.7.218 192.168.7.117 255.255.0.0

I server DNS dell'azienda sono accessibili tramite i loro IP. Come configuro la rete per usarli per tutto ciò che parte da 192.168?

La vecchia soluzione alternativa

Ho trovato una soluzione temporanea che mi consente di accedere alla rete tramite VPN modificando due opzioni:

Metto un segno di spunta in Invia tutto il traffico tramite connessione VPN :

Opzioni VPN

Inserisco manualmente il nome del dominio di ricerca nelle impostazioni DNS dell'interfaccia VPN:

inserendo il nome di dominio nelle opzioni VPN

Eseguire questi due passaggi è sufficiente per rendere pingabile il mio computer funzionante:

$ 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

Tuttavia, poiché ho sintonizzato tutto il traffico per passare attraverso la VPN, non riesco più ad accedere a 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

La domanda

Come si configura correttamente la rete in modo che capisca quando passare tramite VPN e quando utilizzare la normale connessione? Ne ho bisogno per risolvere correttamente i nomi dei server Windows.

Se devo pubblicare qualsiasi output del comando della console, sono disposto a farlo se mi fate sapere quale esattamente.
Qualsiasi aiuto è molto apprezzato, poiché per me questo è un tipo di tappo per lo spettacolo.

Grazie!


Qual è la tua subnet mask VPN? Se è 255.255.255.0 non è possibile raggiungere il server DNS 192.168.10.x perché la sottorete è 192.168.7.x.
hsmiths,

ifconfigl'output per ppp0è flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1396 inet 192.168.7.232 --> 192.168.7.117 netmask 0xffffff00quindi suppongo che sia 255.255.255.0. Come lo cambio? Grazie.
Dan

@shsmith, consulta la sezione Nuova soluzione alternativa. Avevi ragione, i server DNS non erano accessibili. Ho usato routeper renderli disponibili in quanto non ho trovato un modo per cambiare la maschera di rete. Come posso contrassegnarli come "DNS per tutto ciò che riguarda 192.168"?
Dan

Non so quale server VPN hai sull'estremità remota, ma penso che sia lì che dovresti cercare di risolvere il problema. Sembra che la VPN sia una configurazione a tunnel diviso, il che significa che l'accesso alla fine della VPN è tramite VPN, ma l'altro accesso (Internet) avviene tramite il tuo normale gateway. Il server VPN deve essere configurato per specificare i server dei nomi e i domini per i quali devono essere utilizzati. Inoltre, la tua domanda sul contrassegno dei server DNS da utilizzare per le query relative a 192.168. è la strada sbagliata: è la parte del nome di dominio che deve essere "contrassegnata", per l'uso con il server DNS interno, non con l'IP.
Barryj,

@barryj, grazie mille per il tuo contributo. Chiederò agli amministratori, ma penso di essere l'unico con questo problema, quindi non voglio prendermi il loro tempo se posso farlo da solo. Per quanto riguarda il DNS, voglio usare solo VPN per accedere ad altri computer sulla rete Windows, ad esempio il mio computer funzionante per RDC, server di database per lo sviluppo, ecc.
Dan

Risposte:


3

Potresti voler consultare la manpage del risolutore

Per citare una soluzione:

La configurazione per un particolare client può essere letta da un file con il formato descritto in questa pagina man. Questi sono attualmente localizzati dal sistema nel file /etc/resolv.conf e nei file trovati nella directory / etc / resolver. Tuttavia, le configurazioni client non si limitano all'archiviazione dei file. L'implementazione della strategia di ricerca multi-client DNS può anche individuare configurazioni client in altre origini dati, come il database di configurazione del sistema. Gli utenti del sistema DNS non devono fare ipotesi sulla fonte dei dati di configurazione.

Per quanto ne so è necessario mettere un file chiamato example.comin /etc/resolvercon gli IP dei nameserver per il dominio, se si desidera nameserver speciali per example.com- Potrebbe essere che usano resolv.confla sintassi, non riesco a ricordare. Ma dovresti riuscire a capirlo :)

EDIT: Per quanto riguarda l'automazione del processo, sono abbastanza sicuro che sia fattibile con AppleScript o Automator. Ma non mi capisco mai intorno, quindi una seconda domanda su questo argomento potrebbe essere d'aiuto.


Grazie! Ha funzionato bene. La sintassi per il file in / etc / resolver è come resolv.conf, ad esempio "nameserver 1.2.3.4" ha funzionato per me.
Per Lundberg,

3

Sembra che ci sia un problema con OSX che imposta la maschera di rete in modo errato. Questa è stata la mia esperienza nell'uso di una VPN PPTP sia in Snow Leopard che in Mountain Lion, ed è supportato da questo thread qui .

Ho trovato una soluzione qui , che prevede l'impostazione di una regola di routing per il traffico ppp0.

Fondamentalmente:

$ 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

Ciò imposterà la regola di routing ogni volta che ti connetti alla VPN.


2

Le risoluzioni DNS di Mac OSX sono divertenti. Ecco la soluzione rapida.

  1. Inserisci questo codice nel seguente nome di 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. Sostituisci la parola "MY VPN" con il nome della tua connessione VPN.

  3. Una volta connesso alla tua VPN, esegui reset_dnsda una finestra del terminale

Mac OSX utilizza solo server DNS associati alla connessione di rete "Principale". Il codice sopra aggiunge i server DNS della tua connessione VPN alla connessione di rete primaria (cioè di solito Wi-Fi o Ethernet) in modo che i tuoi server DNS VPN vengano utilizzati per primi, quindi i server DNS di connessione primaria in secondo luogo.

Eseguire reset_dnsnuovamente il comando dopo essersi disconnesso dalla VPN per rimuovere le voci e ripristinare la configurazione del server DNS originale. Questo è facoltativo, tuttavia, poiché di solito non danneggia nulla solo per mantenere associati i server DNS.


0

Ho avuto lo stesso problema. Si scopre che il mio router di casa era sulla stessa gamma IP del mio sistema di lavoro. Una volta cambiato il router di casa in un intervallo diverso, sono stato in grado di connettermi.

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.