local_unbound

FreeBSD自带local_unbound,默认情况下,仅向本地系统提供DNS解析。

若要提供完整的DNS服务,可使用unbound。

在/etc/rc.conf文件中加入以下行:

local_unbound服务启动时会修改/etc/resolv.conf文件,屏蔽掉以前设置的nameserver,并加入以下两行:

edns是RFC2671提出的一种扩展DNS机制,EDNS(Extension Mechanisms for DNS),并在其中推荐了一种传递包大小的EDNS0。

原来的/etc/resolv.conf文件被保存为/etc/resolv.conf.bak文件。且生成了一个新文件/etc/resolvconf.conf,内容如下:

从上述内容可知,配置文件保存在/var/unbound目录中。

此目录初始一共有四个conf文件、一个key文件,以及一个名为conf.d的空目录。

以上所有.conf文件的头部都有提示,任何修改都会被覆写。所以如果要进行设置,建议在conf.d目录中单独创建配置文件,例如:

*以上来自delphij的blog:在本地架设根DNS的镜像

保存后重新加载local_unbound服务:

以下是Root Servers (iana.org)的根服务器列表

 


关于iocage

iocage默认设置,jail使用宿主机的/etc/resolv.conf文件作为自己的resolv配置。

但是local_unbound会修改宿主机的/etc/resolv.conf文件,将nameserver指向127.0.0.1,这就造成jail中的resolv.conf文件中nameserver也指向127.0.0.1。jail将无法获得正确的DNS解析。

解决方法分为两步:

  1. 首先修改宿主机的/etc/resolv.conf,将nameserver指向宿主机的内网IP;
  2. 然后修改local_unbound的配置文件,允许为内网电脑提供DNS解析服务(实际仅提供auth和forward服务)。

做完以上设置后,重启local_unbound和iocage服务即可。