2 votos

El Mac parece ignorar el resultado del DNS local para los hosts locales

Tengo un servidor (con Ubuntu 16.04) en mi red local, que entre otras cosas, ejecuta DMSmasq. Mi dominio local es njj.chickenkiller.com.

Si se ejecuta en mi Mac, si se consulta el DNS, devuelve la dirección LAN de varias máquinas de mi red. Por ejemplo:

beethoven:~ nick$ dig serv2.njj.chickenkiller.com

; <<>> DiG 9.8.3-P1 <<>> serv2.njj.chickenkiller.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36867
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;serv2.njj.chickenkiller.com.   IN  A

;; ANSWER SECTION:
serv2.njj.chickenkiller.com. 0  IN  A   192.168.2.4

;; Query time: 82 msec
;; SERVER: 192.168.2.4#53(192.168.2.4)
;; WHEN: Fri Aug 11 14:22:39 2017
;; MSG SIZE  rcvd: 61

y en este ejemplo, mi Mac puede resolver correctamente, usando el DNS por defecto, la dirección de serv2 en mi LAN.

Sin embargo, cuando uso otros comandos (por ejemplo, ping) a veces se resuelven correctamente:

beethoven:~ nick$ ping serv2.njj.chickenkiller.com
PING serv2.njj.chickenkiller.com (192.168.2.4): 56 data bytes
64 bytes from 192.168.2.4: icmp_seq=0 ttl=64 time=0.832 ms

Otras veces, mi Mac parece ignorar el resultado del DNS local (que es el único servidor de nombres que está configurado para usar) y de alguna manera se las arregla para usar la dirección WAN (que obtendría si consultara otro DNS):

beethoven:lib nick$ ping serv2
PING njj.chickenkiller.com (90.255.91.177): 56 data bytes
64 bytes from 90.255.91.177: icmp_seq=0 ttl=64 time=2.140 ms

Por lo que puedo decir, el servidor DNS local funciona correctamente -- siempre devuelve la dirección LAN (192.168.2.4) y nunca devuelve la dirección WAN (90.255.91.177). También tengo tanto Windows 7 como una máquina Linux funcionando en la red cuando uso el comando ping (o cualquier otro comando) siempre usan la dirección LAN (192.168.2.4), así que asumo que esto es algo específico de MacOS.

¿Por qué es importante para mí? El router que tengo de mi ISP descarta los paquetes de la LAN que intentan acceder a las máquinas que utilizan la dirección WAN. Esto significa que los comandos que acceden a otras máquinas en la red fallan:

beethoven:lib nick$ ssh serv2
ssh: connect to host serv2 port 22: Connection refused

Estoy usando MacOS 10.12.6

Cualquier sugerencia sobre cómo debería configurar mi Mac para que sólo utilice los DNS configurados para resolver los hosts será agradecida.

EDITAR: ¿Cuál es mi dominio de búsqueda? En la página de configuración de la red el servidor DNS aparece como 192.168.2.4 y el dominio de búsqueda aparece como njj.chickenkiller.com

EDIT 2: Salida de comandos:

beethoven:bin nick$ networksetup -listallnetworkservices
An asterisk (*) denotes that a network service is disabled.
Wi-Fi
*Bluetooth PAN
*Thunderbolt Bridge
beethoven:bin nick$ networksetup -getsearchdomains  Wi-Fi
There aren't any Search Domains set on Wi-Fi.

EDIT 3: dnsmasq.conf (del host ubuntu 16.04, "serv2")

# Use google open DNS name servers (avoids the risk of a router attack)
server=/#/8.8.8.8
server=/#/8.8.4.4

# Do not use /etc/hosts, but serve hostnames from /etc/hosts.dnsmasq
no-hosts
addn-hosts=/etc/hosts.dnsmasq
local-ttl=105

# expand unqualified hostnames to suffix njj.chickenkiller.com
expand-hosts
domain=njj.chickenkiller.com

# turn on dhcp (limit leases to 12hours so updates dont need a restart)
dhcp-range=192.168.2.10,192.168.2.99,12h

# and redirect all gateway requests through router
dhcp-option=option:router,192.168.2.1

# and offer a time server
dhcp-option=option:ntp-server,192.168.2.4

# and we are the *only* dns server
dhcp-option=option:dns-server,192.168.2.4

1voto

jbastos Puntos 327

Esto me ha estado volviendo loco durante años, de todos modos, creo que he dado con la solución.

La forma en que había configurado mi DNS dinámico era que serv2.njj.chickenkiller.com era un alias de njj.chickenkiller.com (probablemente no sea la mejor manera de hacerlo, pero significaba que serv2 manejaba todas las peticiones para njj.chickenkiller.com.

Así que cuando se consulta el servidor:

beethoven:~ nick$ host serv2
serv2.njj.chickenkiller.com has address 192.168.2.4
serv2.njj.chickenkiller.com is an alias for njj.chickenkiller.com.

Así que lo que creo que está sucediendo es que mDNSresponder fue lo suficientemente inteligente como para almacenar en caché njj.chickenkiller.com como un alias (y asumo que esto no sucede en Windows y linux), por lo que cuando hizo una búsqueda de DNS posterior para serv2, trató de ahorrar tiempo mediante el envío de una consulta para njj.chickenkiller.com (no serv2... ), que se ha almacenado en la caché como alias. Mi servidor DNS local no reconoció njj.chickenkiller.com como parte del dominio local y respondió dando la dirección IP externa.

Para solucionarlo he añadido njj.chickenkiller.com como alias de serv2 en el archivo de hosts utilizado por dnsmasq:

# Fixed IP machines
192.168.2.1 gateway
192.168.2.2 wifi1
192.168.2.3 wifi2
192.168.2.4 serv2   njj.chickenkiller.com

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X