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