Я пытаюсь понять, почему nslookup не может найти имя локального хоста.
КОНФИГУРАЦИЯ Я пытаюсь настроить авторитетный сервер имен, работающий с «DNS и BIND», с запущенным bind9, на Debian 5.0, в chroot «тюрьме». bind запускается нормально, так как в syslog нет сообщений об ошибках. имя хоста сообщает "мастерская.example.net", имя хоста -f сообщает полное доменное имя как то же самое. В файле / etc / hosts есть строка: «xx.xx.xxx.xxshops.example.netshops»
Файл /etc/resolv.conf может быть проблемой; когда я перезагружаюсь, в строке его домена устанавливается недопустимое значение. Но nslookup по-прежнему не работает после того, как я изменил строку на «domain example.net» и перезапустил bind9.
ВЫВОД NSLOOKUP nslookup дает адрес СЕРВЕРА для сервера имен по умолчанию, но сообщает: «Не удается найти домен мастерской: NX».
QUERY Что здесь может быть не так?
Возможно ли, что проблема в регистрации хостов и серверов имен домена? Я не уверен, что правильно установил значения у регистратора. Но я бы подумал, что nslookup должен найти адрес локального хоста, если я правильно настроил привязку и различные файлы host и resolv.conf.
ОБНОВЛЕНИЕ Вот результат команды dig: Команда: dig A @workshopshop.example.net
Вывод:
; <<>> DiG 9.5.1-P2 <<>> A @workshop workshop.example.net
; (1 server found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11327
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;workshop.example.net. IN A
;; ANSWER SECTION:
workshop.example.net. 3600 IN A 72.14.190.80
;; AUTHORITY SECTION:
example.net. 3600 IN NS workshop.example.net.
;; Query time: 0 msec
;; SERVER: 72.14.190.80#53(72.14.190.80)
;; WHEN: Tue Jul 7 00:25:58 2009
;; MSG SIZE rcvd: 82
Я не знаю, что здесь ищу, но IP-адрес в разделе ОТВЕТ - это то, что я ожидал.
ОБНОВЛЕНИЕ - 2 Хорошо, похоже, это исправлено.
Теперь файл resolve.conf выглядит следующим образом:
domain example.net # This was domain members.linode.net
#search members.linode.com # Previously, not commented out
nameserver 127.0.0.1 # This line added
nameserver 72.14.179.5
nameserver 72.14.188.5
Это отражает три изменения по сравнению с нерабочим состоянием: 1) Домен ранее был members.linode.com - я изменил его на имя своего домена, что, как я полагаю, помогает, добавив example.net в конец «семинара». '. 2) Я закомментировал строку поиска, которая, как я предполагаю, отправляла преобразователь в домен members.linode.com для поиска "мастерской". 3) Я добавил сервер имен 127.0.0.1, что, как я полагаю, означает, что преобразователь сначала смотрит на локальный сервер имен, прежде чем перейти к другим.
Я не совсем понимаю, какой вывод я получаю от «семинара», но я собираюсь взглянуть на dig, прежде чем задавать какие-либо вопросы по этому поводу.
Большое спасибо всем, кто потрудился взглянуть на это и отгадать проблему.
QUERY Что здесь может быть не так?
Несколько вещей замышляют против вас. :-(
Файл /etc/resolv.conf может быть проблемой; когда я перезагружаюсь, в строке его домена устанавливается недопустимое значение.
Как твое /etc/resolv.conf
создается / заселяется?
Я предполагаю, что ваш IP-адрес назначается DHCP-сервером. Как часть назначения IP-адреса, ваш DHCP-клиент переписывает /etc/resolv.conf
с domain
и nameserver
назначается DHCP-сервером. Отсюда и "несоответствующее" значение после перезагрузки.
ВЫВОД NSLOOKUP nslookup дает адрес СЕРВЕРА для сервера имен по умолчанию, но сообщает: «Не удается найти домен мастерской: NX».
Это потому что ваш дефолт DNS-сервер не является вашим локальным DNS-сервером - это один из DNS-серверов, назначенных вам DHCP-сервером. Этот «другой» DNS-сервер не знает о вашем домене.
Но nslookup по-прежнему не работает после того, как я изменил строку на «domain example.net» и перезапустил bind9.
Это потому, что вам нужно добавить свой локальный DNS-сервер в список серверов имен в /etc/resolv.conf
. Непосредственно перед любым другим nameserver
запись, добавить ...
nameserver 127.0.0.1
Теперь, когда вы используете nslookup
, ваш локальный DNS-сервер должен быть вашим дефолт DNS-сервер. nslookup
теперь должна быть возможность разрешить "мастерскую".
ОБНОВЛЕНИЕ Вот результат команды dig: Команда: dig A @workshopshop.example.net
Это подтверждает, что ваш домен правильно настроен на локальном DNS-сервере привязки.
Как вы уже заметили, ваши изменения в /etc/resolv.conf
будут перезаписаны при следующей перезагрузке. У вас есть два варианта:
Измените конфигурацию вашего компьютера на использование статического IP-адреса. /etc/resolv.conf
больше не будут перезаписаны, поэтому ваши изменения сохранятся после перезагрузки.
Измените конфигурацию вашего DHCP-клиента, чтобы он не перезаписывал /etc/resolv.conf
. Эта ветка должен указать вам правильное направление.
bind не будет использовать ваш файл / etc / hosts. И nslookup будет запрашивать источники, перечисленные в "/etc/nsswitch.conf".
Строка домена из /etc/resolv.conf используется только для завершения имен хостов без домена, например: "nslookupshops".
Для дальнейшего тестирования я бы предложил использовать dig:
dig A @server workshop.example.net
Это запросит у dns-сервера «server» запись A для «shops.example.net ».
Находится ли мастерская.example.com в файле зоны для example.com? bind не читает ваши / etc / hosts, только файлы зон.
Вы можете настроить nslookup на использование режима отладки. Поскольку у вас есть копать, я предполагаю, что здесь Linux-подобный сервер.
> set debug
> www.yourdomain.net
Server: [your primary dns]
Address: [your primary dns]
--------------
[whole bunch of data]
Вывод может дать вам больше информации. "set debug2" работает на некоторых платформах, чтобы предоставить дополнительную информацию (например, в WinXP он сообщит вам значение TTL для возвращаемых результатов, удобно!)
ВЫВОД NSLOOKUP nslookup дает адрес СЕРВЕРА для сервера имен по умолчанию, но сообщает: «Не удается найти домен мастерской: NX».
Сервер по умолчанию, который использует nslookup, отличается от того, который вы настраиваете? В приведенных вами выходных данных раскопок вы специально запросили сервер «мастерская» и получили правильный ответ. Команда nslookup для выполнения того же самого будет nslookup workshop.example.net server
.
Если это сработает, вам просто нужно заставить ваш компьютер использовать ваш сервер. /etc/resolv.conf будет первым местом, где это можно сделать.