云网牛站
所在位置:首页 > Linux云服务器 > 使用BIND9在Ubuntu 18.04上设置本地DNS解析器

使用BIND9在Ubuntu 18.04上设置本地DNS解析器

2019-01-08 22:22:20作者:浦洪稿源:云网牛站

本文介绍如何使用BIND9 DNS软件在Ubuntu 18.04或Ubuntu 16.04系统上设置本地DNS解析器。BIND(Berkeley Internet Name Domain)是一种开源DNS服务器软件,由于其稳定性和高质量,在Unix/Linux上广泛使用。可以先参考在Ubuntu 16.04中配置内网DNS服务的步骤

 

使用BIND9在Ubuntu 18.04,16.04上设置本地DNS解析器的方法

运行以下命令在Ubuntu 18.04,16.04上从默认存储库安装BIND 9,BIND 9是当前所用的版本:

sudo apt update

sudo apt install bind9 bind9utils bind9-doc bind9-host

检查版本:

named -v

输出信息如下:

BIND 9.11.3-1ubuntu1.3-Ubuntu (Extended Support Version) <id:a375815>

要检查版本号和构建选项,请运行:

named -V

使用BIND9在Ubuntu 18.04上设置本地DNS解析器

默认情况下,BIND会在安装后自动启动,可以使用以下命令检查其状态:

systemctl status bind9

如果它没有运行,那么启动它:

sudo systemctl start bind9

在启动时启用自动启动,运行以下命令:

sudo systemctl enable bind9

BIND服务器将作为绑定用户运行,该用户在安装期间创建,并侦听TCP和UDP端口53,运行以下命令:

sudo netstat -lnptu | grep named

使用BIND9在Ubuntu 18.04上设置本地DNS解析器

通常,DNS查询被发送到UDP端口53,TCP端口53用于大于512字节的响应。

BIND守护程序名为named(守护程序是一个在后台运行的软件),命名二进制文件由bind9软件包安装,还有另一个重要的二进制文件:rndc,即远程名称守护程序控制器,由bind9utils软件包安装,rndc二进制文件用于重新加载/停止和控制BIND守护程序的其他方面,通过TCP端口953完成通信。

例如,我们可以检查BIND名称服务器的状态:

sudo rndc status

使用BIND9在Ubuntu 18.04上设置本地DNS解析器

 

本地DNS解析程序的配置

包含BIND配置的目录是/etc/bind/。

1、named.conf:主配置文件,包含其他三个文件的配置。

2、db.root:DNS解析器用于查询根DNS服务器的根提示文件,有13组根DNS服务器,从a.root-servers.net到m.root-servers.net。

3、db.127:localhost IPv4反向映射区域文件。

4、db.local:localhost转发IPv4和IPv6映射区域文件。

5、db.empty:空区域文件

Ubuntu上的BIND9服务器仅为localhost和本地网络客户端提供递归服务,外部查询将被拒绝。因此你不必编辑配置文件,为了让你熟悉BIND 9配置,我将向你展示如何启用递归服务。

主要的BIND配置文件/etc/bind/named.conf从其他3个文件中获取设置。

1、/etc/bind/named.conf.options

2、/etc/bind/named.conf.local

3、/etc/bind/named.conf.default-zones

要启用递归服务,请编辑第一个文件:

sudo nano /etc/bind/named.conf.options

在options中,添加以下行,请使用你自己的本地网络地址替换allow-recursion语句中的IP地址:

// hide version number from clients for security reasons.

version "not currently available";

// optional - BIND default behavior is recursion

recursion yes;

// provide recursion service to trusted clients only

allow-recursion { 127.0.0.1; 192.168.0.0/24; 10.10.10.0/24; };

// enable the query log

querylog yes;

使用BIND9在Ubuntu 18.04上设置本地DNS解析器

保存并关闭文件,然后测试配置文件:

sudo named-checkconf

如果测试成功,则重新启动BIND9:

sudo systemctl restart bind9

如果你在BIND服务器上运行防火墙,则需要打开端口53以允许LAN客户端发送DNS查询:

sudo ufw allow in from 192.168.0.0/24 to any port 53

这将打开TCP和UDP端口53到专用网络192.168.0.0/24,然后从同一局域网中的另一台计算机,我们可以运行以下命令来查询google.com的A记录,将192.168.0.102替换为BIND解析程序的IP地址:

dig A google.com @192.168.0.102

现在在BIND解析器上,使用以下命令检查查询日志:

sudo journalctl -eu bind9

这将显示bind9服务单元的最新日志消息,我可以在日志中找到以下行,表示已从端口57806 192.168.0.103收到google.com的A记录的DNS查询:

named[1162]: client @0x7f4d2406f0f0 192.168.0.103#57806 (google.com): query: google.com IN A +E(0)K (192.168.0.102)

 

在Ubuntu 18.04服务器上设置默认DNS解析器

Systemd-resolved在Ubuntu 18.04上提供存根解析器,存根解析器是最终用户计算机上的一个小型DNS客户端,它接收来自Firefox等应用程序的DNS请求并将请求转发给递归解析程序。

使用下面命令可以看到默认的递归解析程序:

systemd-resolve --status

使用BIND9在Ubuntu 18.04上设置本地DNS解析器

BIND不是默认值,如果在BIND服务器上运行以下命令:

dig A facebook.com

在BIND日志中找不到此DNS查询,相反,需要明确告诉dig使用BIND:

dig A facebook.com @127.0.0.1

要将BIND设置为默认解析程序,请打开systemd-resolved配置文件:

sudo nano /etc/systemd/resolved.conf

在[Resolve]部分中,添加以下行:

DNS=127.0.0.1

使用BIND9在Ubuntu 18.04上设置本地DNS解析器

保存并关闭文件,然后重新启动systemd-resolved服务:

sudo systemctl restart systemd-resolved

现在运行以下命令以检查默认DNS解析程序:

systemd-resolve --status

使用BIND9在Ubuntu 18.04上设置本地DNS解析器

Global部分中的DNS服务器会覆盖此命令输出末尾看到的其他DNS服务器,现在执行DNS查询而不指定127.0.0.1:

dig A facebook.com

你将在BIND日志中看到DNS查询,这意味着BIND现在是默认的递归解析器。

 

在Ubuntu 16.04服务器上设置默认DNS解析器

Ubuntu 16.04使用resolvconf程序管理/etc/resolv.conf文件中的DNS解析器,要将BIND设置为Ubuntu 16.04服务器上的默认解析程序,需要编辑/etc/resolvconf/resolv.conf.d/head文件并将nameserver 127.0.0.1添加到此文件中,这可以通过运行以下命令来完成命令:

echo "nameserver 127.0.0.1" | sudo tee -a /etc/resolvconf/resolv.conf.d/head

此文件中定义的解析器始终是第一个DNS解析器,现在重启resolvconf服务:

sudo systemctl restart resolvconf

现在可以检查/etc/resolv.conf的内容:

cat /etc/resolv.conf

使用BIND9在Ubuntu 18.04上设置本地DNS解析器

以上127.0.0.1是默认的DNS解析器。

请注意,某些托管服务提供商可能会使用网络帮助程序来自动生成/etc/resolv.conf文件,要更改默认DNS解析程序,你需要在主机控制面板中禁用该网络帮助程序。

 

结语

以上就是使用BIND9在Ubuntu 18.04/Ubuntu 16.04上设置本地DNS解析器的所有内容了,其中设置默认DNS解析器在Ubuntu 18.04下和在Ubuntu 16.04下方法是不一样的。

 

相关主题

在Ubuntu 18.04 LTS系统上安装和配置Dnsmasq的步骤

精选文章
热门文章