服务器管理员不允许我配置 DNS

服务器管理员不允许我配置 DNS

我们有一个运行 DNS(和一些其他服务)的 Mac OS X 10.5.8 服务器。

当我连接到它(使用 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 的“日志”按钮时,我看不到任何文本,只有一个完全白色的窗口。当我查看我们的一个辅助 DNS 服务器时,我能够通过服务器管理查看日志文件。)

当我在服务器上运行 Server Admin 时,系统日志中出现以下条目:

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

在我查看了 DNS、查看了另一项服务,然后单击回 DNS 后,似乎发生了这种情况。

认为最可能的原因是配置文件损坏,我浏览了我备份的所有文件,没有一个是明显的乱码。

以下是我从远程计算机运行服务器管理来管理 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. 不确定的进度指示器(服务器管理右下角“恢复”和“保存”按钮旁边的旋转轮)看起来非常奇怪。据我所知,它不是只是旋转和等待,而是被告知开始反复旋转,导致动画不流畅。

  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 并重新启动,有什么好方法吗?

答案1

我的猜测是区域文件中的一些内容的格式与服务器管理员(好吧,技术上是 servermgrd)所期望的格式稍有不同——我发现它因为一些简单的事情而感到困惑,例如字段之间的空格数“错误”。

为了排除故障,我建议从 SOA 记录下的区域文件(/var/named/zones 中的文件)中删除所有内容,但 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 不会查看。

无论如何,将区域文件缩减到最小后,退出并重新启动服务器管理,看看它是否正常运行(即,您可以查看日志、向区域添加条目等)。如果它正常工作,请尝试将记录一点一点地重新添加到 /var/named/zones 文件中——我怀疑其中一个或多个有点奇怪,如果您将其忽略(即从服务器管理中重新创建它,而不是直接添加到区域文件),您可能会让事情恢复正常。

答案2

我在我们的 MacOS X 10.5 服务器上发现并修复了类似的问题。

原来是 DNS 区域文件之一的文本字段中的括号字符“(”和“)”。我在命令行中使用文本编辑器删除了括号,现在服务器管理又可以正常工作了。

在 10.5 上,区域文件位于/var/named/zones

使用 grep 扫描区域文件中的“)”字符:

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

滚动查看输出并查找任何异常。(所有区域文件的顶部都有一个左括号和右括号;您要在文件中查找记录。)如果您没有找到任何内容,您可能还需要 grep 查找左括号。

找到可疑文件后,打开它进行编辑:

sudo nano db.mydomain.zone.apple

找到有问题的行并删除括号字符。保存并关闭。重新启动服务器管理员。

可能还有其他令人反感的字符,但就我而言,一直是括号。

答案3

周五,我决定拆除 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.1 68.45.254;192.168.55.254;192.168.75.254;192.168.70.254;192.168.80.254;本地网络;192.168.65.251;192.168.65.185;192.168.80.0;192.168.65.253;};

//
// 这是服务器管理中显示的视图
// 这是一个自动生成的文件。
// 请不要手动修改此文件!
// 请在 named.conf 文件中做出更改
//

查看“com.apple.ServerAdmin.DNS.public”{
//GUID=3EA358EF-5C55-4619-98D0-5004B310D1B0;

    允许递归 {“com.apple.ServerAdmin.DNS.public”;};

    // -------------------------------------------------------------
    // 我们创建的文件中有多个区域
    // 我把它们全部删除了。
    // 以下区域看起来不像我们创建的区域,所以我离开了
    // 保持原样
    // -------------------------------------------------------------

    区域“。”{
        类型提示;
        文件“named.ca”;
    };
    区域“localhost”IN {
        類型主屬;
        文件“localhost.zone”;
        允许更新 { 无; };
    };

    区域“0.0.127.in-addr.arpa”在{
        類型主屬;
        文件“named.local”;
        允许更新 { 无; };
    };

};

完成上述操作并重新启动 DNS 后,服务器管理员仍然不满意。再次关闭 DNS,我进入/var/named/var/named/zones文件夹并删除了我们创建的所有文件。之前(和之后)的列表/var/named如下所示:

db.100.168.192.in-地址.arpa。
db.15.168.192.in-地址.arpa。
db.20.168.192.in-地址.arpa。
db.203.244.66.in-地址.arpa。
db.34.168.192.in-地址.arpa。
db.40.168.192.in-地址.arpa。
db.5.168.192.in-地址.arpa。
db.55.168.192.in-地址.arpa。
db.65.168.192.in-地址.arpa。
db.75.168.192.in-地址.arpa。
db.somedomain.ab.ca。
db.anotherdomain.net。
本地主机区域
命名
命名的本地
区域/

我保留了localhost.zonenamed.canamed.local文件zones夹,并删除了其他所有内容。(sudo rm db*)。

/var/named/zones文件夹看起来非常相似,但似乎不包含任何未由服务器管理员创建的文件,因此sudo rm db*删除了所有内容。

此时,我重新启动了 DNS(并且可能重新启动)并可以再次使用服务器管理员。


现在我必须重新填充所有 DNS 条目。幸运的是,备份/var/named/db.{$DOMAIN}.(每个域一个文件)清楚地说明了重新创建域需要做什么,只需列出主机名称、记录类型和 IP 地址,例如:

...
筒仓 IN A 192.168.100.254
旧 IN A 192.168.100.116
psmain IN A 192.168.100.121
邮件 IN CNAME ghs.google.com。
...

当我重新创建两个域的进度达到三分之二时,服务器管理员突然出现了和我刚开始时相同的问题 —— 即无法再使用它来显示或编辑区域。哦,天哪!

我输入的最后一个主机条目是ftp。我决定看看它是否出现在任何文件中:

$cd /private/var/named/zones
$grep -R --include “*” ftp 。
./db.somedomain.ab.ca.zone.apple:ftp 在 192.168.100.254 中
./db.somedomain.ab.ca.zone.apple:ftp IN TXT “原先指向网络服务器 (192.168.100.116),现在指向 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 现在似乎运行良好。

相关内容