Bind9配置问题:仅转发指定子域请求并拒绝其他所有请求
Bind9配置问题:仅转发指定子域请求并拒绝其他所有请求
嘿,我来帮你排查下之前配置出问题的原因,以及给出符合你需求的正确配置方案。
首先,你遇到的REFUSED错误,核心原因是没有在转发域的配置里加上forward only;。默认情况下,Bind9的forward类型域会使用forward first策略:先尝试用你指定的forwarder解析,如果失败,就会自己尝试递归查询根域服务器。但你全局设置了recursion no;,这时候递归查询被禁止,自然就返回REFUSED了。
接下来是修正后的完整配置:
1. 目标子域的转发配置
在你的Bind9配置文件(比如named.conf.local)里添加:
zone "a-test.subdomain.com" { type forward; forward only; # 关键:只依赖指定的forwarder,不尝试自身递归 forwarders { 8.8.8.8; }; };
加上forward only;后,Bind9只会向8.8.8.8请求这个子域的解析,不会触发后续的递归尝试,完美适配你全局recursion no;的设置。
2. 全局核心配置
在named.conf.options里保持这些设置:
recursion no; allow-query { any; }; allow-query-cache { none; }; # 可选:确保其他域名的请求不会被缓存 };
验证配置
配置完成后,重启Bind9服务,然后用dig命令测试:
- 测试目标子域:
dig @你的Bind9服务器IP a-test.subdomain.com,应该能拿到8.8.8.8返回的解析结果 - 测试其他域名:
dig @你的Bind9服务器IP example.com,会得到REFUSED响应,这正是你想要的——触发客户端自动 fallback到次级DNS服务器
备注:内容来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

