.NET: Почему этот домен не разрешается? - PullRequest
4 голосов
/ 02 июля 2010

Я пытаюсь программно проверить, существует ли данное доменное имя.

Следующая строка кода работает как положено:

IPHostEntry IPhst =Dns.GetHostEntry("google.com");

Но это не удается для некоторых доменов на одном хосте в одно и то же время. Например, следующее выдает исключение.

IPHostEntry IPhst =Dns.GetHostEntry("bks-campus.ch");

Полученное исключение идентично исключениям, которые генерируются, когда доменное имя не существует вообще.

Странная вещь в том, что домен действительно существует. Я могу просмотреть его с той же машины, на которой только что был запущен код выше.

В чем может быть проблема здесь и как я могу обойти это?

Редактировать: Dig также соглашается, что это доменное имя действительно существует:

dig bks-campus.ch

; <<>> DiG 9.5.0-P2 <<>> bks-campus.ch
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14744
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;bks-campus.ch.                 IN      A

;; AUTHORITY SECTION:
bks-campus.ch.          3600    IN      SOA     dns1.bks-campus.ch. hostmaster.kanti-chur.ch. 1275546863 10800 3600 604800 86400

;; Query time: 1214 msec
;; SERVER: 192.168.0.1#53(192.168.0.1)
;; WHEN: Fri Jul  2 12:50:10 2010
;; MSG SIZE  rcvd: 94

Ответы [ 7 ]

5 голосов
/ 02 июля 2010
; <<>> DiG 9.3.2 <<>> any bks-campus.ch @olympus
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1406
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;bks-campus.ch.                 IN      ANY

;; ANSWER SECTION:
bks-campus.ch.          86400   IN      SOA     dns1.bks-campus.ch. hostmaster.kanti-chur.ch. 1275546863 10800 3600 604800 86400
bks-campus.ch.          86400   IN      MX      20 cws02.netgrouper.ch.
bks-campus.ch.          86400   IN      MX      20 cws01.netgrouper.ch.
bks-campus.ch.          86400   IN      NS      dns1.bks-campus.ch.

;; AUTHORITY SECTION:
bks-campus.ch.          86400   IN      NS      dns1.bks-campus.ch.

;; ADDITIONAL SECTION:
cws02.netgrouper.ch.    32548   IN      A       194.150.160.32

;; Query time: 179 msec
;; SERVER: 192.168.2.4#53(192.168.2.4)
;; WHEN: Fri Jul 02 13:00:48 2010
;; MSG SIZE  rcvd: 193

Для bks-campus.ch нет ни записи A (IPv4), ни CNAME (псевдоним), ни AAAA (IPv6).Ответ только говорит нам, какие серверы обрабатывают почту (MX), DNS (NS) и некоторые административные записи (SOA).В ответе нет ничего, что говорило бы решателю, где найти bks-campus.ch.Добавьте запись A (или CNAME), и она будет работать.

4 голосов
/ 02 июля 2010

У google.com есть запись A, связывающая его с IP-адресом. bks-campus.ch не имеет записей A, AAAA или CNAME, поэтому вы получаете сообщение об ошибке.

Ваш браузер, вероятно, автоматически добавляет www, когда не может найти запись A. для домена.


Редактировать : Ваши выходные данные подтверждают, что bks-campus.ch существует, но не имеет записи A.

2 голосов
/ 02 июля 2010

То, что вы пытаетесь сделать с помощью своего кода, это посмотреть, есть ли в домене разрешающая запись dns A для bks-campus.ch. Что вы хотите сделать, это запросить запись SOA для домена. посмотрите этот CodeProject проект, который ищет запись MX. Просто измените тип записи на SOA

Это будет работать только в том случае, если домен был делегирован на сервер имен. Есть несколько доменов, которые были зарегистрированы и просто не указали на DNS-сервер. В этих случаях вы просто получите сообщение об ошибке, если введете имя домена в браузер.

Лучший способ узнать, зарегистрирован ли домен, - это выполнить поиск WHOIS. Они находятся в ведении реестров TLD, чтобы люди могли проверить, кто зарегистрировал доменное имя. Если вы подключитесь к порту 43 whois.nic.coop и введете имя домена «nosuchdomain.coop», вы получите информацию о том, кто зарегистрировал этот домен.

.coop registry WHOIS server

For help on using this server use "?" (without the quotes).
For more .coop information browse to http://www.coop

nosuchdomain.coop
No domain records were found to match "nosuchdomain.coop"

--------------------------------------------------------------------------------

The .coop registry WHOIS database provides information for .coop registered
names only. Although every effort is made to maintain the accuracy of the WHOIS
data, accuracy cannot be guaranteed.

This service is intended only for query-based access. You agree that you will
use this data only for lawful purposes and that, under no circumstances will you
use this data to: (a) allow, enable, or otherwise support the transmission by
e-mail, telephone, or facsimile of mass unsolicited, commercial advertising or
solicitations to entities other than the data recipient's own existing
customers; or (b) enable high volume, automated, electronic processes that send
queries or data to the systems of Registry Operator or any ICANN-Accredited
Registrar, except as reasonably necessary to register domain names or modify
existing registrations. The compilation, repackaging, dissemination or other use
of this Data is expressly prohibited without the prior written consent of
dotCoop. All rights reserved. dotCoop reserves the right to modify these terms
at any time. By submitting this query, you agree to abide by this policy.

BY USING THE WHOIS SERVICE AND THE DATA CONTAINED HEREIN OR IN ANY REPORT
GENERATED WITH RESPECT THERETO, IT IS ACCEPTED THAT DOTCOOP IS NOT LIABLE FOR
ANY DAMAGES OF ANY KIND ARISING OUT OF, OR IN CONNECTION WITH, THE REPORT OR THE
INFORMATION PROVIDED BY THE WHOIS SERVICE, NOR OMISSIONS OR MISSING INFORMATION.
THE RESULTS OF ANY WHOIS REPORT OR INFORMATION PROVIDED BY THE WHOIS SERVICE
CANNOT BE RELIED UPON IN CONTEMPLATION OF LEGAL PROCEEDINGS WITHOUT FURTHER
VERIFICATION, NOR DO SUCH RESULTS CONSTITUTE A LEGAL OPINION.

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

2 голосов
/ 02 июля 2010

bks-campus.ch не имеет записи DNS. Вероятно, браузер переводит на www.bks-campus.ch, который имеет запись DNS, и, вероятно, будет работать из кода тоже.

РЕДАКТИРОВАТЬ: доменное имя существует, но ваш DNS, вероятно, не знает его. Мой нет, но он знает www.bks-campus.ch.

1 голос
/ 01 августа 2010

Другой способ проверить, существует ли данный домен, - это выполнить поиск NS для рассматриваемого домена.Если домен существует, у него должна быть запись NS, даже если время ожидания зарегистрированных серверов имен для домена истекло.

0 голосов
/ 02 июля 2010

На ум приходит множество причин, но, скорее всего, ваша DNS-инфраструктура не настроена для разрешения этого домена.

Имейте в виду, что даже если вы можете перейти к нему из веб-браузера, он мало что скажет вам, проходите ли вы через веб-прокси. Он просто говорит вам, что прокси может разрешить хост, а не ваш локальный компьютер.

Самый простой способ - попробовать nslookup из командной строки

nslookup bks-campus.ch

Если это не удастся, DNS, используемый вашей машиной, не сможет решить эту проблему, поэтому ваш код не сможет.

Если это пройдет, то потребуется дополнительное расследование. Опубликовать больше информации:)

0 голосов
/ 02 июля 2010

Попробуйте установить DNS-серверы для NETWORK ADAPTER на 4.2.2.2 или 4.2.2.3. В основном, если я не ошибаюсь, это сработает, потому что иногда DNS-серверы интернет-провайдеров не отвечают своевременно. Дайте мне знать ваши результаты в комментариях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...