Заметил, что часто при пробуждении ноутбука с OS X 10.10 Yosemite имею проблемы с соединением с сетью.
Симптоматика следующая:
1. IP-адрес получен корректно, всё на месте:
$ ifconfig en0
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 78:31:c1:bf:bf:b0
inet6 fe80::7a31:c1ff:febf:bfb0%en0 prefixlen 64 scopeid 0x4
inet 10.10.1.52 netmask 0xfffffe00 broadcast 10.10.1.255
nd6 options=1<PERFORMNUD>
media: autoselect
status: active
2. Роуты в порядке:
$ netstat -nr
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 10.10.0.1 UGSc 47 5 en0
10.10/23 link#4 UCS 10 0 en0
10.10.0.1/32 link#4 UCS 1 0 en0
10.10.0.1 0:0:c:9f:f0:0 UHLWIir 51 80 en0 1188
10.10.0.2 0:b:0:10:2:63 UHLWI 0 1110 en0 1185
10.10.1.255 ff:ff:ff:ff:ff:ff UHLWbI 0 1 en0
127 127.0.0.1 UCS 0 0 lo0
127.0.0.1 127.0.0.1 UH 5 36523 lo0
169.254 link#4 UCS 0 0 en0
3. адрес резолвера корректен и лежит в /etc/resolv.conf:
$ cat /etc/resolv.conf
#
# Mac OS X Notice
#
# This file is not used by the host name and address resolution
# or the DNS query routing mechanisms used by most processes on
# this Mac OS X system.
#
# This file is automatically generated.
#
nameserver 10.10.0.2
4. cmd-утилита dig резолвит отлично:
$ dig ya.ru
; <<>> DiG 9.8.3-P1 <<>> ya.ru
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8303
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 2, ADDITIONAL: 4
;; QUESTION SECTION:
;ya.ru. IN A
;; ANSWER SECTION:
ya.ru. 2100 IN A 213.180.204.3
ya.ru. 2100 IN A 213.180.193.3
ya.ru. 2100 IN A 93.158.134.3
;; AUTHORITY SECTION:
ya.ru. 174234 IN NS ns1.yandex.ru.
ya.ru. 174234 IN NS ns2.yandex.ru.
;; ADDITIONAL SECTION:
ns1.yandex.ru. 20497 IN A 213.180.193.1
ns1.yandex.ru. 20497 IN AAAA 2a02:6b8::1
ns2.yandex.ru. 20497 IN A 93.158.134.1
ns2.yandex.ru. 20497 IN AAAA 2a02:6b8:0:1::1
;; Query time: 138 msec
;; SERVER: 10.10.0.2#53(10.10.0.2)
;; WHEN: Wed Apr 29 12:28:21 2015
;; MSG SIZE rcvd: 202
5. ICMP Ping за пределы сети по IP-адресу ходит нормально (пингуем яндекс):
$ ping 213.180.204.3
PING 213.180.204.3 (213.180.204.3): 56 data bytes
64 bytes from 213.180.204.3: icmp_seq=0 ttl=58 time=5.637 ms
64 bytes from 213.180.204.3: icmp_seq=1 ttl=58 time=11.494 ms
64 bytes from 213.180.204.3: icmp_seq=2 ttl=58 time=24.724 ms
64 bytes from 213.180.204.3: icmp_seq=3 ttl=58 time=29.018 ms
^C
--- 213.180.204.3 ping statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 5.637/17.718/29.018/9.506 ms
6. ICMP Ping по доменному имени заканчивается неудачным разрешением имён
7. Соответственно, все ресурсы, к которым компьютер обращается по доменным именам не доступны (браузер ничего не открывает, многие мессенджеры не подключаются к серверам и т. д.)
8. Выполнение dscacheutil -flushcache н помогает
9. Минут через 3-5 после пробуждения всё начинает работать.
Собственно вопрос: почему такая проблема с разрешением имён? Я так понимаю, что в OS X есть некий DNS-cacher, который работает прозрачно, на уровне которого возникает проблема. Наткнулся на аналогичную симптоматику на ресурсе , но там предлагаются какие-то совсем инфернальные методики решения проблемы в виде вытаскивания из старой версии OS X утилиты mDNSResponder и замены им стандартного в 10.10 discoveryd, но это кажется не самым правильным решением проблемы.