Утилита rndc для Bind возможные ошибки и настройка
Bind – программное обеспечение, обслуживающее систему доменных имен на Вашем сервере. Если Вы наберете:
named -V
в командной строке , то увидите версию и конфигурацию Вашего named.
Named – означает Name Daemon и отмечает за преобразование доменных имен в IP адреса и (или) наоборот.
Но сегодня речь пойдет на о самом DNS-сервере как таковом, а об утилите позволяющей управлять им дистанционно . Мы говорим об rndc , что так и расшифровывается: Remote Name Daemon Control
Например , чтобы перезагрузить измененную конфигурацию Вашего Bind сервера достаточно набрать:
rndc reload
а чтобы применить измененную конфигурацию конкретной доменной зоны , Вы можете использовать rndc команду:
rndc reload weblomaster.ru
при этом не перезагружая весь named.
Работать со служебными командами бывает легко и удобно. Но мы здесь не для того чтобы разбирать простые варианты. Посмотрим что можно сделать если rndc выдает ошибки.
Одна из распространенных неполадок выглядит следующим образом:
rndc: connection to remote host closed
This may indicate that
* the remote server is using an older version of the command protocol,
* this host is not authorized to connect,
* the clocks are not synchronized, or
* the key is invalid.
В самой ошибке заложено решение. Все варианты возможных неполадок написаны на английском языке. И первым по списку идет ситуация , когда Ваша rndc отличается версией от версии named. Если Вы обновляли Bind могла возникнуть путаница с путями установки. Смотрим где расположен rndc:
whereis rndc
Если утилита находится по адресу /usr/sbin/rndc , возможно более новая располагается здесь
/usr/local/sbin/rndc -V
Сравните версии , выберите наиболее актуальную и перенесите старую в архив , а для новой создайте ссылку :
mv /usr/sbin/rndc /usr/sbin/rndc.OLD
ln -sf /usr/local/sbin/rndc /usr/sbin/rndc
Будьте внимательны! Вы должны понимать что в Вашем случае и пути и версии rndc могут отличать. Перед тем как переносить и линковать , найдя другую версию утилиты у себя на сервере , Вы можете проверить работает ли она сама по себе, указав полный путь:
/usr/local/sbin/rndc reload weblomaster.ru
В другом случае ошибка может заключаться в конфигурации самого rndc в связке с named.
Настройка rndc заключается в генерации уникального rndc-key ключа и конфигурационного файла rndc.conf.
Для этого набираем в командной строке:
rndc-confgen >> /etc/rndс.conf
В нашем примере конфигурационный файл создается в папке /etc/ . Наделе путь до этого файла может отличаться в зависимости от конфигурации Вашего DNS-сервера и самой rndc. Если не уверены , можете скопировать содержимое rndc.conf в другие папки:
cp /etc/rndс.conf /usr/local/etc/namedb/rndc.conf
cp /etc/rndс.conf /etc/namedb/rndc.conf
потому что в случае расхождения конфигураций, может возникать ошибка которая уже упоминалась выше.
Если по какой-то причине у Вас и вовсе отсутствует файл конфигурации , ошибка будет соответствующей:
rndc: neither /usr/local/etc/namedb/rndc.conf nor /usr/local/etc/namedb/rndc.key was found
На самом деле точный путь до папки, в которой DNS-сервер будет искать конфигурационный файл и файл ключа, можно увидеть всё той же командой: named -V . Здесь нужно обратить внимание на –sysconfdir=
Давайте надеяться что создать файл конфигурации rndc у Вас получилось правильно. Для того чтобы Bind отзывался на дистанционные команды rndc нужно чтобы named.conf и rndc.conf совпадали по части содержания ключа, названия ключа , IP адреса используемого для управления и порта.
IP адрес – это, чаще всего, локальный адрес 127.0.0.1 и служебный порт 953 . Если в rndc.conf прописано:
key "rndc-key" {
algorithm hmac-md5;
secret "AbCdEfJ1234567==";
};
options {
default-key "rndc-key";
default-server 127.0.0.1;
default-port 953;
};
то в named.conf должны присутствовать строки:
key rndc-key {
algorithm hmac-md5;
secret "6Wxakl0AjCCpbhcrcu0Mqg==";
};
и
controls {
inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { rndc-key; };
};
Здесь rndc-key – это названия ключа . Название везде должно быть одинаковым. Также как значение: AbCdEfJ1234567== . Значение не может быть вбито от руки. Это ключ, который генерируется командой rndc-confgen . Вы можете его скопировать в named.conf , но не придумывать самостоятельно. Иначе столкнетесь с ошибкой:
rndc: decode base64 secret: bad base64 encoding
Также стоит отметить, что конфигурационный файл named может быть расположен по адресу: /etc/namedb/named.conf или /etc/named.conf
А перед перезагрузкой сервера BIND полезно проверить файл конфигурации на ошибки. Для этого используем следующую команду:
named-checkconf /etc/namedb/named.conf
Если ошибок нет, то и сообщения отсутствуют. Если есть ошибки , Вы получите соответствующее сообщение. Например:
/etc/namedb/named.conf:205: unknown key 'rndc-key'
говорит о том, что Вы забыли вписать секцию key rndc-key {} в named.conf и эта ошибка произошла на строке 205, где происходит вызов ключа , но при этом он ранее не был объявлен. Исправьте и попробуйте снова.
Не сломаешь – не научишься, но лучше обойтись без поломок. Удачного администрирования и не забывайте делать резервные копии конфигурации!
Рубрики: Debian, FreeBSD, Домены, Настройки хостинга, Системное администрирование · Теги: bind, freebsd, named, rndc, домены, исправление, ключ, команды, настройка, ошибка