Wyszukiwanie DNS w systemie MacOS ignoruje odpowiedzi z serwera DNS

0

Skonfigurowałem moją sieć domową z własnym serwerem DNS (uruchamiam dnsmasq na moim serwerze, na którym działa serwer Ubuntu 16.04). Na tym serwerze działa również DHCP i informuje klientów, że jest to serwer DNS.

Mój serwer DNS jest skonfigurowany do rozpoznawania nazw w mojej sieci lokalnej, a także zewnętrznie.

Mam skonfigurowaną w pełni kwalifikowaną nazwę domeny (za pośrednictwem dynamicznej usługi DNS), dzięki czemu mogę uzyskać dostęp do usług w mojej sieci LAN z laptopa, gdy nie ma mnie w domu. Wszystko działa dobrze zarówno na moim komputerze z systemem Windows 7, jak i na różnych innych komputerach z systemem Ubuntu działających w sieci, jednak utknie na moim MacBooku, na którym obecnie działa MacOS 10.12.3.

Z mojego MacBooka w mojej sieci LAN mogę wyszukać adres mojego serwera Ubuntu (serv2), używając polecenia dig w następujący sposób:

nick@deathrow:~$ dig serv2

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

;; QUESTION SECTION:
;serv2.             IN  A

;; ANSWER SECTION:
serv2.          0   IN  A   192.168.2.4

;; Query time: 9 msec
;; SERVER: 192.168.2.4#53(192.168.2.4)
;; WHEN: Sat Feb 25 18:24:17 2017
;; MSG SIZE  rcvd: 39

Jak widać, poprawnie łączy się z moim serwerem DNS na mojej sieci LAN pod adresem 192.168.2.4 i poprawnie zwraca adres serwera 192.168.2.4.

Jeśli jednak spróbuję użyć polecenia, aby uzyskać dostęp do serv2, użyje zewnętrznego adresu IP serv2. Oto prosty przykład użycia ping:

nick@deathrow:~$ ping serv2
PING njj.chickenkiller.com (84.63.173.131): 56 data bytes
64 bytes from 84.63.173.131: icmp_seq=0 ttl=64 time=19.293 ms

Jak widać, używa adresu zewnętrznego 84.63.173.131 zamiast adresu wewnętrznego 192.168.2.4

Jeśli następnie wyczyszczę pamięć podręczną DNS komputera Mac i uruchomię polecenie ping, aby uzyskać dostęp do serv2, to działa trochę dobrze:

sudo dscacheutil -flushcache;sudo killall -HUP mDNSResponder
Password:
nick@deathrow:~$ ping serv2
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=1.854 ms

ale bardzo szybko wraca do używania adresu zewnętrznego:

ping serv2
PING njj.chickenkiller.com (84.63.173.131): 56 data bytes
64 bytes from 84.63.173.131: icmp_seq=0 ttl=64 time=2.668 ms

Jest to uciążliwe, ponieważ mam zaporę sieciową dla większości usług w mojej sieci (więc jeśli serv2 rozwiązuje problem z 192.168.2.4, drukowanie działa, jeśli rozwiązuje się na adres zewnętrzny, drukowanie kończy się niepowodzeniem)

Masz pomysł, jak mogę zmusić moją Mac Book do korzystania z lokalnej usługi DNS?

EDYCJA: Dane wyjściowe z scutil --dns:

nick@deathrow:~$ scutil --dns
DNS configuration

resolver #1
  search domain[0] : njj.chickenkiller.com
  nameserver[0] : 192.168.2.4
  if_index : 4 (en0)
  flags    : Request A records
  reach    : Reachable, Directly Reachable Address

resolver #2
  domain   : local
  options  : mdns
  timeout  : 5
  flags    : Request A records
  reach    : Not Reachable
  order    : 300000

resolver #3
  domain   : 254.169.in-addr.arpa
  options  : mdns
  timeout  : 5
  flags    : Request A records
  reach    : Not Reachable
  order    : 300200

resolver #4
  domain   : 8.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  flags    : Request A records
  reach    : Not Reachable
  order    : 300400

resolver #5
  domain   : 9.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  flags    : Request A records
  reach    : Not Reachable
  order    : 300600

resolver #6
  domain   : a.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  flags    : Request A records
  reach    : Not Reachable
  order    : 300800

resolver #7
  domain   : b.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  flags    : Request A records
  reach    : Not Reachable
  order    : 301000

DNS configuration (for scoped queries)

resolver #1
  search domain[0] : njj.chickenkiller.com
  nameserver[0] : 192.168.2.4
  if_index : 4 (en0)
  flags    : Scoped, Request A records
  reach    : Reachable, Directly Reachable Address

EDYCJA (2): Użyłem Namebench do przetestowania czasu odpowiedzi mojego serwera DNS (działającego na zdalnym kliencie linux), a reszta jest tutaj . Mój serwer jest pokazany jako SYS-127.0.1.1. Nie jestem w tym ekspertem, ale jego wydajność wygląda ok w porównaniu z alternatywnymi

EDYCJA 3: wyjście z dns-sd

Last login: Thu Mar  9 07:04:41 on console
jay@sol3:~$ dns-sd -q njj.chickenkiller.com 255 255
DATE: ---Sat 11 Mar 2017---
 9:56:51.048  ...STARTING...
Timestamp     A/R Flags if Name                          Type  Class           Rdata
 9:56:52.055  Add     2  0 njj.chickenkiller.com.        ANY    25     0.0.0.0    No Such Record
 9:57:48.377  Add     2  0 njj.chickenkiller.com.        ANY    25     0.0.0.0    No Such Record
 9:58:43.590  Add     2  0 njj.chickenkiller.com.        ANY    25     0.0.0.0    No Such Record
 9:59:39.598  Add     2  0 njj.chickenkiller.com.        ANY    25     0.0.0.0    No Such Record
10:00:06.548  Add     2  0 njj.chickenkiller.com.        AAAA   IN     0.0.0.0    No Such Record
10:00:06.633  Add     2  0 njj.chickenkiller.com.        Addr   IN     84.63.173.131
10:00:34.965  Rmv     1  0 njj.chickenkiller.com.        Addr   IN     84.63.173.131
10:00:34.965  Add     2  0 njj.chickenkiller.com.        ANY    25     0.0.0.0    No Such Record
10:01:30.629  Add     2  0 njj.chickenkiller.com.        ANY    25     0.0.0.0    No Such Record
10:02:26.753  Add     2  0 njj.chickenkiller.com.        ANY    25     0.0.0.0    No Such Record
10:03:22.282  Add     2  0 njj.chickenkiller.com.        ANY    25     0.0.0.0    No Such Record
10:04:18.329  Add     2  0 njj.chickenkiller.com.        ANY    25     0.0.0.0    No Such Record
10:05:14.342  Add     2  0 njj.chickenkiller.com.        ANY    25     0.0.0.0    No Such Record
10:06:10.251  Add     2  0 njj.chickenkiller.com.        ANY    25     0.0.0.0    No Such Record
10:07:06.042  Add     2  0 njj.chickenkiller.com.        ANY    25     0.0.0.0    No Such Record
10:08:01.278  Add     2  0 njj.chickenkiller.com.        ANY    25     0.0.0.0    No Such Record
10:08:57.289  Add     2  0 njj.chickenkiller.com.        ANY    25     0.0.0.0    No Such Record
10:09:52.916  Add     2  0 njj.chickenkiller.com.        ANY    25     0.0.0.0    No Such Record
10:10:48.523  Add     2  0 njj.chickenkiller.com.        ANY    25     0.0.0.0    No Such Record
10:11:44.831  Add     2  0 njj.chickenkiller.com.        ANY    25     0.0.0.0    No Such Record
10:12:40.842  Add     2  0 njj.chickenkiller.com.        ANY    25     0.0.0.0    No Such Record
10:13:36.158  Add     2  0 njj.chickenkiller.com.        ANY    25     0.0.0.0    No Such Record
10:14:32.105  Add     2  0 njj.chickenkiller.com.        ANY    25     0.0.0.0    No Such Record

Edycja 4: To pytanie jest tutaj

Nick Sillito
źródło
Edytuj swoje pytanie, aby uwzględnić wynik scutil --dns. To pokazuje prawdziwy krajobraz serwera DNS, z którym ma do czynienia Twój Mac. macOS ma zaawansowany system routingu zapytań DNS o określonym zasięgu, który obsługuje takie rzeczy jak VPN (ale nie tylko VPN). BTW, macOS próbuje użyć serwerów DNS w określonej kolejności, ale jeśli serwer nie odpowie w ciągu 1 sekundy, zostanie umieszczony w polu karnym i następny serwer zostanie wykorzystany. Jedną rzeczą, którą możesz zrobić, to upewnić się, że preferowany serwer DNS jest szybki i niezawodny.
Spiff
@Spiff Dziękuję za uwagę - Zredagowałem pytanie o dodatkowe wyniki, o które prosiłeś
Nick Sillito
Teraz zastanawiam się, w jaki sposób Twój komputer Mac uczy się zewnętrznego adresu IP witryny njj.chickenkiller.com, jeśli jedynym serwerem DNS, który kiedykolwiek go podajesz, jest 192.168.2.4. Czy jest szansa, że ​​serwer czasami podaje zewnętrzny adres IP jako odpowiedź? Co dns-sd -q njj.chickenkiller.com 255 255zgłasza? (uwaga: musisz nacisnąć Ctrl-C, aby wyjść z dns-sd, w przeciwnym razie będzie siedział wiecznie i szukał nowych odpowiedzi lub zmian)
Spiff
@Spiff Pytanie edytowane z dodatkowymi danymi zgodnie z żądaniem. Wielkie dzięki
Nick Sillito,