2

У меня странная проблема с разрешением доменного имени на моем VPS. Проблема в том, что когда я выполняю ping или telnet для несуществующего доменного имени, тогда доменное имя верхнего уровня .com автоматически добавляется к исходному доменному имени.

1) тест nslookup

[root@myhost etc]# nslookup www.dhjfdghfgdhafgdh.com
Server:         168.144.1.130
Address:        168.144.1.130#53

** server can't find www.dhjfdghfgdhafgdh.com: NXDOMAIN

ОК - ожидаемый результат

2) пинг тест

[root@myhost etc]# ping -v www.dhjfdghfgdhafgdh.com
PING www.dhjfdghfgdhafgdh.com.com (208.73.211.69) 56(84) bytes of data.
64 bytes from 208.73.211.69: icmp_seq=1 ttl=238 time=78.2 ms
64 bytes from 208.73.211.69: icmp_seq=2 ttl=238 time=74.5 ms
64 bytes from 208.73.211.69: icmp_seq=3 ttl=238 time=76.4 ms
^C
--- www.dhjfdghfgdhafgdh.com.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2427ms
rtt min/avg/max/mdev = 74.594/76.431/78.264/1.498 ms

NOK - несуществующий домен разрешается как «.com», каким-то чудесным образом добавляется к исходному домену. com.com является зарегистрированным доменным именем, поэтому я могу пропинговать его, но я пингую другой домен, чем я намеревался.

3) тест telnet

[root@myhost etc]# telnet www.dhjfdghfgdhafgdh.com 80
Trying 208.73.211.69...
Connected to www.dhjfdghfgdhafgdh.com.
Escape character is '^]'.

NOK - так же, как пинг. Однако на этот раз telnet не сообщает мне, что я на самом деле подключен к хосту com.com. Я могу сказать только с IP-адреса.

Это мой /etc/resolv.conf:

nameserver 168.144.1.130
nameserver 108.59.242.6

Спасибо за любые подсказки.

3 ответа3

3

Это особенность, а не ошибка.

Скажите, что ваш локальный домен - example.com , и у вас есть компьютер с именем server . Приятно иметь возможность ping server и иметь все, что вы знали (TM), что вы имели в виду server.example.com .

Для этого есть пара параметров, которые можно настроить. Эти настройки могут быть на вашем локальном компьютере (возможно, установлены вашим DHCP-сервером, если он у вас есть); или они могут быть на каком-либо вышестоящем сервере имен, так что, когда ваша система спросит вышестоящее «Какой адрес для сервера?"ответ, который он получает," глупый, вы имеете в виду server.example.com, и между прочим, это 1.2.3.4 ".

Две вещи, которые управляют этим поиском, - это настройка, называемая "ndots"; если имя хоста имеет точки "ndots", то этот полезный дополнительный поиск не будет применен. Обычно для ndots установлено значение 1, чтобы server получал дополнительную помощь, а server.local нет. В вашем случае кажется, что для ndots задано как минимум 2 - похоже, что на сайте www.blah.com все еще выполняются дополнительные поиски.

Другая функция - это список search - список доменов, которые добавляются к имени хоста, чтобы попытаться найти совпадение. В обычном случае это будет «example.com». В вашем случае это звучит так, как будто "com" попал в список - я предполагаю, что люди могут ввести "yahoo" и вернуть «yahoo.com».

Опять же, это, вероятно, устанавливается вашим сервером DHCP, когда он передает аренду. Если бы он был настроен на вашей локальной машине, он, вероятно, был бы указан в /etc/resolv.conf.

3

Добавляя к ответу Джеймса Полли, вы обычно можете изменить поведение поиска, явно указав, что разрешение имен должно начинаться в корневой зоне DNS. Это делается путем добавления одного . на полное имя хоста.

Таким образом, вместо abc.server.example.com вы бы использовали abc.server.example.com. , Экстра . указывает распознавателю попробовать только это имя и не использовать никакие настроенные поисковые домены.

0

Я также сталкиваюсь с этой проблемой. Исправьте это следующим образом:

Мое имя хоста было qifeiye.com. Затем я изменяю это на qifeiye. Вы можете изменить имя хоста в /etc /hostname.

И выполните команду:

hostname qifeiye

И перезапустите сервер. Проблема исчезнет.

Я думаю, что это вызвано тем, что система автоматически находит .com в имени хоста, и думаю, что все неизвестные доменные имена будут в домене .com.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .