Mac sembra ignorare il risultato del DNS locale per gli host locali

0

Ho un server (con Ubuntu 16.04) sulla mia rete locale, che tra le altre cose esegue DMSmasq. Il mio dominio locale è njj.chickenkiller.com.

In esecuzione sul mio Mac, se si interroga il DNS, restituisce l'indirizzo LAN di varie macchine sulla mia rete. Per esempio:.

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

e in questo esempio, il mio Mac può risolvere correttamente, utilizzando il DNS predefinito, l'indirizzo di serv2 sulla mia LAN.

Tuttavia, quando uso altri comandi (ad esempio ping) a volte risolvono correttamente:

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

altre volte, il mio Mac sembra ignorare il risultato del DNS locale (che è l'unico server dei nomi che è configurato per l'uso) e in qualche modo riesce a utilizzare l'indirizzo WAN (che si otterrebbe se si interrogasse su un altro 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

Per quanto posso dire, il server DNS locale funziona correttamente - restituisce sempre l'indirizzo LAN (192.168.2.4) e non restituisce mai l'indirizzo WAN (90.255.91.177). Ho anche Windows 7 e Linux in esecuzione sulla rete quando uso il comando ping (o qualsiasi altro comando) usano sempre l'indirizzo LAN (192.168.2.4), quindi presumo che questo sia qualcosa di specifico per macOS.

Perché è così importante per me? Il router che ho dal mio ISP scarta i pacchetti dalla LAN che tentano di accedere alle macchine usando l'indirizzo WAN. Ciò significa che i comandi che accedono ad altre macchine sulla rete falliscono. ad esempio:

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

Sto usando macOS 10.12.6

Qualche suggerimento su come dovrei configurare il mio Mac in modo che utilizzi solo il DNS configurato per risolvere gli host dovrebbe essere ricevuto con gratitudine.

EDIT: Qual è il mio dominio di ricerca ?: Nella pagina delle impostazioni di rete il server DNS è mostrato come 192.168.2.4 e il dominio di ricerca è mostrato come njj.chickenkiller.com

EDIT 2: output di comandi:

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 (da 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
    
posta Nick Sillito 12.08.2017 - 11:40
fonte

1 risposta

0

Questo mi ha fatto impazzire per anni, comunque, penso di essermi imbattuto nella soluzione.

Il modo in cui avevo impostato il mio DNS dinamico era che serv2.njj.chickenkiller.com era un alias per njj.chickenkiller.com (probabilmente non era il modo migliore per farlo, ma significava che serv2 gestiva tutte le richieste di njj.chickenkiller.com.

Quindi quando si interroga il server:

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.

Quindi quello che penso stia accadendo è che mDNSresponder è stato abbastanza intelligente da memorizzare nella cache njj.chickenkiller.com come un alias (e presumo che ciò non avvenga su Windows e Linux), quindi quando ha fatto una successiva ricerca DNS per serv2, ha cercato di risparmiare tempo inviando una query per njj.chickenkiller.com (non serv2... ), che ha memorizzato nella cache come alias. Il mio server DNS locale non ha riconosciuto njj.chickenkiller.com come parte del dominio locale e ha risposto fornendo l'indirizzo IP esterno.

Per risolvere questo ho aggiunto njj.chickenkiller.com come alias per serv2 nel file hosts usato da 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
    
risposta data 02.09.2017 - 18:49
fonte

Leggi altre domande sui tag