Impossible de résoudre l'hôte via une connexion VPN depuis Mac OS X [fermé]


10

Le préambule

J'ai configuré une connexion VPN à partir de mon Macbook, et il semble se connecter avec succès.

VPN fonctionnel

Cependant, je ne peux pas accéder à mon ordinateur de travail car le nom d'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 me rend à la fois le réseau VPN et Internet:

sudo route add -net 192.168.7.218 192.168.7.117 255.255.0.0

Les serveurs DNS de l'entreprise sont accessibles par leurs adresses IP. 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 Envoyer tout le trafic via une connexion VPN :

Options VPN

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

entrer un nom de domaine dans les options VPN

L'exécution de ces deux étapes est suffisante pour rendre pingable mon ordinateur de travail:

$ 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 tunnelisé tout le trafic pour 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 configurer correctement le réseau pour qu'il comprenne quand passer par VPN et quand utiliser la connexion normale? J'en ai besoin pour résoudre correctement les noms de serveur Windows.

Si je dois publier une sortie de commande de console, je suis prêt à le faire si vous me le faites savoir exactement.
Toute aide est très appréciée, car c'est une sorte de bouchon d'exposition pour moi maintenant.

Merci!


Quel est votre masque de sous-réseau VPN? S'il s'agit de 255.255.255.0, vous ne pouvez pas atteindre le serveur DNS 192.168.10.x car votre sous-réseau est 192.168.7.x.
hsmiths

ifconfigla sortie pour ppp0est flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1396 inet 192.168.7.232 --> 192.168.7.117 netmask 0xffffff00donc je suppose que c'est 255.255.255.0. Comment puis-je le changer? Merci.
Dan

@shsmith, veuillez consulter la section Nouvelle solution de contournement. Vous aviez raison, les serveurs DNS n'étaient pas accessibles. J'avais l'habitude routede les rendre disponibles parce que je ne trouvais pas de moyen de changer le masque de réseau. Comment les marquer comme "DNS pour tout ce qui est lié à 192.168"?
Dan

Je ne sais pas quel serveur VPN vous avez sur l'extrémité distante, mais je pense que c'est là que vous devriez chercher à résoudre le problème. Il semble que le VPN soit une configuration de tunnel divisé, ce qui signifie que l'accès à l'extrémité VPN se fait via VPN, mais que les autres accès (Internet) se font via votre passerelle normale. Le serveur VPN doit être configuré pour spécifier les serveurs de noms et le ou les domaines pour lesquels ils doivent être utilisés. En outre, votre question sur le marquage des serveurs DNS à utiliser pour les requêtes liées à 192.168 est dans le mauvais sens - c'est la partie du nom de domaine qui doit être `` marquée '', pour une utilisation avec le serveur DNS interne, pas l'IP.
barryj

@barryj, merci beaucoup pour votre contribution. Je vais demander aux administrateurs, mais je pense que je suis le seul à avoir ce problème, donc je ne veux pas prendre leur temps si je peux le faire moi-même. Quant au DNS, je veux seulement utiliser VPN pour accéder à d'autres ordinateurs sur le réseau Windows, par exemple mon ordinateur de travail pour RDC, serveur de base de données pour le développement, etc.
Dan

Réponses:


3

Vous voudrez peut-être consulter la page de manuel du résolveur

Pour citer une solution:

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

Autant que je sache , vous avez besoin de mettre un fichier nommé example.comdans /etc/resolverles adresses IP des serveurs de noms pour ce domaine si vous voulez des serveurs de noms spéciaux pour example.com- Peut - être qu'ils utilisent la resolv.confsyntaxe, je ne me souviens pas. Mais vous devriez pouvoir le comprendre :)

EDIT: En ce qui concerne l'automatisation du processus, je suis presque sûr que c'est faisable avec AppleScript ou Automator. Mais je n'ai jamais pensé à ça, donc une deuxième question sur ce sujet pourrait aider.


Merci! A bien fonctionné. La syntaxe du fichier dans / etc / resolver est similaire à resolv.conf, par exemple "nameserver 1.2.3.4" a fonctionné pour moi.
Per Lundberg

3

Il semble y avoir un problème avec la configuration incorrecte du masque de réseau par OSX. C'était mon expérience en utilisant un VPN PPTP dans Snow Leopard et Mountain Lion, 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.

Fondamentalement:

$ 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 connecterez au VPN.


2

Les résolutions DNS de Mac OSX sont amusantes. 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» par le nom de votre connexion VPN.

  3. Une fois connecté à votre VPN, exécutez à reset_dnspartir d'une fenêtre de terminal

Mac OSX utilise uniquement des serveurs DNS associés à votre connexion réseau «principale». Le code ci-dessus ajoute les serveurs DNS de votre connexion VPN à la connexion réseau principale (c'est-à-dire généralement Wi-Fi ou Ethernet) afin que vos serveurs DNS VPN soient utilisés en premier, puis vos serveurs DNS de connexion principale en second.

Exécutez à reset_dnsnouveau la commande après la déconnexion de votre VPN pour supprimer les entrées et restaurer la configuration d'origine du serveur DNS. C'est facultatif, cependant, car cela ne fait généralement rien de mal de simplement garder les serveurs DNS associés.


0

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.