Joh*_*ohn 5 domain-name-system bind a-record powerdns
我正在努力探索 DNS 上的精彩世界。
我为 example.com 创建了一个区域文件,其中包含:
@ A 1.2.3.4
* A 1.2.3.4
Run Code Online (Sandbox Code Playgroud)
但是,我也在设置我的本地 DNS,local.example.com,我创建了一个单独的区域文件,用于包含以下内容:
machine1 A 192.168.0.1
machine2 A 192.168.0.2
Run Code Online (Sandbox Code Playgroud)
当我挖掘 machine1.local.example.com 时,它返回 A 记录 192.168.0.1,太好了。
可悲的是,badmachine.local.example.com 返回 1.2.3.4,local.example.com 也是如此。
我不确定防止这种情况的最佳方法。如果我将以下内容添加到 local.example.com 空 A 记录将返回上述 2 个示例,这是我想要的行为:
@ A
* A
Run Code Online (Sandbox Code Playgroud)
我希望 any.example.com 使用通配符,除了 local.example.com 子域中的任何内容,除非指定,否则我不想给出响应。本质上,我需要一张带有一个排除项的通配符。
这是允许的吗?这是最佳实践,还是我做的事情非常错误?我正在使用带有 BIND 后端的 PowerDNS。
谢谢你的想法!
首先,你上面对 Chris S 的评论澄清了(确实,修改了)你原来的问题,我希望你能原谅我把它编辑成你的原始问题。
其次,正如其他人所指出的,不允许空记录。
第三,我认为做你想做的事情的方法是声明local.example.com
一个合适的子域:
local IN NS ns1.example.com
local IN NS ns2.example.com
Run Code Online (Sandbox Code Playgroud)
列出与您当前为 example.com 运行的相同的两个名称服务器(注意:我不知道 PowerDNS,因此我上面的条目采用 BIND 格式)。然后在那些名称服务器(我假设是这个名称服务器)上为 local.example.com 声明一个区域文件,其中仅包含您要解析的主机,并且没有通配符记录。
因此,当人们查找时foo.example.com
,假设未列出,它将匹配现有的通配符记录,并返回1.2.3.4
(或其他)。但是当人们查找 时
foo.local.example.com
,local.example.com
将返回名称服务器记录并进行进一步递归,您的名称服务器现在查看 的区域文件local.example.com
,并说(在没有 foo 的特定记录和local.example 中的通配符的情况下) .com)“不,没有这样的记录”。
准确地知道您想要什么响应将会很有用。您的问题中引用的前两行设置了域的默认响应,以及不匹配的记录响应。因此 example.com 将由“@”记录提供服务,anything-that-doesnt-exist.exmaple.com 将由“*”记录提供服务。它们不是必需的,您可以将两者都删除。将它们设置为空白值是无效的配置(在大多数系统上)。
归档时间: |
|
查看次数: |
13987 次 |
最近记录: |