У меня повторяющаяся проблема с DNS, которая беспокоит наших пользователей, иногда заставляя их ноутбуки добавлять домен нашей компании в конец всех DNS-запросов. Проблема возникает только тогда, когда пользователи находятся вне офиса, и это кажется довольно случайным. Однажды он будет работать, а затем внезапно покажет неверную запись. Это затрагивает в основном пользователей Windows XP, но недавно было замечено и в Vista. Вот пример использования nslookup.
C:\Users\Username>nslookup www.yahoo.com
Server: Linksys
Address: 192.168.0.1
Non-authoritative answer:
Name: www.yahoo.com.EXAMPLE.COM
Address: 192.0.2.99
Я заменил IP-адрес, указанный в сообщении, на заполнитель, но могу сказать вам, что то, что он возвращает, является значением по умолчанию *.
запись в конфигурации наших сетевых решений. Поскольку очевидно www.yahoo.com.EXAMPLE.COM
не существует, это имеет смысл. Я считаю, что внутреннее оборудование пользователя работает нормально. Внутри мы запускаем Windows 2k3 Active Directory с DHCP- и DNS-серверами на базе Windows. В конечном итоге проблема решается сама собой, как правило, через пару часов или несколько перезагрузок.
Кто-нибудь видел такое поведение раньше?
Если вы запустите nslookup и включите отладку, вы увидите, что Windows всегда пытается сначала добавить свой суффикс.
C:\>nslookup
Default Server: itads.example.com
Address: 0.0.0.0
> set debug=true
> www.yahoo.com
Server: itads.example.com
Address: 0.0.0.0
------------
Got answer:
HEADER:
opcode = QUERY, id = 2, rcode = NXDOMAIN
header flags: response, auth. answer, want recursion, recursion avail.
questions = 1, answers = 0, authority records = 1, additional = 0
QUESTIONS:
www.yahoo.com.example.com, type = A, class = IN
AUTHORITY RECORDS:
-> example.com
ttl = 3600 (1 hour)
primary name server = itads.example.com
responsible mail addr = itads.example.com
serial = 12532170
refresh = 1200 (20 mins)
retry = 600 (10 mins)
expire = 1209600 (14 days)
default TTL = 3600 (1 hour)
------------
------------
Got answer:
HEADER:
opcode = QUERY, id = 3, rcode = NOERROR
header flags: response, want recursion, recursion avail.
questions = 1, answers = 4, authority records = 0, additional = 0
QUESTIONS:
www.yahoo.com, type = A, class = IN
ANSWERS:
-> www.yahoo.com
canonical name = www.wa1.b.yahoo.com
ttl = 241 (4 mins 1 sec)
-> www.wa1.b.yahoo.com
canonical name = www-real.wa1.b.yahoo.com
ttl = 30 (30 secs)
-> www-real.wa1.b.yahoo.com
internet address = 209.131.36.158
ttl = 30 (30 secs)
-> www-real.wa1.b.yahoo.com
internet address = 209.191.93.52
ttl = 30 (30 secs)
------------
Non-authoritative answer:
Name: www-real.wa1.b.yahoo.com
Addresses: 209.131.36.158, 209.191.93.52
Aliases: www.yahoo.com, www.wa1.b.yahoo.com
Как вы можете видеть выше, моя машина сначала попыталась найти www.yahoo.com.example.com, и DNS-сервер ответил NXDOMAIN
(запись не найдена). Вы можете подтвердить это, запустив nslookup www.yahoo.com.
(обратите внимание на точку в конце .com!), и вы увидите, что проблема разрешается нормально.
Что происходит в том, что ваш внешний DNS-сервер отвечает, что у него есть запись для «www.yahoo.com.example.com», и возвращает ваш IP-адрес для корня вашего сайта. Я не уверен, какую службу вы используете, но я предполагаю, что у вас есть сопоставление с подстановочными знаками, которое сообщает вашему серверу отвечать на любой неизвестный запрос допустимым ответом, а не возвращать NXDOMAIN
. Вам нужно будет дважды проверить свои настройки для сервера и подтвердить, что он настроен только для ответа на запросы о записях, которые у него действительно есть (example.com
, www.example.com
, mail.example.com
, и т.д.).
Помните, что DNS работает, проверяя настроенный сервер и продвигаясь оттуда. DNS-запрос может принимать путь, подобный следующему шаблону (конечно, это всего лишь пример, возможно, это неверно): Машина -> Локальный маршрутизатор DNS (linksys) -> ISP DNS -> (2nd ISP DNS?) -> Root Сервер DNS -> DNS TLD -> Ваш внешний DNS-сервер. Кто-то на этом пути говорит, что www.yahoo.com.example.com
существуют. Скорее всего, это ваш внешний DNS-сервер.
РЕДАКТИРОВАТЬ
Я решил добавить еще один лакомый кусочек о случайности, о которой вы говорите. Если это действительно происходит спорадически, у вас может быть неправильно настроенный внешний DNS-сервер или его интернет-провайдер может предоставлять услугу перехвата DNS. К сожалению, я видел, как все больше и больше домашних интернет-провайдеров предоставляют «службу поиска» недействительных доменных имен. Поскольку почти все конечные пользователи используют DNS-серверы своих интернет-провайдеров, провайдеры теперь начинают перенаправлять недопустимые доменные записи на страницу поиска - обычно заполненную рекламой, нерелевантными ссылками и маленьким «Вы имели в виду www.example.com?» с некоторыми результатами, которые могут быть связаны или не связаны с доменным именем. Я знаю, что Verizon и Comcast начинают это делать, думаю, Quest тоже. Другой вариант - OpenDNS, поскольку они предоставляют тот же «поиск родственного домена», если он не существует (в конце концов, это их доход).
Моя проблема заключается в том, чтобы предположить, что, поскольку проблема заключается в том, что вы говорите, что он возвращает адрес вашей корневой записи, чего бы ни один из них не сделал, если бы они пытались ее найти, они дали бы вам IP-адрес, равный одному своих веб-серверов для обработки поиска.
После пьяного подсчета настроек реестра tcpip в Windows 7 у меня возникла та же проблема. В:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters
убедитесь, что ваша запись для домена такая же, как и для dhcpdomain, тогда все готово.
Я боролся с той же проблемой, что мои окна добавляют суффикс основного домена при использовании nslookup. Решение, которое я нашел, заключалось в том, что добавление точки к запросу останавливает Windows от этого. Поэтому вместо использования:
nslookup yahoo.com 192.168.0.1
использовать
nslookup yahoo.com. 192.168.0.1.
Согласно источнику, другие запросы не должны показывать такое поведение.
Источник (3-й пост) здесь https://social.technet.microsoft.com/Forums/windows/en-US/a34896f6-d784-4e52-8252-54f6520bc495/dns-queries-all-have-my-internal-domain-name-applied-to- запросы-eg-googlecommydomaincom? forum = winserverNIS
В большинстве случаев проблема связана с настройкой домашних маршрутизаторов. В общих настройках этих маршрутизаторов вы найдете два поля: имя системы и имя домена.
Например, если ваше доменное имя интернет-провайдера - x.com, и вы указываете доменное имя в этом поле как y.com. Маршрутизатор по-прежнему будет предоставлять DNS, настроенный в интерфейсах WAN и LAN, как авторитетный DNS, но неавторизованный будет предоставлен с этого y.com.
Я нашел ответ. В этом параметре реестра HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ Tcpip \ Parameters найдите список поиска. Дважды щелкните по нему и удалите то, что находится в коробке. Исправлена моя. Теперь nslookup верен. У меня там было кое-что от работодателя, что я использовал свой персональный компьютер для удаленной работы. Я больше никогда не буду работать в этой компании. Я все еще нахожу мошеннические записи.
У меня была такая же проблема.
Предоставляется DHCP-сервером
Удаление значения реестра домена решает проблему HKLM \ SYSTEM \ CurrentControlSet001 \ Services \ Tcpip \ Parameters
Для меня, используя bind9 в качестве авторитетного локального сервера имен и авторитетного сервера имен для того же домена, я могу исправить это поведение, удалив *.example.com
запись (закомментировано ниже).
Из файла зоны /etc/bind/example.com
; *. example.com. IN CNAME example.com. ; ГЛОБАЛОК
Это было установлено для удобства, так как не нужно вручную настраивать все поддомены, перенаправляемые через порт, на один и тот же общедоступный IP-адрес.
Побочный эффект соответствует описанию родителей. Все запросы разрешаются на один и тот же общедоступный IP-адрес. Программы и службы работают нормально, однако nslookup никогда не возвращает IP-адреса, что является небольшим раздражением, с которым я мирился в течение полугода, прежде чем обнаружил эту страницу и привел меня к вышеуказанному исправлению.