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

Администратор получил образ кэша (более подробно об этом поговорим в следующем разделе), и таким образом убедился, что его сервер обладает корректной записью для проблемного узла. Несмотря на это, сервер не мог выполнить преобразование имени узла в IP-адрес!

Проблема была воспроизведена на ряде других подчиненных серверов. Имя узла поддавалось разрешению только основным сервером, но не подчиненными. Все серверы имели один и тот же порядковый номер в записи SOA, и образ кэша на каждом сервере показывал, что для узла существует корректная адресная запись. Так почему же они не могли преобразовать имя узла в адрес?

Поразмыслив о различиях между способами, которыми загружают данные основные и дополнительные серверы, мы заподозрили, что дело в передаче файла зоны. Основные серверы загружают свои данные непосредственно из локальных дисковых файлов. Подчиненные серверы получают данные от основного сервера путем передачи зоны. Возможно, происходила порча файлов зоны. Мы вывели файл зоны на одном из подчиненных серверов и увидели такие данные:

% cat /usr/etc/events.wrotethebook.com.hosts
PCpma    IN    A    172.16.64.159
    IN    HINFO    "pc" "n3/800eventsnutscom"
PCrkc    IN    A    172.16.64.155
    IN    HINFO    "pc" "n3/800eventsnutscom"
PCafc    IN    A    172.16.64.189
    IN    HINFO    "pc" "n3/800eventsnutscom"
accu    IN    A    172.16.65.27
cmgdsl    IN    A    172.16.130.40
cmg    IN    A    172.16.130.30
PCgns    IN    A    172.16.64.167
    IN    HINFO    "pc" "(3/800eventsnutscom"
gw    IN    A    172.16.65.254
zephyr    IN    A    172.16.64.188
    IN    HINFO    "Sun" "sparcstation"
ejw    IN    A    172.16.65.17
PCecp    IN    A    172.16.64.193
    IN    HINFO    "pc" "n Lsparcstationstcom"

Обратите внимание на странное значение в последнем поле оператора HINFO каждой из машин. Эти данные могли быть повреждены при передаче либо изначально были некорректными на основном сервере. Мы воспользовались nslookup, чтобы проверить это обстоятельство:

% nslookup
Default Server: crab.wrotethebook.com
Address: 172.16.12.1
>    server 24seven.events.wrotethebook.com
Default Server: 24seven.events.wrotethebook.com
Address: 172.16.6.1
>    set query=HINFO
>    PCwlg.events.wrotethebook.com
Se rve r: 24seven.events.wrotethebook. com
Address: 172.16.6.1
PCwlg.events.wrotethebook.com CPU=pc OS=ov
packet size error (0xf7fff590 != 0xf7fff528)
>    exit

В данном примере мы предписали nslookup обращаться к серверу 24seven.euents.wrotethebook.com, то есть основному серверу домена events.wrotethebook.com. Затем мы запросили запись HINFO одного из тех узлов, для которых заподозрили порчу данных. Сообщение «packet size error» четко показывает, что nslookup столкнулась с проблемами, пытаясь получить запись HINFO напрямую с основного сервера. Мы связались с администратором основного сервера и рассказали ему о проблеме, указав на конкретные записи, попавшие под подозрение. Администратор обнаружил, что забыл добавить запись операционной системы в некоторые из записей HINFO. Он исправил ошибку, и проблема исчезла.