web-dev-qa-db-fra.com

Impossible de résoudre l'hôte via la connexion VPN de Mac OS X

Le préambule

Je configurais une connexion VPN de mon MacBook, et il semble se connecter avec succès.

working VPN

Cependant, je ne peux pas accéder à mon ordinateur de travail car l'hôte n'est pas résolu :

$ ping myusername
ping: cannot resolve myusername: Unknown Host

La nouvelle solution de contournement

Après avoir essayé tout ce que je pouvais, j'ai trouvé que cette commande rend à la fois le réseau VPN et Internet disponible pour moi:

Sudo route add -net 192.168.7.218 192.168.7.117 255.255.0.0

Les serveurs DNS de la société sont accessibles par leur IPS. Comment configurer le réseau pour les utiliser pour tout ce qui commence à partir de 192.168?

L'ancienne solution de contournement

J'ai trouvé une solution de contournement temporaire qui me permet d'accéder au réseau via VPN en modifiant deux options:

J'ai mis une coche dans Envoyez toute la circulation sur la connexion VPN:

VPN options

Je saisra manuellement le nom de domaine de recherche dans les paramètres DNS de l'interface VPN:

entering domain name in VPN options

Effectuer ces deux étapes suffit à rendre mon ordinateur de travail pingable:

$ 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

Cependant, comme j'ai tunnellé tout le trafic de passer par VPN, je ne peux plus accéder à 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 question

Comment puis-je configurer correctement le réseau afin qu'il comprend quand passer par VPN et quand utiliser la connexion normale? J'en ai besoin pour résoudre correctement les noms de serveur Windows.

Si j'ai besoin de poster une sortie de commande de console, je suis prêt à le faire si vous me laissez savoir quoi exactement.
[.____] Toute aide est très appréciée, car c'est une sorte de bouchon de spectacle pour moi maintenant.

Merci!

10
Dan

Il semble y avoir un problème avec OSX définissant le masque Netmask de manière incorrecte. C'était mon expérience en utilisant un PPTP VPN dans le lion de Snow Leopard et de montagne et est pris en charge par ce fil ici .

J'ai trouvé une solution ici , qui implique de définir une règle de routage pour le trafic PPP0.

Essentiellement:

$ 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

Cela définira la règle de routage chaque fois que vous vous connectez au VPN.

3
Dean

Vous voudrez peut-être regarder le Manpage de résolveur

Pour citer une solution:

La configuration d'un client particulier peut être lue à partir d'un fichier ayant le format décrit dans cette page d'homme. Celles-ci sont actuellement situées par le système dans le fichier /etc/resolv.conf et dans les fichiers trouvés dans le répertoire/etc/résolveur. Cependant, les configurations des clients ne sont pas limitées au stockage de fichiers. La mise en œuvre de la stratégie de recherche multi-client DNS peut également localiser les configuratinines du client dans d'autres sources de données, telles que la base de données de configuration du système. Les utilisateurs du système DNS ne doivent faire aucune hypothèse sur la source des données de configuration.

AFAIK, vous devez mettre un fichier nommé example.com dans /etc/resolver Avec les IP des serveurs de noms pour ce domaine si vous souhaitez des serveurs de noms spéciaux pour example.com - Peut-être qu'ils utilisent resolv.conf Syntaxe, je ne me souviens pas. Mais vous devriez être capable de comprendre ça :)

EDIT: En ce qui concerne l'automatisation du processus, je suis sûr que c'est sûr que c'est faisable avec AppleScript ou Automator. Mais je ne suis jamais à ma tête autour de moi, une deuxième question sur ce sujet pourrait aider.

3
Martin M.

Les résolutions Mac OSX DNS sont drôles. Voici la solution rapide.

  1. Mettez ce code suivant dans un nom de fichier 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. Remplacez le mot "mon VPN" avec le nom de votre connexion VPN.

  3. Une fois connecté à votre VPN, courez reset_dns à partir d'une fenêtre de terminal

Mac OSX utilise uniquement les serveurs DNS associés à votre connexion réseau "primaire". Le code ci-dessus ajoute les serveurs DNS de votre connexion VPN à la connexion réseau principale (I.e. Habituellement Wi-Fi ou Ethernet) de sorte que vos serveurs DNS VPN seront utilisés en premier, puis vos serveurs DNS de connexion principaux.

Courir le reset_dns Commande à nouveau après la déconnexion de votre VPN pour supprimer les entrées et restaurer la configuration du serveur DNS d'origine. Ceci est facultatif, cependant, car il ne blesse généralement rien de conserver les serveurs DNS associés.

2
parleer

J'ai eu le même problème. Il s'agit de mon routeur à la maison était sur la même gamme IP que mon système de travail. Une fois que j'ai changé mon routeur à la maison dans une plage différente, j'ai pu me connecter.

0
user174089