Estoy usando un MacBook Pro con OS X Mavericks 10.9.2. Se conecta a internet a través de un USB 3G dongle, y quiero compartir esa conexión a internet a través de wifi. Sin embargo, en los dispositivos que se conectan a la creación de punto de acceso wifi, búsqueda de DNS no funciona (a pesar de que me puede hacer ping a 8.8.8.8 muy bien). Si me estáticamente configurar los dispositivos para el uso 8.8.8.8, todo funciona, pero no todo el dispositivo admite que (o sólo si también estás dispuesto a configurar una dirección IP estática y la 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 MacBook sí mismo:
$ 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 los clientes están recibiendo 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 trabajado como escrito aquí, es decir, OS X se ejecuta un bind (named
) del servidor en sí, que sólo reenvía las solicitudes de DNS y las respuestas a los servidores ISP.
Sin embargo... el uso de tcpdump
puedo ver que el cliente es obtener 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, no named
servidor se está ejecutando, y no 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
$
Nada más se escucha en el puerto UDP 53, aunque hay una cosa que se llama 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 maneras de solucionar este problema, ni muy práctico:
- La ejecución de algunas de DNS del servidor en el puerto UDP 53. Por desgracia, ninguno está instalado.
- Dígale DHCP de la mano de una dirección de servidor DNS que realmente funciona, como 8.8.8.8. Por desgracia, el
InternetSharing
aplicación sobrescribe/etc/bootp.plist
cada vez compartir la conexión de internet está activada, por lo que incluso si se ha agregado una dirección IP e incluso si iba a funcionar, no iba a funcionar para siempre.
Pero algo me dice que esto debe (y normalmente lo hace) funcionan correctamente fuera de la caja... ¿qué me estoy perdiendo?