LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 700|回复: 2

自己摸索的host命令中 -l 选项的一点点小体会

[复制链接]
发表于 2006-11-3 10:59:13 | 显示全部楼层 |阅读模式
今天早上在做bind实验,把本机192.168.1.8配成了一台master服务器.

同时防火墙的配置如下:
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  localhost.localdomain  anywhere            
ACCEPT     udp  --  192.168.1.0/24       anywhere            udp dpt:domain
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination   

配完之后用#dig domain8.example.com 来检查服务,可以得到正常的回应

然后#host station8.domain8.example.com 检查此domain中的某台主机,也可以得到正常回应

所以我想当然的认为 # host -l 列出本domain的所有主机当然也可以, 实际结果却是失败

折腾了半天,想到防火墙中只针对53端口打开了udp传输,那是否是因为host -l是用的tcp传输呢,又加了一条iptables的INPUT条件
ACCEPT     tcp  --  192.168.1.0/24       anywhere            tcp dpt:domain

再次尝试 #host -l domain8.example.com, 这次成功了

同时查看日志 #tail -f /var/log/messages也可以看到
Nov  3 08:38:29 station8 named[4101]: client 192.168.1.8#32794: transfer of 'domain8.example.com/IN': AXFR started

原来host -l就相当于slave从master上拖取zone文件,使用的是tcp传输, 所以防火墙中必须打开相应的协议.另外named.conf中的allow-transfer中也必须有相应的acl来允许zone文件的传输.
发表于 2006-11-3 14:21:41 | 显示全部楼层
不错,省得别人走弯路了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-11-3 15:37:28 | 显示全部楼层
书上另外还说了,出于安全考虑, 一般当然不允许外网的机器可以使用这类命令来查看本地domain的所有主机. 这样看来可以使用iptables 和 named.conf中的allow-transfer 两种办法来禁止外网的host -l
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表