我们有一台运行DNS的Mac OS X 10.5.8服务器(以及其他一些服务)。
当我连接到它(使用服务器pipe理10.5.3 [这来自服务器pipe理10.5.7工具]),并点击查看DNS设置,都显示正常 – 它显示了许多反向条目和两个顶级域。 但是,当我select我们的一个域名并打开显示三angular形时,该列表为空! [应该有十几个条目,反向条目显示出来]如果我告诉它,我想添加一个A Record到域中,几乎所有的东西都消失了 – 我剩下一个列表我们的两个领域,其中一个显示三angular形显示一个单一的条目,一个反向条目对应新的Alogging。
named
似乎工作正常。 DNS名称parsing。 这似乎是服务器pipe理员在计算机上的数据有问题。 这里没有人会手动创build一个DNS条目。
现在,虽然我想我已经备份了DNS(我在这里提到备份了/var/named/
/etc/named.conf
和/etc/dns/
),但我真的不确定是否只需要replace这些文件将恢复我们所拥有的DNS设置。 我正在考虑去设置和日志级别从“信息”更改为“debugging”,但1)我只是有点担心,它可能会写入一个坏的configuration到磁盘,2)我认为这只会影响named
而不是服务器pipe理员,据我所知, named
是没有问题的。 (/Library/Logs/named.log中没有什么奇怪的东西,当我通过控制台/terminal打开时奇怪的是,当我点击服务器pipe理中的DNS日志button时,我看不到任何文本,只是一个完全白色的窗口当我看到我们的一个辅助DNS服务器时,我能够通过服务器pipe理看到日志文件。)
当我在服务器上运行服务器pipe理时,此条目出现在系统日志中:
Jun 17 09:02:08 od1 Server Admin[3892]: Unexpected call to doMarkConfigurationAsDirty by 'DNS' plugin during updateConfigurationViewFromDescription
这似乎发生在我看了DNS后,看看另一个服务,然后点击DNS。
认为最可能的原因是一个损坏的configuration文件,我浏览了所有备份的文件,而且没有一个是显而易见的。
当从远程计算机运行服务器pipe理来pipe理DNS时,我发现了一些奇怪的现象。
当我点击查看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
当我点击不同的服务时停止。
不确定的进度指示器(服务器pipe理员右下angular的“恢复”和“保存”button旁边出现的旋转轮)看起来非常奇怪。 据我所知,并不是只是在等待,而是被告知开始反复旋转,导致一个生涩的animation。
以下是运行Server Admin的计算机上logging的一些消息:
在启动时:
*** 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并重新启动,有没有一个好的方法来做到这一点?
我的猜测是区域文件中的某些内容与服务器pipe理(Server Admin)(技术上来说是servermgrd)的预期格式略有不同 – 我已经看到它被诸如字段之间的“错误”数量的空格这样简单的东西弄糊涂了。
为了排除故障,我build议从SOAlogging下面的区域文件(位于/ var / named / zones中的文件)除去NSlogging(您说有备份,对不对?)。 它应该看起来像这样:
;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服务,可以将其他logging移动到其他区域文件 – / var / named中 – 其中的named将正常读取,但servermgrd不会显示。
无论如何,将区域文件修剪到最低限度,退出并重新启动服务器pipe理,看看它是否正常行为(即你可以查看日志,添加到区域的条目等)。 如果它正常工作,请尝试再次将这些logging重新添加到/ var / named / zones文件中 – 我一次怀疑它们中的一个或多个有点奇怪,如果将其忽略(即从Server重新创buildpipe理员而不是直接添加到区域文件),你可能会恢复正常。
我在MacOS X 10.5服务器上发现并解决了类似的问题。
原来在其中一个DNS区域文件的文本字段中是括号字符“(”和“)”。 我在命令行中使用了一个文本编辑器来删除括号,现在服务器pipe理员再次正常工作。
在10.5上,区域文件位于/var/named/zones
。
使用grep扫描区域文件中的“)”字符:
sudo grep -R --include "*" \) .
滚动输出并查找任何不寻常的东西。 (所有的区域文件在顶部都会有一个打开和closures的圆括号;您正在查找文件中的logging。)如果找不到任何内容,也可能希望grep为左括号。
find可疑文件时,打开它进行编辑:
sudo nano db.mydomain.zone.apple
find违规行并删除括号字符。 保存并closures。 重新启动服务器pipe理员。
也可能有其他违规的人物,但在我的情况下,它一直是括号。
星期五,我决定取下DNS并重build它。 (叹)。
重新开始的最好的指示是我在这里find的,但是我发现我不得不多做一点。
首先,我备份了DNS(如上面的问题所述)。
我closures了DNS。 (呃,我是这么想的,后来我把它关掉了一两次,但这是我认为应该关掉的时候了。)
我编辑了/etc/dns/publicView.conf.apple
来删除我们创build的所有区域的名称,而不改变我们没有创build的区域的名称。 这里是所有区域中间有一个大评论的文件。 (我实际上没有在文件中发表评论,我只是删除了条目)。
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;}; // //这是服务器pipe理中显示的视图 //这是一个自动生成的文件。 //请不要手动修改这个文件! //请在named.conf文件中进行更改 // 查看“com.apple.ServerAdmin.DNS.public”{ // GUID = 3EA358EF-5C55-4619-98D0-5004B310D1B0; allow-recursion {“com.apple.ServerAdmin.DNS.public”;}; // ------------------------------------------------ ------------- //我们创build的文件中有几个区域 //我删除了所有 //下面的区域不像我们创build的那样,所以我离开了 //他们的事 // ------------------------------------------------ ------------- 区“。” { 键入提示; 文件“named.ca”; }; 区域“localhost”IN { 型主人; 文件“localhost.zone”; allow-update {none; }; }; 区域“0.0.127.in-addr.arpa”IN { 型主人; 文件“named.local”; allow-update {none; }; }; };
这样做,并重新启动DNS,服务器pipe理员仍然不高兴。 再次closuresDNS,我进入了/var/named
和/var/named/zones
文件夹,并删除了我们创build的所有文件。 /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 区/
我离开了localhost.zone
, named.ca
, named.local
和zones
文件夹,并删除了其他所有内容。 ( sudo rm db*
)。
/var/named/zones
文件夹看起来非常相似,但不包含任何不是由服务器admin创build的文件,所以sudo rm db*
删除了所有文件。
在这一点上,我重新启动DNS(并可能重新启动),并可以再次与服务器pipe理。
现在我不得不重新填充所有的DNS条目。 幸运的是/var/named/db.{$DOMAIN}.
的备份/var/named/db.{$DOMAIN}.
(每个域的一个文件)清楚地说明了重新创build域需要做些什么,简单地说就是一个主机名,列表types和IP地址列表,例如:
... 筒仓IN A 192.168.100.254 旧IN A 192.168.100.116 psmain IN A 192.168.100.121 在CNAME ghs.google.com中发送电子邮件。 ...
当服务器pipe理员突然出现同样的问题时,我重新创build了两个域名的三分之二,即不能再用它来显示或编辑区域。 天啊!
我input的最后一个主机条目是ftp
。 我决定看看它是否出现在任何文件中:
$ cd / private / var / named / zones $ 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“正指向networking服务器(192.168.100.116),现在指向筒仓(192.168.100.254)。”
我删除了这两行,服务器pipe理员很高兴。 (谢天谢地)。
这个问题似乎是ftp服务器的注释。 (我们只用了很less的评论,只有两个,我没有看到有什么理由不去创造它们,相信我会在将来更加小心。)也许是因为这个评论包含了IP地址。
(ftp服务器也是一个外部的机会,对已经有Alogging的机器的Alogging引起了这个问题,但是这不太可能使我感到震惊。)
我重新创build了ftp条目作为CNAME,并没有发表评论。
以后再想一下,改变ftp-server条目最有可能是几个星期前我们对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似乎现在运行良好。