Содержание
Решение проблем
Этот раздел посвящен способам определения причины проблем, возникающих с DNS и BIND9.
Тестирование
resolv.conf
Первый шаг в тестировании BIND9 это добавление IP адреса сервера имен в список определителей сетевых имен. Первичный сервер имен должен настраиваться, как и любой другой узел сети, с двойной проверкой. Просто отредактируйте /etc/resolv.conf, добавив следующее:
nameserver 192.168.1.10 nameserver 192.168.1.11
dig
Если вы установили пакет dnsutils, вы можете проверить свою установку используя обзорную утилиту DNS dig:
1. После установки BIND9 примените dig к интерфейсу обратной петли (loopback), чтобы убедиться, что порт 53 прослушивается. Из терминала наберите:
dig -x 127.0.0.1
Вы должны увидеть строки вывода, похожие на следующее:
;; Query time: 1 msec ;; SERVER: 192.168.1.10#53(192.168.1.10)
2. Если BIND9 настроен у вас как кэширующий сервер, используйте dig для замера времени при разрешении имени внешнего домена:
dig ubuntu.com
Обратите внимание на время в конце вывода результата команды:
;; Query time: 49 msec
После повторного вызова dig должно произойти улучшение:
;; Query time: 1 msec
ping
Теперь для демонстрации как приложения могут использовать DNS для разрешения сетевых имен используйте утилиту ping для отправки ICMP эхо-запроса. Из терминала наберите следующее:
ping example.com
Это проверит может ли сервер имен разрешить имя ns.example.com в IP адрес. Вывод команды будет напоминать следующее:
PING ns.example.com (192.168.1.10) 56(84) bytes of data. 64 bytes from 192.168.1.10: icmp_seq=1 ttl=64 time=0.800 ms 64 bytes from 192.168.1.10: icmp_seq=2 ttl=64 time=0.813 ms
named-checkzone
Хороший способ проверить ваши файлы зон - это использовать утилиту named-checkzone, установленную вместе с пакетом bind9. Эта утилита позволяет вам убедиться в корректности настроек до перезапуска BIND9 и применения изменений.
1. Для тестирования нашего файла прямой зоны из примера введите следующее в командной строке:
named-checkzone example.com /etc/bind/db.example.com
Если все настроенно верно, вы сможете увидеть вывод, похожий на:
zone example.com/IN: loaded serial 6 OK
2. Аналогично, для тестирования файла обратной зоны введите следующее:
named-checkzone 1.168.192.in-addr.arpa /etc/bind/db.192
Вывод должен напоминать следующее:
zone 1.168.192.in-addr.arpa/IN: loaded serial 3 OK
Журналирование
BIND9 имеет широкий набор доступных опций настроек журналов. Существуют две основные опции. С помощью опции channel указывается где вести журналы, а опция category определяет какую информацию писать в журнал.
Если опции журналов отсутствуют, по умолчанию применяется следующее:
logging { category default { default_syslog; default_debug; }; category unmatched { null; }; };
Этот раздел раскрывает как настроить BIND9 посылать отладочные сообщения, связанные с DNS запросами в отдельный файл.
1. Сначала нам надо настроить канал (channel) для определения в какой файл посылать сообщения. Редактируем /etc/bind/named.conf.local и добавляем следующее:
logging { channel query.log { file "/var/log/query.log"; severity debug 3; }; };
2. Затем настраиваем категорию (category) для отправки всех DNS запросов в файл:
logging { channel query.log { file "/var/log/query.log"; severity debug 3; }; category queries { query.log; }; };
3. Поскольку сервис named запускается от имени bind, надо создать файл и сменить ему пользователя:
sudo touch /var/log/query.log sudo chown bind /var/log/query.log
4. Перед тем как сервис named сможет писать в новый файл журнала нужно изменить профиль AppArmor. Сначала редактируем файл /etc/apparmor.d/usr.sbin.named, добавив:
/var/log/query.log w,
или так:
/var/log/** rw,
Затем перегружаем профиль:
cat /etc/apparmor.d/usr.sbin.named | sudo apparmor_parser -r
На версии 12.4 работает следующая команда:
sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.named
Дополнительную информацию по AppArmor смотрите в разделе AppArmor.
5. Теперь перегружаем BIND9 для применения изменений:
sudo service bind9 restart
Теперь вы можете увидеть файл /var/log/query.log, заполненный информацией о запросах. Это простейший пример использования опций журналирования BIND9. По использованию расширенных опций смотрите раздел Дополнительная информация.