Назад | Перейти на главную страницу

Администратор сервера не позволяет мне настраивать DNS

У нас есть сервер Mac OS X 10.5.8, на котором работает DNS (и несколько других служб).

Когда я подключаюсь к нему (используя Server Admin 10.5.3 [который поступает из инструментов Server Admin 10.5.7]) и щелкаю, чтобы посмотреть настройки DNS, все выглядит нормально - он показывает много обратных записей и две записи верхнего уровня домены. Однако, когда я выбираю один из наших доменов и открываю треугольник раскрытия информации, список пуст! [Должно быть более дюжины записей, и появляются обратные записи.] Если я затем скажу, что хочу добавить, скажем, запись A в домен, почти все исчезнет - и у меня останется список, показывающий наши два домена, один с треугольником раскрытия под ним, показывающий одну запись, и одна обратная запись, соответствующая новой записи A.

named похоже, работает нормально. DNS-имена разрешаются. Похоже, просто у администратора сервера проблемы с данными на компьютере. Никто здесь не создал бы запись DNS вручную.

Теперь, пока я думаю, что сделал резервную копию DNS (я сделал резервную копию /var/named/, /etc/named.conf, и /etc/dns/, как уже упоминалось Вот), Я действительно не уверен, что простая замена файлов восстановит наши настройки DNS, если что-то пойдет не так. Я собираюсь перейти к настройкам и изменить уровень журнала с «Информация» на «Отладка», но 1) я немного обеспокоен тем, что он может записать неправильную конфигурацию на диск, и 2) я думаю, что это только повлияет named а не Администратор сервера, и, насколько я могу судить, named нет проблем. (Ничто не выглядит странным в /Library/Logs/ named.log, когда я открываю его через консоль / терминал. Как ни странно, когда я нажимаю кнопку «журнал» для DNS в Server Admin, я не вижу вообще никакого текста, просто полностью белое окно. Когда я смотрю на один из наших вторичных DNS-серверов, я могу видеть файл журнала через Server Admin.)

Эта запись появляется в системном журнале, когда я запускаю Server Admin на сервере:

Jun 17 09:02:08 od1 Server Admin[3892]: Unexpected call to doMarkConfigurationAsDirty by 'DNS' plugin during updateConfigurationViewFromDescription

Кажется, это происходит после того, как я посмотрел на DNS, посмотрел на другую службу, а затем снова щелкнул DNS.

Думаю, что наиболее вероятная причина - это поврежденный файл конфигурации, я просмотрел все файлы, для которых я сделал резервную копию, и ни один из них явно не является чепухой.

Вот некоторые странности, которые я нахожу при запуске Server Admin с удаленного компьютера для управления DNS.

  1. Когда я нажимаю, чтобы просмотреть файл журнала для DNS, сервер начинает писать такие сообщения в свой system.log:

    Jun 17 09:59:04 od1 kernel[0]: Limiting open port RST response from 252 to 250 packets per second
    Jun 17 09:59:06 od1 kernel[0]: Limiting open port RST response from 258 to 250 packets per second
    

Это останавливается, когда я нажимаю на другую службу.

  1. Неопределенный индикатор прогресса (вращающееся колесо, которое появляется рядом с кнопками «Вернуть» и «Сохранить» в правом нижнем углу окна Server Admin) выглядит действительно странно. Насколько я могу судить, вместо того, чтобы просто вращаться и ждать, ему говорят начать вращение несколько раз, что приводит к рывкам.

  2. Вот некоторые из сообщений, которые регистрируются на компьютере, на котором запущен Server Admin:

При запуске:

*** ERROR: -[GRAxes computeLayout]:1124 - plotRect height = 0.000000 <= 0.0 ***
*** ERROR: -[GRChartView computeLayout]:1194 - Layout for overlay axes (0x18758f50) failed. ***

(Эти сообщения меня не слишком беспокоят, поскольку они исчезают на время, если вы удалите ~ / Library / Preferences / com.apple.ServerAdmin.plist).

При выключении:

2010-06-17 10:02:17.202 Server Admin[7770:10b] *** -[GroupTextField windowDidResignKey:]: unrecognized selector sent to instance 0x16e12490

Больше беспокоят эти сообщения:

2010-06-17 09:59:47.269 Server Admin[7770:10b] Unexpected call to doMarkConfigurationAsDirty by 'DNS' plugin during updateConfigurationViewFromDescription
Server Admin(7770,0xb0453000) malloc: *** error for object 0x1c115390: double free
*** set a breakpoint in malloc_error_break to debug
2010-06-17 10:01:00.795 Server Admin[7770:10b] *** -[ServiceEntry sessionHost]: unrecognized selector sent to instance 0x2af500

Любые мысли по поводу:

Если мне нужно стереть DNS и перезапустить, есть ли хороший способ сделать это?

Я обнаружил и исправил аналогичную проблему на нашем сервере MacOS X 10.5.

Оказалось, что это символы скобок «(» и «)» в текстовом поле в одном из файлов зоны DNS. Я использовал текстовый редактор в командной строке, чтобы удалить скобки, и теперь Server Admin снова работает нормально.

В версии 10.5 файлы зоны расположены по адресу /var/named/zones.

Используйте команду grep для поиска в файлах зоны символа ")":

sudo grep -R --include "*" \) .

Прокрутите вывод и найдите что-нибудь необычное. (Все файлы зон будут иметь открывающую и закрывающую круглые скобки вверху; вы ищете запись в файле.) Если вы ничего не найдете, вы также можете найти открывающую скобку с помощью grep.

Обнаружив подозрительный файл, откройте его для редактирования:

sudo nano db.mydomain.zone.apple

Найдите строку, вызывающую нарушение, и удалите символы круглых скобок. Сохранить и закрыть. Перезапустите Server Admin.

Могут быть и другие оскорбительные символы, но в моем случае это всегда были круглые скобки.

Я предполагаю, что в файле зоны есть что-то в формате, немного отличающемся от того, что ожидает администратор сервера (ну, технически servermgrd) - я видел, как его смущает такая простая вещь, как "неправильное" количество пробелов между полями.

Чтобы решить эту проблему, я бы предложил удалить все из файла зоны (тот, который находится в / var / named / zone) под записью SOA, за исключением записей NS (вы сказали, что у вас есть резервная копия, верно?). Это должно выглядеть примерно так:

 ;GUID=34FEA604-B204-A7D7-95A5-B6D812B46454

$TTL 10800
example.com. IN SOA server.example.com. admin.example.com (
    2010042600  ;Serial
    86400       ;Refresh
    3600        ;Retry
    604800      ;Expire
    345600      ;Negative caching TTL
 ) 

example.com. IN  NS server.example.com.

примечание: я не уверен, но думаю, что в конце файла должна быть пустая строка. Если вам нужно сохранить нормальную службу DNS во время устранения неполадок, вы можете переместить другие записи в другой файл зоны - тот, который находится в / var / named - где named будет читать их нормально, но servermgrd не будет смотреть.

В любом случае, когда файл зоны обрезан до минимума, выйдите и перезапустите Server Admin и посмотрите, нормально ли он себя ведет (т.е. можете ли вы просматривать журнал, добавлять записи в зону и т. Д.). Если он работает нормально, попробуйте добавить записи обратно в файл / var / named / zone снова понемногу - я подозреваю, что одна или несколько из них немного странные, и если вы оставите их (т.е. воссоздадите их с сервера Admin, а не добавление в файл зоны напрямую) вы, вероятно, сможете вернуть все в норму.

В пятницу я решил снять DNS и восстановить его. (Вздох).

Лучшие инструкции по началу работы я нашел Вот, хотя я обнаружил, что мне нужно сделать немного больше, чем было там сказано.

Во-первых, я сделал резервную копию DNS (как указано в вопросе вверху).

Я отключил DNS. (Ну, я и хотел. Я выключил его на шаг или два позже, но именно тогда я думаю, что его нужно выключить.)

Я редактировал /etc/dns/publicView.conf.apple чтобы удалить имена всех созданных нами зон, оставив нетронутыми те, которые мы не создавали. Вот файл с большим комментарием посередине, где были все зоны. (На самом деле я не помещал комментарий в файл, я просто удалил записи).

acl "com.apple.ServerAdmin.DNS.public" {192.168.1.254;192.168.5.254;192.168.10.254;192.168.15.254;192.168.20.254;192.168.25.254;192.168.30.254;192.168.35.254;192.168.40.254;192.168.45.254;192.168.55.254;192.168.75.254;192.168.70.254;192.168.80.254;localnets;192.168.65.251;192.168.65.185;192.168.80.0;192.168.65.253;};

//
// This is the view that is shown in Server Admin
// This is an automatically generated file.
// PLEASE DO NOT MANUALLY MODIFY THIS FILE!
// Please make your changes in the named.conf file
//

view "com.apple.ServerAdmin.DNS.public" {
//GUID=3EA358EF-5C55-4619-98D0-5004B310D1B0;

    allow-recursion {"com.apple.ServerAdmin.DNS.public";};

    // ------------------------------------------------ ------------- // В ФАЙЛЕ, КОТОРЫМ МЫ СОЗДАЛИ, БЫЛО НЕСКОЛЬКО ЗОН // Я УДАЛЕНИЕ ИХ. // СЛЕДУЮЩИЕ ЗОНЫ НЕ СМОТРЕЛИ НА СОЗДАННЫЕ МЫ, ПОЭТОМУ Я УБЕЖАЛ // ИХ НА ТАКТЕ // --------------------------- ----------------------------------

    zone "." {
        type hint;
        file "named.ca";
    };
    zone "localhost" IN {
        type master;
        file "localhost.zone";
        allow-update { none; };
    };

    zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "named.local";
        allow-update { none; };
    };

};

Сделав это и перезапустив DNS, администратор сервера все еще был недоволен. Снова выключив DNS, я зашел в /var/named и /var/named/zones папки и удалил все созданные нами файлы. Список до (и после) /var/named выглядит так:

db.100.168.192.in-addr.arpa.
db.15.168.192.in-addr.arpa.
db.20.168.192.in-addr.arpa.
db.203.244.66.in-addr.arpa.
db.34.168.192.in-addr.arpa.
db.40.168.192.in-addr.arpa.
db.5.168.192.in-addr.arpa.
db.55.168.192.in-addr.arpa.
db.65.168.192.in-addr.arpa.
db.75.168.192.in-addr.arpa.
db.somedomain.ab.ca.
db.anotherdomain.net.
localhost.zone
named.ca
named.local
zones/

Я оставил localhost.zone, named.ca, named.local и zones папку, а все остальное удалил. (sudo rm db*).

В /var/named/zones папка выглядела очень похожей, но (похоже) не содержит файлов, которые не были созданы администратором сервера, поэтому sudo rm db* все удалил.

На этом этапе я перезапустил DNS (и, вероятно, перезагрузился) и снова смог работать с администратором сервера.


Теперь мне пришлось заново заполнить все наши записи DNS. К счастью, резервные копии /var/named/db.{$DOMAIN}. (по одному файлу для каждого домена) действительно ясно показывает, что нужно сделать для воссоздания доменов, представляя собой просто список имени хоста, типа записи и IP-адреса, например:

...
silo IN  A 192.168.100.254 
old IN  A 192.168.100.116 
psmain IN  A 192.168.100.121 
mail IN  CNAME ghs.google.com. 
...

Я прошел две трети пути воссоздания обоих наших доменов, когда внезапно Server Admin обнаружил ту же проблему, с которой я начал, а именно, что никто больше не мог использовать его для отображения или редактирования зон. О чувак!

Последняя запись о хозяине, которую я ввел, была ftp. Я решил посмотреть, есть ли это в каком-либо из файлов:

$ cd / private / var / named / зоны
$ grep -R --include "*" ftp.
./db.somedomain.ab.ca.zone.apple:ftp IN  A 192.168.100.254 
./db.somedomain.ab.ca.zone.apple:ftp IN TXT "Was pointing to webserver (192.168.100.116), now pointing to silo (192.168.100.254)."

Я удалил эти две строчки, и администратор сервера снова был счастлив. (Слава Богу).

Проблема, по всей видимости, связана с комментарием для ftp-сервера. (Мы используем очень мало комментариев; их было всего два, и я не видел причин не создавать их. Думаю, в будущем я буду проявлять больше осторожности.) Возможно, это потому, что комментарий содержал IP-адреса.

(Существует также внешняя вероятность, что ftp-сервер, являющийся записью A для машины, на которой уже была запись A, вызвал проблему, но это кажется мне довольно маловероятным.)

Я воссоздал запись ftp как CNAME и не стал комментировать.

Если подумать об этом позже, то изменение записи ftp-сервера, скорее всего, было последним изменением, которое мы внесли в DNS несколько недель назад.

Я закончил переустановку всех хостов и проверил свою работу:

mkdir DNSDiff && cd DNSDiff
# repeat for each domain
cat /path/to/backup/var/named/zones/db.somedomain.ab.ca.zone.apple | sort > old.somedomain.txt
cat /var/named/zones/db.somedomain.ab.ca.zone.apple | sort new.somedomain.txt

diff --side-by-side {old,new}.somedomain.txt
# or, with TextWrangler,
twdiff *.somedomain*
# (or, use the diff tool of your choice.)

Кажется, теперь DNS работает нормально.