|
|
发表于 2004-8-19 02:12:38
|
显示全部楼层
制造这样的错误出来
root: /snoopy/test/c # iptables -A OUTPUT -p tcp --dport 953 -j DROP
root: /snoopy/test/c # service named stop
Stopping named: rndc: connect failed: operation canceled
[ OK ]
root: /snoopy/test/c #
问题的关键在与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 snoopy named[513]: starting BIND 9.2.2
May 8 snoopy 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.”也可以.
这说明,rndc并没有承认/etc/hosts文件中localhost和127.0.0.1的对应关系,当对命令行通道试图连接localhost的953端口时,发现并不能对localhost进行解析,因为不知道其IP地址,所以报告网络不可达.这样也就不能连接到127.0.0.1的953端口对named进行控制.
这样种种的原因你参考一下,我都没碰过,,
参考文章
http://chinaunix.net/jh/16/241321.html
还有一种可能是953端口被占用了,
通常我们是通过 unix 系统的中断信号来控制 named 进程,如使用
-HUP 来使 named 重新读入配置文件的信息等等。而 rndc 是
bind 软件引进的远程控制通道,代替 unix 信号来控制 named
进程。使用 rndc 你就可以使用 rndc reload 等命令来重新读入
named.conf 配置文件了 |
|