我正在尝试unbound
将 DNS 查询转发到权威 DNS 服务器,缓存它们,并添加其他本地信息。我的配置非常简单:
/etc/unbound/unbound.conf
:
server:
... # all default settings
include: "/etc/unbound/unbound.conf.d/*.conf"
forward-zone:
name: "."
forward-addr: 1.1.1.1 # authoritative server
然后我想local-data
在几个中添加一些local-zone
,例如:
/etc/unbound/unbound.conf.d/foobar.org.conf
server:
local-zone: "foobar.org." transparent
local-data: "foobar.org. 3600 IN SOA admin.foobar.org. admin.foobar.org. 1710435698 86400 3600 3600000 300"
local-data: "foobar.org. 3600 IN NS admin."
local-data: "foobar.org. 3600 IN MX 0 foobar.org"
local-data: "foobar.org. 3600 IN A 12.34.56.78"
local-data: 'system.at.foobar.org. 14400 IN TXT "[email protected]"'
local-data: "private.foobar.org. 3600 IN A 10.0.1.2"
local-data-ptr: "10.0.1.2 private.foobar.org."
local-data: "public.foobar.org. 3600 IN A 98.76.54.32"
local-data-ptr: "98.76.54.32 public.foobar.org."
...
此设置按预期工作。local-data
记录已得到很好的解决,PTRTXT
等也是如此。
但这真的是unbound
需要配置的方式吗?local-zone
local-data
如果我将此设置与“经典”bind
区域文件进行比较:
$ORIGIN foobar.org.
$TTL 3600
@ IN SOA admin.foobar.org. admin.foobar.org. (
1710435698 ; Serial
86400 ; Refresh
3600 ; Retry
3600000 ; Expire
300 ) ; Negative Cache TTL
@ IN NS admin.
@ IN MX 0 foobar.org.
@ IN A 12.34.56.78
system.at IN TXT "[email protected]"
private IN A 10.0.1.2
public IN A 98.76.54.32
在此bind
区域:
- 我不必为每条记录重复 TTL
- 我不必重复搜索记录的区域名称
- 对于每条记录,我知道他们是区域的一部分
所以我的问题是:我的设置是否正确,或者我是否错过了配置& ; 和将记录链接到区域的unbound
方法?local-zone
local-data
答案1
该local-data
选项不使用“经典”区域文件,因为它从未打算托管区域。Unbound 首先是一个缓存解析器(旨在与 NSD 一起用于权威托管);您使用的选项只是为了让您覆盖DNS 会逐个名称地进行回复。(这就是为什么会有“透明”之类的本地区域模式——普通的权威区域不会这样做。)
所以是的,这是需要配置的方式local-data
,因为您试图让它做一些它实际上不适合做的事情。
Unbound 的当前版本(显然从 1.7.x 开始)确实支持权威托管,但您可以使用单独的auth-zone:
部分对其进行配置:
auth-zone:
name: "example.com"
zonefile: "example.com.zone"
for-downstream: yes
for-upstream: yes