Я настроил мою домашнюю сеть с собственным DNS-сервером (я запускаю dnsmasq на своем сервере, на котором работает Ubuntu server 16.04). Этот сервер также запускает DHCP и сообщает клиентам, что это DNS-сервер.
Мой DNS-сервер настроен для разрешения имен как в локальной сети, так и за ее пределами.
У меня настроено полное доменное имя (через динамическую службу DNS), чтобы я мог получать доступ к службам в моей локальной сети с ноутбука, когда меня нет дома. Все это прекрасно работает как на моем ПК с Windows 7, так и на других компьютерах с Ubuntu, работающих в сети, однако оно застревает на моем MacBook, на котором в настоящее время работает MacOS 10.12.3.
Из моего MacBook в локальной сети я могу найти адрес моего сервера Ubuntu (serv2), используя команду dig следующим образом:
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
Как видите, он корректно подключается к моему DNS-серверу на моей локальной сети по адресу 192.168.2.4 и правильно возвращает адрес сервера 192.168.2.4.
Однако, если я пытаюсь использовать команду для доступа к serv2, она использует внешний IP-адрес serv2. Вот простой пример использования 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
Где вы можете видеть, он использует внешний адрес 84.63.173.131, а не внутренний адрес 192.168.2.4
Если я затем очищаю DNS-кэш Mac и пытаюсь получить доступ к serv2, ping работает нормально:
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
но очень быстро возвращается к использованию внешнего адреса:
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
Это неприятно, потому что я включил брандмауэр для большинства служб в моей сети (поэтому, если serv2 преобразуется в 192.168.2.4, печать работает, если она преобразуется в внешний адрес, печать не выполняется)
Любая идея, как я могу заставить мою Книгу Mac использовать местную службу DNS?
РЕДАКТИРОВАТЬ: Вывод из 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
РЕДАКТИРОВАТЬ (2): я использовал namebench для проверки времени отклика моего DNS-сервера (работающего на удаленном клиенте Linux), а остальные здесь. Мой сервер отображается как SYS-127.0.1.1. Я не эксперт в этом, но его производительность выглядит хорошо по сравнению с альтернативами
РЕДАКТИРОВАТЬ 3: вывод из 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
Изменить 4: На этот вопрос ответ здесь