Internet Sharing entrega una dirección de servidor DNS incorrecta

Estoy usando una MacBook Pro con OS X Mavericks 10.9.2. Se conecta a Internet a través de un dongle USB 3G y quiero compartir esa conexión a Internet a través de wifi. Sin embargo, en los dispositivos que se conectan al punto de acceso wifi creado, la búsqueda de DNS no funcionará (aunque puedo hacer ping a 8.8.8.8 sin problemas). Si configuro de forma estática los dispositivos para usar 8.8.8.8, todo funciona, pero no todos los dispositivos lo admiten (o solo si también está dispuesto a configurar una IP estática y una puerta de enlace).

El problema parece ser que OS X configura bootp (el servidor DHCP) para entregar una dirección de servidor DNS de la propia MacBook:

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

De hecho, esta es la dirección IP de la máquina en sí:

$ 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
...

Y es lo que reciben los clientes en la respuesta de 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

Ahora, eso estaría bien si realmente funcionara como está escrito aquí , es decir, OS X ejecuta un namedservidor de vinculación ( ), que solo reenvía solicitudes y respuestas de DNS a los servidores del ISP.

Sin embargo... usando tcpdumppuedo ver que el cliente está recibiendo una respuesta de error de sus búsquedas de 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

De hecho, ningún namedservidor se está ejecutando y ni siquiera parece estar instalado:

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

Tampoco hay nada más escuchando en el puerto UDP 53, aunque hay algo llamado mDNSResponder en 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

Ahora se me ocurren dos formas de arreglar esto, ninguna muy práctica:

  1. Ejecute algún servidor DNS en el puerto UDP 53. Desafortunadamente, no hay ninguno instalado.
  2. Dígale a DHCP que entregue una dirección de servidor DNS que realmente funcione, como 8.8.8.8. Desafortunadamente, la InternetSharingaplicación sobrescribe /etc/bootp.plistcada vez que se activa el uso compartido de Internet, por lo que incluso si agregara una dirección IP allí e incluso si funcionara, no funcionaría para siempre.

Pero algo me dice que esto debería (y generalmente lo hace) funcionar correctamente desde el primer momento... ¿qué me estoy perdiendo?

Tengo un uso compartido de Internet que funciona en mi MacBook a mediados de 2010 con OS X 10.9.2. No tengo un namedservicio en ejecución, pero tengo un 53 en ejecución. Tenga en cuenta que eliminé el valor hexadecimal del lsofmDNSRespo 42 _mdnsresponder 8u IPv4 0t0 UDP *:5353 mDNSRespo 42 _mdnsresponder 9u IPv6 0t0 UDP *:5353 mDNSRespo 42 _mdnsresponder 64u IPv4 0t0 UDP *:53 mDNSRespo 42 _mdnsresponder 65u IPv6 0t0 UDP *:53 mDNSRespo 42 _mdnsresponder 66u IPv4 0t0 TCP *:53 (LISTEN) mDNSRespo 42 _mdnsresponder 67u IPv6 0t0 TCP *:53 (LISTEN)
Interesante. Estoy empezando a pensar que podría haber algún software que no sea de Apple interfiriendo con la configuración.
Sí, después de verificar mi sistema en busca de un servicio 'nombrado' en ejecución, busqué rápidamente en Google y varios proyectos de software iniciaron un respondedor DNS. Buena suerte en encontrarlo. ¿Has reparado los permisos en el disco duro por cierto?
Ejecuté la cosa de verificación en la Utilidad de Discos justo ahora. Nada que me llame la atención.
¿Qué pasa si intentas averiguar qué hay nameen el monitor de actividad?
Aparentemente, en Mavericks, se supone que el uso compartido de Internet habilita una capacidad de proxy DNS en el proceso mDNSResponder (las versiones anteriores usaban BIND/named, pero eso no está instalado en Mav). Desafortunadamente, no puedo ver cómo se supone que debe habilitarse el proxy DNS o qué podría interferir con él...

Respuestas (3)

El artículo al que hace referencia era correcto para cuando se publicó y así es como funciona antes de Mavericks. Bajo Mountain Lion 'named' get's lanzado cuando Internet Sharing está activo con /etc/com.apple.named.proxy.conf como el archivo de configuración. Todo esto es observable bajo Mountain Lion: lo verifiqué.

Sin embargo, la resolución de nombres de dominio no se basa solo en DNS en OS X como en otros OSen, sino que se basa en servicios de directorio, que permite búsquedas de DNS desde archivos planos, NIS, NetInfo, LDAP, ZeroConfig/Bonjour. .. y DNS, y es mDNSResponder el que se usa para la resolución de estos cambios de nombre. (Según su página de manual mDNSResponder is also the system-wide Unicast DNS Resolver. Es lo que está (o debería) hacer la resolución de DNS para sus clientes compartidos de Internet bajo Mavericks. (Fue extraño que se activaron namedbajo Mt Lion en lugar de usar mDNSResponder en ese entonces).

Cuando Internet Sharing está activado, ya sea named (pre-Mavericks) o mDNSResponder (Mavericks) es el "servidor DNS" que debe realizar la resolución de nombres para Internet Sharing, y eso convierte correctamente a 192.168.2.1 en el servidor DNS para los clientes de Internet con NAPT. Intercambio. Entonces, la respuesta directa y simple a sus preguntas es que no está entregando la "dirección del servidor DNS incorrecta".

Este demostrable funcionó para mí configurando Internet Sharing para compartir mi conexión WiFi a través de Ethernet. Se observó que los clientes atendidos por Internet Sharing enviaron solicitudes de DNS a 192.168.2.1 para recibir allí las consultas correctamente desde un navegador y al emitirlas dig @192.168.2.1 apple.com; Observé esto en acción con tcpdump para verificar. Todo "simplemente funciona" como era de esperar.

Observo que en esta configuración desde el host Mac también puedo telnet 192.168.2.1 53conectarme a mDNSResponder. También observo que tengo la Orden de servicio para las redes configuradas configuradas con WiFi que tiene prioridad sobre Ethernet.

Sin embargo, cuando ejecuté esto a la inversa, compartiendo la conexión Ethernet a través de WiFi, inicialmente experimenté el mismo problema que estaba viendo. Es decir, vi que se envió la solicitud UDP DNS pero no hubo respuesta, tal como usted observó. Ping pasó a 8.8.8.8 y la resolución contra 8.8.8.8 usando dig también funcionó bien. Estaba preparado para escribir esto como un error, pero luego tuve la oportunidad de reiniciar mi MacBook Pro y lo intenté nuevamente, también asegurándome esta vez de que Ethernet tenía prioridad sobre WiFi en el Orden de servicio del panel de preferencias de red. Esta vez "simplemente funcionó" y no pude recrear el problema. Problema resuelto reiniciando y comprobando el orden de servicio.

Además verifiqué que podía:

  • Emita un dig @192.168.2.1 apple.comde un cliente (asignado 192.168.2.3) de Internet Sharing y reciba una respuesta exitosa. También observé la consulta y respuesta UDP usando 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)

  • Desde el alojamiento Mac pudo telnet 192.168.2.1 53y recibió una conexión.

Compartir Internet siempre ha sido un poco frágil. A menudo he visto un comportamiento extraño y he descubierto que es mejor reiniciar antes de intentar ejecutar Internet Sharing o al menos "Hacer [el] servicio inactivo" en Preferencias de red para las interfaces en cuestión y luego volver a activarlas. (Asegúrese también de "Aplicar" al realizar dichos cambios). Además, la Orden de servicio (que controla las puertas de enlace predeterminadas) también puede tener un impacto (como era de esperar). Apple suministró la ubicación "Automática" (o un facsímil razonable).Recuerde al depurar también que cada interfaz de red puede tener su propia puerta de enlace y el servidor DNS preferido para usar desde después de Leopard más o menos.

Por lo tanto, sugeriría tres cosas: (1) reiniciar y confirmar la precedencia de su orden de servicio de red y/o (2) una instalación limpia de Mavericks para ver si esto resuelve sus problemas, así como (3) verificar que puede obtener Internet Compartir trabajo donde Ethernet se comparte a través de WiFi y viceversa. Si no puede hacer que (3) funcione, entonces debe buscar algo específicamente configurado incorrectamente en su Mac y nuevamente eso sugiere una instalación limpia.

Si puede hacer que funcione para Ethernet -> WiFi y WiFi -> Ethernet, esto sugiere algo con el Dongle USB, y tal vez sea necesario ajustar la orden de servicio para que tenga una prioridad más alta.

Asegúrese también de que no tiene ninguna regla de Firewall o está ejecutando Little Snitch o cualquier cosa que pueda interferir.

Internet Sharing también parece tener algunas opciones de depuración si emite

$ /usr/libexec/InternetSharing --help

Estos y su archivo de registro, junto con el archivo de registro de mDNSResponder, también pueden ser útiles si aún tiene problemas.

Pero como respuesta a la pregunta: no está entregando la dirección del servidor DNS incorrecta en DHCP, ya que 192.168.2.1 es el servidor DNS "correcto" para que se distribuya Internet Sharing en función de cómo está diseñado para funcionar. Y mDNSResponder es lo que debería manejar DNS en el host que ejecuta Internet Sharing bajo Mavericks. No `namedes necesario.

Me encontré con el mismo problema y no puedo encontrar la manera de hacerlo funcionar. Eventualmente configuré mi servidor DNS en 8.8.8.8.

El problema parece estar en el lugar en el que ha reducido su búsqueda; aunque no se trata de que los clientes reciban la dirección del servidor DNS incorrecta, sino más bien de que los clientes no pueden usar 192.168.2.1 como su servidor DNS. No está claro cómo configuró los servidores DNS en el sistema que comparte Internet, pero es probable que el problema esté dentro de ese ámbito. Entonces, con eso, la dchp_domain_name_serverdirección IP bootpd.plistes correcta (al menos normalmente).

Recomendaría hacer algunas comprobaciones simples:

Abra Preferencias del sistema > Compartir , luego verifique lo siguiente:

  1. Comparte tu conexión desde: Wi-Fi
  2. A computadoras usando: Wi-Fi, Ethernet

Si activa Ethernet, es posible que aparezca un cuadro de diálogo:

Si activa este puerto, su proveedor de servicios de Internet podría cancelar su servicio para evitar que interrumpa su red.

En algunos casos (si usa un cable módem, por ejemplo), podría afectar involuntariamente la configuración de red de su ISP y violar los términos de su contrato de servicio.

No estoy exactamente seguro de lo que eso significa (aunque me siento violado por mi ISP).

Preferencias del sistema > Configuración de red > Ethernet/Wi-Fi :

  1. Configurar IPv4 - Uso de DHCP
  2. Entonces bajoAdvanced...
  3. Configurar IPv6 - Automáticamente

Pestaña DNS > Servidores 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. Deja de compartir Internet.
  2. Abra /tmp/bootpd.plist
  3. Localiza esta clave:

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

  1. Cambiar el valor 4 a 0
  2. Comience a compartir Internet.

* Como sabe, cuando se detiene el uso compartido de Internet, se borran las configuraciones. Una posible solución a eso sería crear un trabajo cron o un agente de lanzamiento que siempre mantuviera su configuración. También hay bastantes opciones para bootpd que se pueden ejecutar a través de Terminal que quizás no conozca.

Otras notas :

  • Verifique que los dispositivos/computadoras en 192.168.2.2, etc. no estén bloqueando 192.168.2.1
  • Es posible que si el firewall interno de OS X está habilitado, OS X reenvía y recibe solicitudes de Internet a dispositivos/computadoras que usan Internet Sharing, pero es posible que no les reenvíe las respuestas (DNS).
  • Configure dispositivos/computadoras para usar una IP estática y servidores DNS que no sean 192.168.2.1 (pero puede que no sea una solución óptima como ha dicho). Además, en determinadas circunstancias, es posible que no funcione la configuración de direcciones IP estáticas (por lo general, se recomienda DHCP para compartir Internet y por defecto).
  • Algunos dongles/enrutadores USB 3G tienen una configuración AP Isolationque debe desactivarse para compartir Internet.

Sé que no eres un n00b y probablemente ya hayas revisado muchas de estas cosas, sin embargo, podría ser solo una cosa menor que tal vez te hayas perdido en el camino. Además, si ninguna de estas cosas simples parece hacer mella en la solución del problema, hay comandos más específicos que podría proporcionar a la espera del resultado.

Esta línea dentro de tu tcpdumpes la respuesta:

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

Significa que su Firewallu otro software que juega el mismo papel o su configuración manual /etc/pf.confbloqueó su solicitud de DNS para que no llegue a su MBP.

Desactive cualquier función de filtrado de una en una para encontrar cuál está bloqueando. Una vez encontrado, configúralo correctamente.