У меня есть домен econemon.com
. Ниже приводится выдержка из записи DNS (некоторые записи для краткости опущены):
econemon.com. 1800 IN NS ns.stratoserver.net.
econemon.com. 1800 IN NS ns2.stratoserver.net.
econemon.com. 1800 IN A 85.214.92.48
Эти серверы имен принадлежат моему провайдеру, и, насколько я понял, они являются авторитетными для моего домена.
Теперь, когда я спрашиваю у одного из них адресную запись несуществующего поддомена, он отвечает адресом моего сервера, например:
$ host -t A nosuchdomain.econemon.com ns.stratoserver.net
Using domain server:
Name: ns.stratoserver.net
Address: 81.169.163.40#53
Aliases:
nosuchdomain.econemon.com has address 85.214.92.48
Это, конечно, именно то, что я хочу, чтобы иметь виртуальные хосты и т. Д. Теперь, допустим, я добавил запись
econemon.com. IN NS ns.econemon.com
и надлежащая запись для ns.econemon.com
в список, и этот сервер имен действительно имел разные записи A для некоторых поддоменов, что произойдет?
subdomain.econemon.com
дать другой адрес в зависимости от того, какой сервер имен вы просили? (Я думаю, что это так.)Поиск в DNS выполняется последовательно, начиная с конца. Предполагая пустые кеши, поиск MISSING.DOMAIN.COM будет идти что-то вроде этого ...
В этом суть. На самом деле это намного сложнее из-за кеширования, балансировки нагрузки и того факта, что серверы имен можно указывать по имени, и поэтому их также нужно искать.
Подводя итог вашему вопросу ... вы можете указать несколько серверов имен для домена и настроить их с помощью разные Информация. Ответ да, но вы должны быть осторожны и знать, что делаете. Вы можете использовать DNS для поддержки балансировки нагрузки и может использовать его для поддержки отказоустойчивый облегченный. Но нужно быть осторожным!
РЕДАКТИРОВАТЬ: в комментарии Борцмейер указал на пару упрощений, которые, по его мнению, пересекают черту с ошибкой. Я внес коррективы, которые, надеюсь, устранят опасения.
Это одна из тех ситуаций, «я не думаю, что это слово означает то, что вы думаете». Вы вызываете записи хоста в данном домене как «поддомены». Они не.
Чтобы ответить на все ваши основные вопросы:
Запрос к данному серверу имен вернет то, что, по его мнению, является подходящим ответом. Похоже, вы предлагаете добавить еще один DNS-сервер в качестве авторитетного для вашего домена «econemon.com», который будет содержать некоторые записи «A», которых нет у других. Это не обычная или рекомендуемая конфигурация DNS. Обычно вы хотите, чтобы все DNS-серверы, уполномоченные для данного домена, имели одни и те же записи (если вы не знаете, зачем вы это делаете ... также известный как DNS с разделением горизонта).
Нет вообще никаких причин делать то, что вы описываете. Вы не можете повлиять на выбор DNS-сервера распознавателем клиентского компьютера. Это не «испортит» кеширование - кеширование будет работать так, как должно. Это привело бы к непоследовательным результатам в зависимости от того, с каким DNS-сервером разговаривал клиент, и это обычно плохо.
Поддоменом может быть что-то вроде домена «subdomain.example.com», который содержит записи хоста, такие как «www.subdomain.example.com». Вы говорите о хостах в домене.
Похоже, у вас есть запись подстановочного знака DNS для вашего домена.
*.econemon.com. IN A 81.169.163.40
Это означает, что если в результате запроса нет записей, вы получите запись A для 81.169.163.40. На самом деле все намного сложнее. Если есть ЛЮБАЯ запись для «метки» (полное доменное имя или FQDN), то это отключает запись с подстановочными знаками для этой метки. Итак, если у вас есть запись MX для foo.econemon.com., Запрос для записи A foo.econemon.com ничего не даст.
Записи с подстановочными знаками встречаются довольно редко и могут сбивать с толку определенные программные системы. Не рекомендую их использовать. Однако ваш интернет-провайдер использует их, чтобы вам не приходилось беспокоить их об обновлении записей DNS каждый раз, когда вы добавляете поддомен. В этом есть смысл.
Теперь к вашему вопросу ...
Похоже, вы спрашиваете: «Что произойдет, если у меня будет один сервер имен с данными, отличными от других?»
Что ж, если у вас есть 2, что ваш интернет-провайдер работает с определенными данными, и 1, который вы запускаете с разными данными, то вероятность получения данных с сервера вашего интернет-провайдера составляет 2: 1. Система DNS не обращается к другим серверам имен, если не находит нужные данные на первом. Другими словами, вы не можете спросить папу, сказала ли мама «нет».
Это важное понятие в DNS. DNS должен быть БЫСТРЫМ. Поэтому никогда не выполняйте 2 запроса, если подойдет 1.
Вот почему у вас должны быть одни и те же точные данные о зоне для домена на каждом из серверов имен домена. (Если у вас нет забавной схемы балансировки нагрузки.)
- будет ли запрос subdomain.econemon.com давать другой адрес в зависимости от того, какой сервер имен вы задали? (Я думаю, что это так.)
да
- если да, то это может быть действительно полезно для возврата к «главному серверу», если мой DNS не работает, но как мне заставить клиента использовать мой сервер имен, когда он работает?
Серверы имен проверяются в случайном порядке. Если первый не отвечает, DNS-клиент попробует следующий. Когда все проверено, клиент получает ошибку DNS. Поскольку каждый DNS-сервер отправил 1 запрос, но обычно мы ждем ответа 30 секунд (я думаю), если у вас 100 серверов имен, вы будете ждать 50 минут, прежде чем клиент выйдет из строя. Вот почему у меня обычно не больше 3-х серверов имен для домена. Больше не лучше.
- это испортит кеширование на клиентах? (Наверное.)
На самом деле, нет. Программное обеспечение очень надежное. Принцип устойчивости Постела («будь консервативным в том, что вы отправляете, либеральным в том, что вы принимаете») вступает в игру. В нем есть свои преимущества. Запрашивайте www.yahoo.com, www.microsoft.com и www.google.com. Вы увидите, что каждый сервер имен дает разные IP-адреса в зависимости от того, где вы находитесь в мире (и других факторов). Если бы это сбивало клиентов с толку, эти сайты не выжили бы!