Проверка доступности доменного имени с помощью DNS-записей

Насколько точно можно определить доступность доменного имени, проверив наличие записей NS или SOA (начало полномочий)?

Если нет, то как определить это как можно точно, не прибегая к WHOIS? Например, стоит ли проверять записи MX, если записей NS не существует?

Меня особенно интересуют домены .co.za, но единственный официальный и надежный способ проверить доступность в пространстве имен .co.za — это использовать http://co.za/whois.shtml, что ограничивает последовательную проверку по IP-адресу.


person Petrus Theron    schedule 23.11.2009    source источник
comment
Тот факт, что DNS-имя не разрешается, не означает, что оно не зарегистрировано.   -  person OMG Ponies    schedule 23.11.2009
comment
Я знаю, я пытаюсь оценить его доступность, не прибегая к WHOIS.   -  person Petrus Theron    schedule 23.11.2009


Ответы (8)


Единственный 100% надежный способ проверить доступность домена — запросить базу данных регистратора. Я бы не стал доверять whois.

Вы можете использовать DNS для получения оценки. Вместо того, чтобы искать запись SOA, я бы просто посмотрел, есть ли что-нибудь вообще в списке с сервером имен TLD. dig — хороший инструмент для этого (работает и в Windows), хотя я думаю, вы могли бы использовать и nslookup. Например:

dig co.za. NS

предоставит список серверов имен для .co.za. Одним из таких серверов является ns0.is.co.za.

Затем запросите этот сервер напрямую, чтобы узнать, есть ли у них что-нибудь для интересующего вас домена:

dig ibm.co.za @ns0.is.co.za

Этот запрос возвращает записи NS, но не запись SOA, поскольку записи SOA предоставляются сервером имен домена (который может быть или не быть в сети). Записи NS указывают, что доменное имя используется.

Причина перехода напрямую заключается в том, что обычно это намного быстрее, чем полагаться на рекурсивные запросы с вашего локального сервера имен.

person RickNZ    schedule 23.11.2009
comment
Следовательно, наличие записи NS является лучшим признаком того, что она занята? Можно поподробнее о прямом переходе? - person Petrus Theron; 23.11.2009
comment
Да, записи NS являются лучшим показателем. Если они не существуют, вы не сможете получить запись SOA или что-либо еще значимое с помощью DNS. Под прямым обращением я подразумеваю запросы только к серверу TLD. Обычный процесс запроса выглядит примерно так: ваше приложение запрашивает локальный DNS, который перенаправляет на общий DNS (необязательно, например, на маршрутизаторе), который перенаправляет на DNS вашего интернет-провайдера, который запрашивает корневые серверы, чтобы найти правильный сервер TLD, а затем запрашивает сервер TLD, чтобы найти сервер домена, а затем запрашивает сервер домена. Чтобы определить действительность домена, просто запросите сервер TLD; больше ничего не нужно. - person RickNZ; 23.11.2009
comment
Существует ли общий сервер имен TLD .co.za? Если нет, то какой DNS-сервер предоставит самый быстрый ответ на запросы .co.za? Массовая проверка ЛЮБЫХ записей DNS позволяет найти практически все зарегистрированные домены .co.za. - person Petrus Theron; 23.11.2009
comment
Первый приведенный выше запрос dig вернет список всех серверов TLD .co.za, каждый из которых может обрабатывать запросы для всего домена. Если вы планируете процесс массовых запросов, где важна производительность, вы можете пропинговать их все и посмотреть, какой из них топологически ближе всего. - person RickNZ; 24.11.2009
comment
Хорошее предложение. ns0.is.co.za. кажется, имеет наименьшее количество прыжков между ними. - person Petrus Theron; 24.11.2009

Единственный способ определить, доступен домен или нет, — это запросить базу данных реестра для этого домена. Обычно это можно сделать, выполнив запрос WHOIS в интерфейсе WHOIS реестра.

Есть несколько причин, объясняющих, почему проверка DNS небезопасна.

Самое простое объяснение заключается в том, что вы можете зарегистрировать домен, не указывая его в каком-либо месте. Это как дом. Вы можете купить дом, но вы не обязаны строить дорогу, чтобы добраться до него.

Большинство доступных провайдеров доменов заставляют вас указывать DNS, в противном случае они устанавливают его по умолчанию. Но вас не заставляют, это не обязательное требование к домену.

Вторая причина в том, что действительно бывают случаи, когда домен зарегистрирован, но недоступен. Одним из таких случаев является период, часто называемый периодом погашения. Этот период длится несколько дней после истечения срока действия домена, и текущий владелец не продлевает его. Несколько реестров отключают домен, это означает, что он больше недоступен через DNS, но домен все еще существует и может быть выкуплен (обычно) только первоначальным владельцем.

Проверка DNS дешева, а иногда и быстрее. Если вам нужно проверить, существует ли домен, вы можете сначала попробовать запрос DNS и, в случае неудачи, вернуться к запросу WHOIS. Другими словами, если запрос DNS выполнен успешно, запрос WHOIS практически бессмысленен. Но вы не можете сделать обратное, потому что если DNS-запрос завершается неудачно, это не означает, что домен не зарегистрирован.

person Simone Carletti    schedule 25.08.2011

Если вы планируете выполнять массовые проверки, вас скоро разочарует встроенный преобразователь DNS — он синхронный. Есть хорошая симпатичная библиотека под названием ADNS (http://www.gnu.org/software/adns/), который предлагает асинхронные запросы DNS. Он сопровождается небольшим инструментом командной строки adnshost, который я использую в сочетании с N-DJBDNS (http://pjp.dgplug.org/ndjbdns/) в качестве рекурсивного преобразователя.

Точные аргументы adnshost -a -tns -f

4-й столбец в выводе будет содержать код результата:

  • 0, если для домена назначен хотя бы 1 сервер имен (большинство регистраторов назначают сервер по умолчанию, пока владелец не назначит свой собственный)
  • 300 или 301, если серверы имен не назначены

Проверка 1,2 млн доменных имен занимает около 4-6 часов, но это зависит от скорости/перегрузки сети.

person IVO GELOV    schedule 07.03.2019

Whois — это канонический способ проверки доступности домена. Ограничение скорости сделано намеренно, чтобы люди не перегружали серверы whois. Существование записей SOA может быть хорошим предположением, но это не точный ответ.

person Corey Porter    schedule 23.11.2009
comment
Да, проверка SOA не идеальна. Но есть ли лучший способ, возможно, в сочетании с другими записями, повысить точность? - person Petrus Theron; 23.11.2009
comment
Хотя это может быть каноническим способом, whois также является заведомо ненадежным способом проверки доступности домена, поскольку каждый регистратор работает со своими собственными базами данных со своими собственными неединообразными политиками. - person RickNZ; 23.11.2009
comment
RickNZ: это зависит от TLD. Для подавляющего большинства TLD сервер whois управляется реестром, а не регистраторами. - person bortzmeyer; 23.11.2009
comment
В домене .com, например, есть несколько источников/баз данных записей whois (так называемая тонкая модель), которые находятся у регистраторов и управляются ими. Многие из этих серверов регулярно отключаются от сети. Кроме того, некоторые TLD даже не имеют серверов whois (включая .co.za). - person RickNZ; 24.11.2009

На практике поиск DNS работает в 99% случаев. Если вы пишете что-то вроде Ajaxwhois, я предлагаю пойти по этому пути. Если у вас есть миллион имен для проверки, я бы сделал первый проход с поиском DNS, а затем, возможно, сделал бы второй проход для тех, которые вы можете рассмотреть для покупки.

person brianegge    schedule 23.11.2009
comment
Ошибка поиска DNS для всех TLD, где вы можете забронировать домен, не публикуя его в DNS... - person bortzmeyer; 23.11.2009
comment
Для доменов .co.za при регистрации требуются действительные серверы имен. - person Petrus Theron; 23.11.2009

  • Whois — единственный 100% надежный способ проверить доступность домена .co.za. См. http://co.za/whois.shtml.
  • Мои тесты показывают, что массовая проверка на наличие записей NS или ЛЮБЫХ записей DNS является наиболее точным способом определения доступности домена .co.za для регистрации. Записи SOA тоже работают, но не так хорошо.
  • dig co.za. NS показывает серверы имен TLD .co.za. Пропингуйте серверы TLD и используйте ближайшие, чтобы избежать ненужных рекурсивных запросов.

Спасибо за ваши ответы.

person Petrus Theron    schedule 24.11.2009

Я также использовал метод dig для проверки существования домена перед регистрацией, но примерно в 10% случаев он возвращает домены, которые НЕ доступны как доступные. Это связано с тем, что владелец домена не создал никаких записей для домена. Итак, что я решил сделать, это:

  1. Сначала проверьте методом копания.
  2. Если домен доступен, проверьте его с помощью whois.shtml.

Люди будут проходить через кучу доменов, которые недоступны, и это не тратит впустую выделенные запросы, которые предоставляет UniForum. Только если что-то кажется доступным, вы проверяете на co.za. Мне кажется, это единственный надежный способ сделать это БЕЗ потери доступа к co.za/whois.shtml из-за отправки им миллиона запросов :)

person Norio De Sousa    schedule 16.02.2011

Пробовал whois, и это дает мне странные результаты (google.fr как бесплатный!), поэтому я попробовал команду Windows: nslookup yourdomain, и вы получите ее IP, если она зарегистрирована.

person Abdelouahab    schedule 06.04.2015
comment
Возможно неправильное использование whois. Я только что проверил и, очевидно, google.fr платный. Научитесь использовать свои инструменты. Если вы хотите протестировать, goooooogle.fr бесплатен. - person bortzmeyer; 12.07.2017