Tengo un servidor (que ejecuta Ubuntu 16.04) en mi red local, que entre otras cosas, ejecuta DMSmasq. Mi dominio local es njj.chickenkiller.com.
Funcionando en mi Mac, si consulta el DNS, devuelve la dirección LAN de varias máquinas en 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 predeterminado, 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 una máquina con Windows 7 y Linux corriendo en la red cuando uso el comando ping (o cualquier otro comando), siempre usan la dirección LAN (192.168.2.4), por lo que asumo que esto es algo específico de macOS.
¿Por qué es esto importante para mí? El enrutador que tengo de mi ISP descarta los paquetes de la LAN que intenta acceder a las máquinas usando la dirección WAN. Esto significa que los comandos que acceden a otras máquinas en la red fallan. por ejemplo:
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 debo configurar mi Mac para que solo use el DNS configurado para resolver los hosts se recibirá con gratitud.
EDITAR: ¿Cuál es mi dominio de búsqueda ?: En la página de configuración de red, el servidor DNS se muestra como 192.168.2.4 y el dominio de búsqueda se muestra 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 (de ubuntu 16.04 host, "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