Windows Server 2016 DNS中test.contoso.com子域名泛解析规则配置求助
嘿,我来帮你拆解下这个问题的根源和对应的解决方案哈!
首先为啥sub.test.contoso.com会返回NXDOMAIN?原因很简单:当你在Windows Server DNS上创建了test.contoso.com的正向查找区域后,DNS服务器会默认把自己当成这个域的权威服务器。这意味着所有针对test.contoso.com及其子域名的查询,都会直接由本地DNS处理,不会转发到你配置的Cloudflare转发器——哪怕你开了递归和根提示也没用,权威区域的查询优先级是最高的。而你没在这个区域里配置sub.test.contoso.com的记录,所以自然返回不存在的错误。
接下来给你几个更合理的解决办法,不用手动逐个委派子域:
方案1:配置泛域名A记录(最直接的本地解决方式)
在test.contoso.com的正向区域里创建一条泛域名A记录:
- 主机名填
* - IP地址填
test2.contoso.com对应的IP
这样一来,所有未单独配置的子域名(比如sub.test.contoso.com、a.b.test.contoso.com)都会匹配这条泛记录,直接返回目标IP,完美解决你的问题。而且如果之后有某个子域需要特殊处理,只要单独给它加一条A/CNAME记录就行——单独记录的优先级会高于泛记录,不会冲突。
方案2:改用CNAME(解决你之前的CNAME报错问题)
你之前尝试给test.contoso.com加CNAME报错,是因为Windows DNS不允许同一个域名节点同时存在A记录和CNAME记录。如果一定要用CNAME的话,可以这么操作:
- 先删掉
test.contoso.com现有的A记录 - 给
test.contoso.com添加CNAME记录,指向test2.contoso.com - 再添加一条泛CNAME记录
*.test.contoso.com,同样指向test2.contoso.com
不过要注意:把主域改成CNAME可能会影响一些依赖A记录的服务(比如部分邮件服务器对域名的要求),所以得根据你实际的业务场景判断是否适用。
方案3:改用条件转发器(把整个域的DNS交给Cloudflare管理)
如果你更希望Cloudflare来处理test.contoso.com所有的域名解析(包括子域),那可以删掉本地的test.contoso.com正向查找区域,然后配置条件转发器:
- 在Windows DNS管理器里,右键点击服务器名,选择「条件转发器」
- 添加
test.contoso.com作为转发域名,填入Cloudflare的DNS服务器地址(比如1.1.1.1、1.0.0.1) - 勾选「对此域名使用递归」
这样所有针对test.contoso.com及其子域的查询,都会直接转发到Cloudflare,由Cloudflare的DNS规则来处理泛解析或者其他自定义配置,本地DNS只负责转发请求,不用维护任何记录。
备注:内容来源于stack exchange,提问作者TheCyberWarden

