6 votes

Le partage de l'internet distribue une mauvaise adresse de serveur DNS

J'utilise un MacBook Pro avec OS X Mavericks 10.9.2. Il se connecte à Internet via un dongle USB 3G, et je veux partager cette connexion Internet via le wifi. Cependant, sur les appareils qui se connectent au point d'accès wifi créé, la recherche DNS ne fonctionne pas (bien que je puisse faire un ping à 8.8.8.8 très bien). Si je configure statiquement les appareils pour qu'ils utilisent 8.8.8.8, tout fonctionne, mais ce n'est pas le cas de tous les appareils (ou seulement si vous souhaitez également configurer une IP et une passerelle statiques).

Le problème semble être que OS X configure bootp (le serveur DHCP) pour distribuer une adresse de serveur DNS du MacBook lui-même :

$ cat /etc/bootp.list
...
            <key>dhcp_domain_name_server</key>
            <array>
                <string>192.168.2.1</string>
            </array>
...

Il s'agit en effet de l'adresse IP de la machine elle-même :

$ ifconfig
...
bridge100: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    options=3<RXCSUM,TXCSUM>
    ether 02:26:bb:66:19:64
    inet 192.168.2.1 netmask 0xffffff00 broadcast 192.168.2.255
...

Et c'est ce que les clients reçoivent dans la réponse DHCP :

$ sudo tcpdump -vv
15:26:07.265635 IP (tos 0x0, ttl 255, id 9846, offset 0, flags [none], proto UDP (17), length 328)
    192.168.2.1.bootps > 192.168.2.2.bootpc: [udp sum ok] BOOTP/DHCP, Reply, length 300, xid 0x4e0988af, Flags [none] (0x0000)
      Your-IP 192.168.2.2
      Server-IP 192.168.2.1
      Client-Ethernet-Address 10:bf:48:cc:49:7d (oui Unknown)
      sname "ip-77-24-232-37.web.vodafone.de"
      Vendor-rfc1048 Extensions
        Magic Cookie 0x63825363
        DHCP-Message Option 53, length 1: ACK
        Server-ID Option 54, length 4: 192.168.2.1
        Lease-Time Option 51, length 4: 85536
        Subnet-Mask Option 1, length 4: 255.255.255.0
        Default-Gateway Option 3, length 4: 192.168.2.1
        Domain-Name-Server Option 6, length 4: 192.168.2.1

Cela ne poserait pas de problème si cela fonctionnait réellement comme l'a fait la Commission européenne. écrit ici c'est-à-dire qu'OS X exécute un bind ( named ), qui se contente de transmettre les demandes et les réponses DNS aux serveurs du fournisseur d'accès.

Cependant... utiliser tcpdump Je vois que le client reçoit une réponse d'erreur de ses recherches DNS :

$ sudo tcpdump
15:23:33.181447 IP 192.168.2.2.57291 > 192.168.2.1.domain: 32713+ A? google.com. (28)
15:23:33.181528 IP 192.168.2.1 > 192.168.2.2: ICMP 192.168.2.1 udp port domain unreachable, length 36

En effet, aucun named est en cours d'exécution, et il ne semble même pas être installé :

$ ps aux | grep named
thomas           2175   0.0  0.0  2423368    188 s000  R+    3:14pm   0:00.00 grep named
$ which named
$

Rien d'autre n'écoute sur le port UDP 53 non plus, bien qu'il y ait une chose appelée mDNSResponder sur 5353 :

$ sudo lsof -i -P | grep 53
mDNSRespo   47 _mdnsresponder    8u  IPv4 0x4dcb7c0f075daa1d      0t0    UDP *:5353
mDNSRespo   47 _mdnsresponder    9u  IPv6 0x4dcb7c0f075da835      0t0    UDP *:5353
natpmpd   1664           root    4u  IPv4 0x4dcb7c0f064b6f15      0t0    UDP 192.168.2.1:5351

Je vois maintenant deux façons de résoudre ce problème, mais aucune n'est très pratique :

  1. Exécutez un serveur DNS sur le port UDP 53. Malheureusement, aucun n'est installé.
  2. Demander à DHCP de distribuer une adresse de serveur DNS qui fonctionne réellement, comme 8.8.8.8. Malheureusement, l'adresse InternetSharing l'application écrase /etc/bootp.plist chaque fois que le partage d'internet est activé, donc même si j'ajoutais une adresse IP à cet endroit et même si cela fonctionnait, cela ne fonctionnerait pas éternellement.

Mais quelque chose me dit que cela devrait (et c'est généralement le cas) fonctionner correctement dès la sortie de la boîte... Qu'est-ce qui m'échappe ?

2voto

ColonelMode Points 638

En article votre référence était en effet correcte pour la date de publication et c'est ainsi que cela fonctionne avant Mavericks. Sous Mountain Lion, 'named' est lancé lorsque le partage Internet est actif avec /etc/com.apple.named.proxy.conf comme fichier de configuration. Tout ceci est observable sous Mountain Lion - je l'ai vérifié.

Cependant, la résolution des noms de domaine n'est pas seulement basée sur le DNS sous OS X comme c'est le cas dans d'autres OSen, mais plutôt sur les Directory Services -- qui permettent des recherches DNS à partir de flat-files, NIS, NetInfo, LDAP, ZeroConfig/Bonjour ... et DNS -- et c'est mDNSResponder qui est utilisé pour la résolution de ces tournures de noms. (D'après sa page de manuel mDNSResponder is also the system-wide Unicast DNS Resolver . C'est ce qui fait (ou devrait faire) la résolution DNS pour vos clients Internet partagés sous Mavericks. (Il est étrange qu'ils aient démarré named sous Mt Lion plutôt que d'utiliser mDNSResponder à l'époque).

Lorsque le partage d'Internet est activé, soit named (pré-Mavericks), soit mDNSResponder (Mavericks) est le "serveur DNS" qui doit effectuer la résolution de noms pour le partage d'Internet, et cela fait correctement de 192.168.2.1 le serveur DNS pour les clients NAPT du partage d'Internet. La réponse directe et simple à vos questions est donc qu'il ne distribue pas la "mauvaise adresse de serveur DNS".

Cette démonstration a fonctionné pour moi lorsque j'ai configuré le partage Internet pour partager ma connexion WiFi via Ethernet. Les clients desservis par Internet Sharing qui envoyaient des requêtes DNS à 192.168.2.1 recevaient correctement ces requêtes à partir d'un navigateur et, lorsqu'ils émettaient un dig @192.168.2.1 apple.com J'ai observé cela en action avec tcpdump pour vérifier. Tout fonctionne comme on peut s'y attendre.

Je constate que dans cette configuration, je peux également, à partir du Mac d'hébergement telnet 192.168.2.1 53 et se connecter à mDNSResponder. Je constate également que l'ordre de service des réseaux configurés est défini de telle sorte que le WiFi a la priorité sur l'Ethernet.

Cependant, en procédant à l'inverse, en partageant la connexion Ethernet via le WiFi, j'ai d'abord rencontré le même problème que vous. J'ai vu la requête DNS UDP envoyée mais aucune réponse, comme vous l'avez observé. Le ping est passé par 8.8.8.8 et la résolution contre 8.8.8.8 à l'aide de dig a également fonctionné correctement. J'étais prêt à écrire qu'il s'agissait d'un bogue, mais j'ai eu l'occasion de redémarrer mon MacBook Pro et j'ai réessayé, en m'assurant cette fois que l'Ethernet avait la priorité sur le WiFi dans l'ordre de service du panneau de préférences du réseau. Cette fois-ci, cela a "juste fonctionné" et je n'ai pas été en mesure de recréer le problème. Le problème a été résolu en redémarrant et en vérifiant l'ordre de service.

En outre, j'ai vérifié que je pouvais le faire :

  • Numéro un dig @192.168.2.1 apple.com d'un client (assigné à 192.168.2.3) de l'Internet Sharing et recevoir une réponse positive. J'ai également observé la requête et la réponse UDP à l'aide de tcpdump :

01:01:05.620240 IP 192.168.2.3.58817 > 192.168.2.1.domain: 34923+ A? apple.com. (27) 01:01:06.051566 IP 192.168.2.1.domain > 192.168.2.3.58817: 34923 3/0/0 A 17.149.160.49, A 17.172.224.47, A 17.178.96.59 (75)

  • À partir de l'hébergement, Mac a pu telnet 192.168.2.1 53 et recevoir une connexion.

Le partage de l'internet a toujours été un peu fragile. J'ai souvent observé des comportements étranges et j'ai constaté qu'il était préférable de redémarrer avant d'essayer d'exécuter le partage d'Internet ou au moins de "rendre [le] service inactif" dans les préférences réseau pour les interfaces en question, puis de les réactiver. (En outre, l'ordre de service (qui contrôle les passerelles par défaut) peut également avoir un impact (comme on peut s'y attendre). Vous pouvez également vous assurer que vous utilisez l'emplacement "automatique" fourni par Apple (ou un fac-similé raisonnable). N'oubliez pas non plus, lorsque vous déboguez, que chaque interface réseau peut avoir sa propre passerelle et son serveur DNS préféré à utiliser depuis Leopard environ.

Je suggérerais donc trois choses : (1) un redémarrage et une confirmation de l'ordre de priorité de votre service réseau et/ou (2) une installation propre de Mavericks pour voir si cela résout vos problèmes, ainsi que (3) vérifier que vous pouvez faire fonctionner le partage d'Internet où l'Ethernet est partagé sur le WiFi et vice-versa. Si vous ne parvenez pas à faire fonctionner (3), vous devez chercher quelque chose de spécifiquement mal configuré sur votre Mac et, là encore, cela suggère une installation propre.

Si vous pouvez faire fonctionner Ethernet -> WiFi et WiFi -> Ethernet, cela suggère quelque chose avec le dongle USB -- et peut-être qu'un ajustement de l'ordre de service pour qu'il ait une plus grande priorité est nécessaire.

Assurez-vous également que vous n'avez pas de règles de pare-feu ou que vous n'exécutez pas Little Snitch ou quoi que ce soit qui puisse interférer.

Le partage d'Internet semble également disposer d'options de débogage si vous émettez des

$ /usr/libexec/InternetSharing --help

Ceux-ci, ainsi que le fichier journal, et le fichier journal de mDNSResponder, peuvent également être utiles si vous rencontrez toujours des problèmes.

Mais comme la réponse à la question : Il ne s'agit pas d'une mauvaise adresse de serveur DNS dans DHCP, car 192.168.2.1 est le "bon" serveur DNS pour le partage Internet, selon la manière dont il est conçu pour fonctionner. Et mDNSResponder est ce qui devrait gérer le DNS sur l'hôte qui exécute le partage d'Internet sous Mavericks. Non `named est nécessaire.

2voto

l'L'l Points 8737

Le problème semble se situer à l'endroit où vous avez restreint votre recherche ; bien qu'il ne s'agisse pas d'un cas où les clients reçoivent une mauvaise adresse de serveur DNS, mais plutôt d'un cas où les clients ne peuvent pas utiliser 192.168.2.1 comme serveur DNS. La façon dont vous avez configuré les serveurs DNS sur le système qui effectue le partage d'Internet n'est pas claire, mais le problème se situe probablement dans ce domaine. Ainsi, le dchp_domain_name_server Adresse IP en bootpd.plist est correcte (du moins normalement).

Je vous recommande de procéder à quelques vérifications simples :

Ouvrez Préférences Système > Partage puis vérifiez les points suivants :

  1. Partagez votre connexion à partir de : Wi-Fi
  2. Pour les ordinateurs utilisant : Wi-Fi, Ethernet

Si vous vérifiez la présence d'Ethernet, vous obtiendrez peut-être un dialogue :

Si vous activez ce port, votre fournisseur d'accès à Internet pourrait mettre fin à votre service pour éviter que vous ne perturbiez son réseau.

Dans certains cas (si vous utilisez un modem câble, par exemple), vous pouvez involontairement affecter les paramètres du réseau de votre fournisseur d'accès et violer les les termes de votre contrat de service.

Je ne sais pas exactement ce que cela signifie (bien que je me sente violé par mon fournisseur d'accès).

Préférences système > Paramètres réseau > Ethernet/Wi-Fi :

  1. Configurer IPv4 - Utiliser DHCP
  2. Ensuite, sous Advanced...
  3. Configurer IPv6 - Automatiquement

Onglet DNS > Serveurs DNS :

(Normally this would be set to your Router IP from the previous TCP/IP Tab:
Router: ... (3G USB Dongle IP Address)

/etc/bootpd.list

  1. Arrêter le partage d'Internet.
  2. Ouvrir /tmp/bootpd.plist
  3. Localisez cette clé :

<key>reply_threshold_seconds</key> <integer>4</integer>

  1. Modifier la valeur 4 en 0
  2. Démarrer le partage d'Internet.

*Comme vous le savez, l'arrêt du partage d'Internet efface les paramètres. Une solution possible serait de créer une tâche cron ou un agent de lancement qui conserverait toujours vos paramètres. Il existe également un certain nombre d'options pour bootpd qui peuvent être exécutées via Terminal et que vous ne connaissez peut-être pas.

Autres notes :

  • Vérifiez que le(s) dispositif(s) ou ordinateur(s) situé(s) à 192.168.2.2, etc. ne bloque(nt) pas 192.168.2.1.
  • Il est possible que si le pare-feu interne d'OS X est activé, OS X transmette et reçoive des requêtes provenant d'Internet vers des appareils/ordinateurs utilisant le partage d'Internet, mais ne leur transmette pas les réponses (DNS).
  • Configurer les appareils/ordinateurs pour qu'ils utilisent une IP statique et un ou plusieurs serveurs DNS autres que 192.168.2.1 (mais ce n'est peut-être pas la solution optimale, comme vous l'avez dit). De plus, dans certaines circonstances, la configuration d'IP statiques peut ne pas fonctionner (le DHCP est généralement recommandé pour le partage de l'internet et la configuration par défaut).
  • Certains Dongles/Routeurs USB 3G disposent d'un réglage AP Isolation qui doit être désactivé pour le partage d'Internet.

Je sais que vous n'êtes pas un n00b et que vous avez probablement déjà vérifié beaucoup de ces choses, mais il pourrait s'agir d'une chose mineure que vous avez peut-être oubliée en cours de route. De plus, si aucune de ces choses simples ne semble résoudre le problème, il y a des commandes plus spécifiques que je peux fournir en attendant le résultat.

0voto

Rich Points 2429

Cette ligne dans votre tcpdump est la réponse :

15:23:33.181528 IP 192.168.2.1 > 192.168.2.2: ICMP 192.168.2.1 udp port domain unreachable, length 36

Cela signifie que votre Firewall ou un autre logiciel jouant le même rôle ou votre configuration manuelle de /etc/pf.conf a empêché votre requête DNS d'atteindre votre MBP.

Désactivez les fonctions de filtrage une à une pour déterminer celle qui bloque. Une fois trouvée, configurez-la correctement.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X