- 论坛徽章:
- 0
|
#rndc status 出错,请帮看看!!!
Solaris 8 x86的小问题
目前在solaris 8 x86上安装bind 9后,按照默认的配置不能使用rndc:
[solaris][/etc]# rndc reload
rndc: connect failed: network unreachable
经过检查,发现问题的关键在与rndc.conf中的这一行:
default-server localhost;
如果将”localhost”改为”localhost.”或者127.0.0.1,可以解决这个问题.
查看rndc的参数,有一个-s选项,可以指定需要控制的服务器,下面这个命令也可以:
rndc –s 127.0.0.1 reload 或 rndc –s localhost. reload
再从日志中分析,启动bind 9时日志如下:
May 8 solaris named[513]: starting BIND 9.2.2
May 8 solaris named[513]: command channel listening on 127.0.0.1#953
可以看出,bind 9在127.0.0.1上监听953端口响应命令行通道.对应named.conf中的配置,在controls语句中,127.0.0.1用来指定本机那个接口地址来监听命令行通道,allow指定那些地址可以进行远程控制(例子中仅允许localhost).可以设想,如果将inet配置为本机上一个实际的网络接口地址,allow中不但允许localhost,并且允许其他IP(譬如管理员的机器地址),那么就可以通过这些地址来”远程”控制named的动作.
controls {
inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};
这也是为什么bind 9把原来的ndc改为rndc的原因:remote ndc.
另外,bind 9打开的TCP端口953,用来响应rndc的控制信号(本地或远程),当bind 9关闭后,这个端口也关闭,这也是为什么rndc中取消start参数的原因:如果未启动bind 9,系统也没有在953端口监听,就谈不上远程控制了.
再回到上面的问题,为什么default-server设置为localhost则rndc返回网络不可达?而对”127.0.0.1”进行控制则可以,”localhost.”也可以.
这说明,在solaris 8 x86里面,rndc并没有承认/etc/hosts文件中localhost和127.0.0.1的对应关系,当对命令行通道试图连接localhost的953端口时,发现并不能对localhost进行解析,因为不知道其IP地址,所以报告网络不可达.这样也就不能连接到127.0.0.1的953端口对named进行控制.
在solaris 下,默认情况下网络主机是通过hosts来进行解析(映射)的,但是可以在/etc/ nsswitch.conf中指定也通过dns来解析.譬如,可以将其中的:
hosts: files 改为:
hosts: files dns
这样对hosts进行解析时,先使用/etc/hosts文件,再使用dns.
但很遗憾,这样改后并没有改变rndc的行为. |
|