Mac OS X Mountain Lion - La résolution DNS utilise un mauvais ordre sur VPN via une connexion d'accès à distance


23

J'utilise un MacBook avec Mac OS X 10.8.2 et je me connecte au réseau de mon entreprise via VPN. Tout fonctionne très bien lors de l'établissement de la connexion VPN via LAN ou WLAN. Cependant, lorsque j'utilise une connexion d'accès à distance (clé USB HSDPA Huawei), les noms d'hôte ne sont pas correctement résolus dans les applications (par exemple, navigateur Web). Les outils de ligne de commande comme host namerésoudront correctement l'adresse IP, ping namene résoudront pas.

Utilisation scutil --dnsJ'ai vidé la configuration DNS lors de la connexion via WLAN vs accès à distance. Il existe une différence notable dans l'ordre de recherche:

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

La connexion ppp0 est la connexion VPN. Comme vous pouvez le voir, deux serveurs sont connectés et répondent correctement sur la ligne de commande et dans les applications.

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

Cette fois, ppp1 est la connexion VPN et ppp0 est la connexion UMTS. À partir des temps de réponse des commandes (en utilisant le nom d'hôte inexistant foo.bar.local), j'infère qui pingutilise la première chaîne de résolveurs, où as hostutilise la configuration de requête étendue. pingprend 5 secondes pour retourner "Hôte inconnu", hostrevient immédiatement. Je suppose que le ping s'exécute dans le délai d'expiration de 5 secondes du résolveur mdns.

Afin de résoudre mon problème avec les recherches DNS cassées lors de la connexion via VPN via modem, je dois changer l'ordre des résolveurs. Jusqu'à présent, je n'ai pas trouvé de moyen de le faire.

Toutes les idées sont les bienvenues.

Réponses:


7

J'ai eu le même problème sur mon Mac, et après l'avoir résolu, j'ai compris qu'il était dû à FortiClient (client VPN). Même lorsque FortiClient a été déconnecté - son DNS est toujours apparu dans le scutil.

La solution pour moi était:

scutil
> list ".*DNS"

Cela vous montrera une liste de toutes les configurations DNS, qui ressemblera à quelque chose comme:

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>

Pour vérifier chacun d'eux, exécutez: (jusqu'à ce que vous trouviez celui qui pose problème)

> get key_name
> d.show

… Et pour le réparer, lancez:

> get key_name
> d.remove ServerAddresses
> set key_name

Voici à quoi cela ressemblait sur ma machine:

> 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

Essayez de changer l'ordre des entrées DNS dans le volet des préférences Réseau:

  1. Ouvrez les Préférences SystèmeRéseau .

  2. Sélectionnez votre service réseau dans la liste de gauche.

  3. Déverrouillez le volet des préférences à l'aide du verrou dans le coin inférieur gauche.

  4. Cliquez sur Avancé… et choisissez l' onglet DNS .

  5. Modifiez l'ordre des serveurs DNS en les faisant glisser vers le haut / bas.


2
Cela ne fournit pas de réponse à la question. Pour critiquer ou demander des éclaircissements à un auteur, laissez un commentaire sous son article - vous pouvez toujours commenter vos propres articles, et une fois que vous aurez une réputation suffisante, vous pourrez commenter n'importe quel article .
grg

C'est un commentaire étrange. L'affiche n'a pas mentionné s'il avait essayé cela dans sa question et cela pourrait être pertinent et une solution simple à son problème. Difficile à dire sans utiliser la même configuration.
db

2
Telle qu'elle est libellée, elle est rédigée comme une demande de clarification - les réponses doivent être écrites comme des réponses; les commentaires sont l'endroit le plus approprié pour demander des éclaircissements. Cette réponse se trouvait dans la file d'attente des avis sur le Low Quality Post, et à mon avis, le commentaire sur l'action semblait le plus approprié. En effet, reformuler cela comme une réponse (et ajouter des détails tels que des captures d'écran et une liste d'instructions correctement formatée) en ferait une réponse complète et légitime.
grg

C'est ridicule. Êtes-vous Rainman ou quoi? C'était une réponse exprimée de manière passive et humble (car il est tellement évident que la personne qui posait la question - qui semblait assez compétente - l'avait probablement essayée mais avait juste oublié de la mentionner dans la question). Et si vous aviez essayé mes suggestions vous-même, vous remarqueriez que probablement aucune étape au-delà des étapes incluses (Préférences Système -> Réseau) n'était nécessaire pour quelqu'un d'aussi compétent que l'OP.
db

Comme je l'ai dit, c'est simplement mon opinion. Ce n'est pas moi qui vous ai voté en passant. J'ai modifié votre réponse pour inclure plus de détails sur les étapes. N'hésitez pas à annuler la modification si vous pensez qu'elle était inappropriée.
grg

2

J'ai trouvé une solution de contournement: votre DNS VPN sera toujours ignoré et seul le DNS de dongle 3G sera utilisé, mais l'ajout de votre DNS VPN à la liste sous l'interface 3G fait l'affaire… Le principal problème est que le gestionnaire de connectivité 3G écrase la configuration à chaque fois vous cliquez sur se connecter, et vous avez besoin du gestionnaire de connectivité pour activer la radio sur le dongle 3G… j'ai donc mélangé les deux solutions en une:

  1. Connectez-vous à votre VPN et notez votre DNS (j'en ai 2 sur la liste). Vous pouvez le vérifier dans Préférences réseau → Avancé → onglet DNS. Déconnectez le VPN. Vous devez vous connecter au VPN car le DNS est attribué dynamiquement lors de la connexion…

  2. Connectez-vous à votre 3G et faites de même: écrivez le DNS sur papier. Déconnectez ensuite la 3G.

  3. Allez dans Préférences réseau → cliquez sur l'interface 3G → Avancé → Onglet DNS, et sous le tableau DNS (qui sera généralement vide car vous n'êtes pas connecté), cliquez sur '+'. Ajoutez tous les serveurs DNS (ceux de la 3G d'abord, puis ajoutez le VPN plus tard). Cliquez sur OK et sur Appliquer.

  4. À partir de maintenant , pour vous connecter à la 3G, branchez simplement votre clé USB et attendez d'avoir une couverture 3G (vous devrez ouvrir le gestionnaire de connectivité 3G), mais n'utilisez pas le gestionnaire de connectivité fourni pour vous connecter. Et s'il se connecte automatiquement, accédez aux préférences et décochez cette case. Vous avez besoin que le directeur ne tourner la radio sur la Dongle USB, rien d' autre.

    Si vous cliquez sur "se connecter" sur votre gestionnaire 3G, il écrasera la configuration sur votre interface 3G et vous devrez répéter l'étape 3 à nouveau.

  5. Allez dans Réseau → Préférences et cliquez sur l'interface 3G. Cliquez ensuite sur se connecter. Il se connectera à votre 3G en utilisant les serveurs DNS configurés (au lieu d'être reçus dynamiquement), qui incluent à la fois le DNS "public" et votre DNS VPN.

  6. Connectez-vous à votre VPN. Cela fonctionnera comme prévu.

Sachez simplement que:

  • Si votre VPN DNS change, vous devez le changer manuellement. Cela peut être facilement vérifié sous Réseau → Interface VPN w Avancé → onglet DNS car votre VPN DNS est toujours assigné dynamiquement à l'interface (bien qu'ignoré par OS X).

  • Si votre DNS 3G change (peu probable), vous devez également le modifier manuellement. Si quelque chose ne va pas et que vous ne pouvez pas naviguer, vous devez passer par votre gestionnaire de connectivité 3G, cliquez sur "Connecter" et voir quels DNS sont attribués dynamiquement… Cela vous obligera à revenir à l'étape 3 et à le reconfigurer.


2

J'ai eu le même problème pendant longtemps, mais maintenant j'ai eu le temps de trouver une solution qui fonctionne pour moi. Je n'ai pas changé l'ordre du serveur DNS, mais j'utilise le serveur DNS derrière le VPN en permanence.

  1. Connectez-vous via un modem.

  2. Connectez la connexion VPN et copiez les adresses IP du serveur DNS et le domaine de recherche depuis Connexion VPN → Avancé → DNS.

  3. Déconnectez la connexion VPN.

  4. Ping <name>ou <hostname>de votre serveur VPN et notez l'IP.

  5. Déconnectez la connexion d'accès à distance.

  6. Dupliquez la connexion d'accès à distance (par exemple, nommez-la "3G pour VPN").

  7. Saisissez les adresses IP et le domaine de recherche dans l'onglet DNS de la connexion d'accès à distance. Ils seront stockés et utilisés en permanence.

  8. Connectez-vous via la nouvelle connexion d'accès à distance.

  9. Maintenant, vous n'avez plus accès aux serveurs de noms (car ils sont sécurisés par le VPN) - vous devez modifier l'adresse du serveur de la connexion VPN. Remplacez l'hôte par l'IP.

  10. Connectez-vous via une connexion VPN et vous devriez pouvoir l'utiliser.

Remarque: En général, les noms d'hôte ne changent pas, mais les adresses IP le peuvent. Alors si ça ne marche pas un jour, refaites les étapes…


Salut Alexander, cela ressemblait à une approche prometteuse. Cependant, je n'ai pas eu de chance bien que l'ordre du résolveur DNS soit plutôt bon. Vous devez vérifier à nouveau avec notre informatique.
user1248552

1

ce que vous avez dit m'a donné un indice, j'ai donc ajouté l'IP dns dans la connexion vpn à la liste dns dans la connexion principale (rien d'extraordinaire, il suffit d'utiliser l'interface graphique pour les préférences réseau.) Je ne sais pas si ce que vous sont différents, mais cela a fonctionné avec moi.


1

Cela se produit toujours dans 10.13.0

J'ai ouvert un rapport de bogue avec Apple. Il n'est pas normal que "ping internalhostname" fonctionne mais "host internalhostname" ou "nslookup internalhostname" échoue avec les VPN à tunnel partagé (basés sur Cisco IPSec ou IKEv2).

En outre, comme certains l'ont remarqué, les connexions Cisco IPsec ainsi que les connexions IKEv2 ne peuvent pas être priorisées avec "Définir l'ordre de service" contrairement à L2TP / IPsec qui le peut.

Un autre point que j'aimerais soulever est que les VPN Cisco IPSec ou IKEv2 à tunnel partagé ne montrent aucun serveur DNS ou domaine de recherche dans leurs paramètres avancés, même si ces informations apparaissent avec «scutil --dns». Les VPN L2TP / IPsec affichent très bien ces informations.

Quelque chose doit donner et Apple doit fournir une explication / correction.


Je trouve que c'est la situation en ce moment avec macOS à la fin de 2017. Un DNS divisé qui est configuré sur un domaine n'est pas honoré. J'exécute les scutil --dnscommandes ci-dessus et il semble que le DNS du VPN est toujours le dernier et n'est pas utilisé pour le domaine de recherche, même s'il est correctement défini.
mcdado

0

Ne fonctionne pas dans Lion / Mountain Lion, en raison d'un bogue qui fait que le serveur DNS local est toujours utilisé à la place du serveur DNS du réseau distant même lorsque Split DNS est correctement configuré dans le routeur VPN.

Cependant, si vous utilisez un routeur IPSEC Cisco ASA, vous pouvez forcer l'utilisation des serveurs DNS distants chaque fois que vous établissez une connexion VPN:

Si vous utilisez Cisco ASDM, accédez à Configuration> Accès réseau (client)> Stratégies de groupe> (votre groupe VPN pour OSX / iPhones)> Avancé> Tunneling divisé

Il a défini: Noms DNS (décochez "hériter" et définissez les noms de domaine DNS internes, par exemple myoffice.local) Envoyer toutes les recherches DNS via le tunnel: défini sur OUI (il s'agit du paramètre important)

Enregistrez-le et n'oubliez pas de le stocker dans le flash pour une utilisation future.

Si vous utilisez la ligne de commande IOS, définissez:

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

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.