%20%D0%B4%D0%BB%D1%8F%20%D0%BD%D0%B5%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D1%85%20%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%2C%20%D0%B0%20Windows%20%D0%BC%D0%BE%D0%B6%D0%B5%D1%82%3F.png)
В моей домашней сети есть пара ПК на базе Windows, у которых нет известных проблем с DNS, но с моим OSX iMac у меня проблемы с разрешением нескольких случайных доменов. Вот некоторые домены, с которыми у меня проблемы:
- ehow.com
- about.com
- nationalshoppingservice.com
Помимо того, что смотришь на/etc/хостыфайл (который, я думаю, в порядке), что мне следует проверить на iMac на предмет проблем, связанных с DNS, или какие инструменты мне следует использовать для диагностики проблемы, с которой я столкнулся?
Используя команду dig я получаю:
; <<>> DiG 9.4.3-P3 <<>> @4.2.2.2 www.nationalshoppingservice.com
; (1 server found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3468
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.nationalshoppingservice.com. IN A
;; ANSWER SECTION:
www.nationalshoppingservice.com. 14400 IN A 64.40.111.81
;; Query time: 86 msec
;; SERVER: 4.2.2.2#53(4.2.2.2)
;; WHEN: Tue Apr 12 18:22:42 2011
;; MSG SIZE rcvd: 65
Попробовав некоторые из предложений, я пришел к выводу, что проблема не в DNS... когда я сделал пинг www.nationalshoppingservice.com, вот что я получил:
PING www.nationalshoppingservice.com (64.40.111.81): 56 data bytes
ping: sendto: No route to host
ping: sendto: No route to host
ping: sendto: No route to host
ping: sendto: No route to host
Так что это выглядит так, как будто DNS разрешается, но маршрут к хосту не может быть найден? Что здесь происходит?
решение1
Командная строка будет вашим другом. Во-первых, у вас может вообще не быть проблем с DNS. Сначала вам нужно определить это. Лучший инструмент для этой работы — dig
. Откройте терминал и введите
dig @4.2.2.2 ehow.com
Компоненты этой команды:
dig : the command
@4.2.2.2 : this tells dig where to ask. We are specifically asking a
known provider in this case Level3. You could easily put
8.8.8.8 (Google) or any other provider here.
ehow.com : the domain you wish to query for.
Вы получите ответ вроде:
; <<>> DiG 9.7.2-P2 <<>> @4.2.2.2 ehow.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43699
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;ehow.com. IN A
**;; ANSWER SECTION:
ehow.com. 118 IN A 98.124.249.20**
;; Query time: 1 msec
;; SERVER: 4.2.2.2#53(4.2.2.2)
;; WHEN: Mon Apr 11 01:51:12 2011
;; MSG SIZE rcvd: 42
РАЗДЕЛ ОТВЕТА — важная часть. Если вы получите ответ, то вы знаете, что ваш iMac в порядке и он может «получить» доступ к этому домену.
Следующий шаг — заменить @4.2.2.2 на IP или имя хоста вашего обычного DNS-сервера. Обычно это предоставляется вам вашим интернет-провайдером. Если вы получаете тот же ответ, то вы знаете, что DNS не является вашей проблемой, и вы можете начать искать в другом месте. Вы также должны выполнить эти тесты несколько раз, чтобы убедиться, что вы получаете хорошее время отклика. Если вы когда-либо получите:
;; connection timed out; no servers could be reached
Тогда вы знаете, что не получаете ответ. Если это происходит периодически, вы можете заметить это больше на iMac, чем на машинах с Windows из-за кэширования. По моему опыту, машины с Windows кэшируют ответы DNS дольше, чем Mac.
решение2
Для устранения неполадок DNS в Mac OS X вам придется использовать как традиционный инструмент поиска DNS Unix, такой как (выберите один:) host
, dig
и nslookup
, а также современный инструмент, который вызывает API поиска DNS, специфичные для Mac OS X, например dns-sd -Q
, .
API поиска DNS, которые вызывает большинство приложений Cocoa, маршрутизируются через mDNSResponder
демон, а это значит, что если у ваших приложений с графическим интерфейсом возникают проблемы с поиском DNS, dns-sd -Q
вы, вероятно, увидите то же самое.
Традиционные инструменты поиска DNS в Unix используют более традиционный код преобразователя DNS в Unix, что означает, что они могут разрешать вещи, которые приложения Cocoa не могут (и наоборот).
Если вы можете что-то найти с помощью , dig
но не с помощью dns-sd
, то вы можете попробовать завершить работу mDNSResponder
демона и позволить launchd
ему автоматически перезапуститься (я обнаружил, что HUPping mDNSResponder не всегда достаточно).
sudo killall mDNSResponder
решение3
Установлено ли на вашем iMac программное обеспечение для блокировки IP-адресов или что-то подобное?
Также попробуйте зайти в «Настройки»->«Сеть»->«Дополнительно»->«DNS» и сбросить записи DNS; избавьтесь от всех ненужных записей.
Если это не сработает, попробуйте (временно) создать новую учетную запись на своем iMac или войти в другую учетную запись и посмотреть, сможете ли вы получить доступ к веб-сайтам с них.
решение4
Чтобы что-то проверить, вы можете перейти в Preferences->Network->Advanced->DNS и добавить запись DNS для публичного DNS Google 8.8.8.8. Если это решит проблему, то вам придется выяснить, какие настройки DHCP использует ваш маршрутизатор при раздаче IP-адресов и информации DNS. Если ваш маршрутизатор получает информацию DNS от вашего интернет-провайдера, то это может быть вашей проблемой, возможно, просто медленный ответ. Вам не обязательно использовать настройки DNS вашего интернет-провайдера.
Я часто использую 8.8.8.8 для тестирования, но в основном использую OpenDNS для дополнительного контроля.
надеюсь, это поможет