用户工具

站点工具


doc:d:dns_local_unbound

本地缓存 DNS 服务设置

注意!本文内容仅适用于 FreeBSD 10。

基础设置

自从 FreeBSD 10 开始,BIND 被弃用。系统默认的 DNS 服务提供者是 unbound。相对于前者,unbound 的设置要更简单一些。本文就是简单介绍如何设置 unbound 作为本地缓存 DNS 服务器。非常简单,步骤如下:

# echo 'local_unbound_enable="YES"' >> /etc/rc.conf
# service local_unbound start

需要注意的几点

不要让 PPP 修改你的 /etc/resolv.conf

如果使用 PPP 拨号,包括 PPPoE,你的 /etc/ppp/ppp.conf 不能包含如下 dns 有关的代码:

enable dns

如果你的 /etc/ppp/ppp.conf 包含这一行,请注释掉。因为有了这个设置以后,PPP 会自动修改你的 /etc/resolv.conf。那么 local_unbound 的工作就失效了。

修改 unbound 的配置文件以设置监听界面/地址

为了细化 unbound 的配置,可以考虑修改 /var/unbound/unbound.conf 来控制监听的方式:

# Generated by local-unbound-setup
server:
        username: unbound
        directory: /var/unbound
        chroot: /var/unbound
        pidfile: /var/run/local_unbound.pid
        auto-trust-anchor-file: /var/unbound/root.key

	interface: 0.0.0.0
	access-control: 10.0.0.0/8 allow

include: /var/unbound/forward.conf

如果将 interface 的值设置为 0.0.0.0,那么 local_unbound 将在所有地址上监听。当然你可以设置为特定的地址,比如只针对内网等等。

interface: 192.168.1.1

如果你只希望特定网段的机器访问 local_unbound,那么就设定 access-control 这个字段。

access-control: 192.168.1.0/24

指定 unbound 使用 TCP 还是 UDP 通讯

unbound 可以提供 TCP 或者 UDP 类型的查询服务。

提供 TCP 方式:

do-tcp: yes (或者 no)

提供 UDP 方式:

do-udp: yes (或者 no)

同时,也可以指定与上游服务器用 TCP 通讯(默认是 UDP):

tcp-upstream: yes (或者 no)

IPv4 还是 IPv6

do-ipv4: yes (或者 no)
do-ipv6: yes (或者 no)

修改 /var/unbound/forward.conf 以设定上游 DNS 服务器

# Generated by local-unbound-setup
forward-zone:
        name: "."
        forward-addr: 8.8.8.8
        forward-addr: 8.8.4.4

这个配置文件一目了然。你可以选择自己喜欢的 DNS 服务器地址填到这里。

上游 DNS 服务器设置不是必须的。如果不设置上游 DNS 服务器,unbound自动运行与递归模式,直接通过13台根 DNS 服务器递归查询,以利于减少 DNS 污染。

修改配置以后别忘了重新启动 local_unbound 服务

# service local_unbound restart

解析本地域名

unbound 也可以用来解析本地域名。比如你在局域网内有一台邮件服务器位于 10.0.0.6,希望通过域名 mail.home.lan 来访问,只需要在 unbound.conf 里面增加如下几条就可以正反双向解析了。

private-domain: "home.lan"
local-zone: "home.lan." static
local-data: "mail.home.lan. IN A 10.0.0.6"
local-data-ptr: "10.0.0.6 mail.home.lan"

include: /var/unbound/forward.conf   # 确保这一行在最后

可用命令# unbound-checkconf unbound.conf 检查文件是否书写正确。

然后重启 local_unbound:

# service local_unbound restart

最后说一句,service(8) 这个命令很赞。

/data/vhosts/wiki-data/pages/doc/d/dns_local_unbound.txt · 最后更改: 2016/03/13 16:31 由 Siroh