在Ubuntu 20.04上使用BIND9设置仅缓存DNS服务器

在本教程中,我们将讨论如何在Ubuntu 20.04上使用BIND9安装和设置仅缓存DNS服务器。的 伯克利互联网名称域名(BIND 9) 是一款通用,经典且完整的名称服务器软件,可实现Internet域名服务器。它是Internet上使用最广泛的名称服务器软件。一方面,DNS是指将主机名映射到其各自IP地址的分布式命名系统。这使最终用户可以通过主机名而不是IP来引用系统,IP可能会不时更改,具体取决于IP是静态的还是动态的。

在Ubuntu 20.04上使用BIND9设置仅缓存DNS服务器

可以将任何DNS服务器配置为服务器的角色不同。在本指南中,我们将研究如何在Ubuntu 20.04上使用Bind9设置仅缓存的DNS服务器。尽管所有DNS服务器都可以缓存DNS查询,但仅缓存DNS服务器的主要作用也是唯一作用就是缓存DNS查询。它没有任何区域数据信息,因此不提供区域服务。

使用BIND设置仅缓存的DNS服务器不需要专家级的经验,即使是新手也可以处理它:)。

运行系统更新

首先,请确保您的系统软件包存储库是最新的。

apt update

在Ubuntu 20.04上安装BIND9

接下来,在Ubuntu 20.04上安装Bind9和其他BIND / DNS实用程序;

apt install bind9 bind9utils -y

这些工具会安装名称服务器守护程序, named,绑定管理工具, rndc 和调试实用程序, dig

在Ubuntu 20.04上使用BIND9设置仅缓存DNS服务器

安装Bind9软件包和其他DNS实用程序后,继续设置仅缓存的DNS服务器。 /etc/bind/named.conf 是名为BIND DNS服务器的主要配置文件。默认情况下,至少在Ubuntu 20.04上,此配置文件是这样的:

less /etc/bind/named.conf
// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the 
// structure of BIND configuration files in Debian, *BEFORE* you customize 
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";

从上面的文件;

  • 注释行以双斜杠开头, //# 也接受评论。
  • include语句用于包含其他命名的配置文件。
  • 所有语句必须以半冒号结尾, ;

定义绑定全局配置选项

options 语句用于定义全局命名配置选项,为其他语句设置默认值,指定 named 工作目录,允许的查询类型等

按照此配置,在Ubuntu 20.04上,所有Bind选项都存储在 /etc/bind/named.conf.options 配置文件。

创建默认选项配置文件的备份。

cp /etc/bind/named.conf.options{,.bak}

接下来,打开选项配置文件进行编辑;

vim /etc/bind/named.conf.options

配置访问控制列表

首先,配置DNS服务器访问控制列表。可以使用 acl 声明。

// DNS Server ACL
acl "allowed" {
        192.168.57.0/24;
};

ACL 语句定义可以允许或拒绝访问名称服务器的主机组。在这种情况下, allowed 是访问控制列表的名称,当然 192.168.57.0/24 是将被允许使用我们的DNS服务器的网络。

定义全局服务器配置选项

BIND DNS服务器全局配置选项在 options 声明。

...
options {
        directory "/var/cache/bind";

        recursion yes;
        allow-recursion { localhost; allowed; };
        listen-on port 53 { localhost; 192.168.57.6; };
        allow-query { localhost; allowed; };
        allow-transfer { none; };
        
        dnssec-validation auto;

        listen-on-v6 { any; };
};

哪里:

  • 递归 –指定是否充当递归服务器。
  • 允许递归 –定义主机以允许递归查询。
  • –指定 IPv4 用于侦听查询的网络接口。
  • 允许查询 –指定允许哪些主机查询名称服务器以获取权威资源记录。
  • 允许转移 –指定允许哪些辅助服务器请求传输区域信息。
  • dnssec验证 –指定是否通过DNSSEC证明资源记录是真实的。默认选项是 yes
  • v6听 –指定 IPv6 用于侦听查询的网络接口。

对于基本的仅缓存DNS服务器,这是我们的方式 /etc/bind/named.conf.options 看起来像;

acl "allowed" {
        192.168.57.0/24;
};
options {
        directory "/var/cache/bind";

        recursion yes;
        allow-recursion { localhost; allowed; };
        listen-on port 53 { localhost; 192.168.57.6; };
        allow-query { localhost; allowed; };
        allow-transfer { none; };
        
        dnssec-validation auto;

        listen-on-v6 { none; };
};

检查绑定配置语法

named-checkconf 是一个实用程序,可用于检查绑定/命名配置语法错误。

您可以简单地运行 named-checkconf。但是,您也可以将路径作为命令参数传递给配置文件。

named-checkconf

或简单地说

named-checkconf /etc/bind/named.conf

如果配置文件中有任何语法错误,该命令将显示受影响的行和特定错误。下面是一个例子;

/etc/bind/named.conf.options:10: missing ';' before 'allow-query'

在防火墙上打开DNS端口

如果UFW正在运行,请运行以下命令以允许从您的特定LAN网络(在我们的情况下为192.168.57.0/24)进行DNS查询。

ufw allow from 192.168.57.0/24 to 192.168.57.6 port 53 proto udp
ufw status numbered
[ 2] 192.168.57.6 53/udp        ALLOW IN    192.168.57.0/24

控制绑定服务

您可以使用其启动,停止,重新启动,重新加载绑定DNS命名服务 named systemd单位文件。例如,要启动并使其在系统启动时运行,

systemctl enable --now named

检查状态;

systemctl status named
● named.service - BIND Domain Name Server
     Loaded: loaded (/lib/systemd/system/named.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2020-10-05 20:11:40 UTC; 43s ago
       Docs: man:named(8)
   Main PID: 17452 (named)
      Tasks: 8 (limit: 2282)
     Memory: 17.8M
     CGroup: /system.slice/named.service
             └─17452 /usr/sbin/named -f -u bind

Oct 05 20:11:40 ubuntu20 named[17452]:...

您也可以检查DNS端口。

netstat -alunp | grep 53

测试BIND DNS解析

在客户端系统上,将DNS服务器IP配置为仅缓存DNS服务器IP。在此示例设置中,我们使用CentOS 8作为我们的DNS客户端。

因此,找到一个活动的连接名称;

nmcli -t --fields NAME con show --active
Wired connection 1

根据当前活动的连接,找到DNS服务器IP地址集;

nmcli --fields ip4.dns con show 'Wired connection 1'

然后您可以设置或修改DNS服务器IP地址;

nmcli con mod 'Wired connection 1' ipv4.dns 192.168.57.6

或者,您也可以添加DNS服务器IP。

nmcli con mod 'Wired connection 1' +ipv4.dns 192.168.57.6

重新加载界面;

nmcli con down 'Wired connection 1'
nmcli con up 'Wired connection 1'

现在检查DNS服务器IP;

nmcli --fields ip4.dns con show 'Wired connection 1'
IP4.DNS[1]:                             192.168.57.6

还要检查/etc/resolv.conf文件是否已使用相同的IP更新。

验证DNS解析度(假设您已经安装了bind-utils软件包);

dig google.com
; <<>> DiG 9.11.13-RedHat-9.11.13-6.el8_2.1 <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54634
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 064887612bf0e630010000005f7b8519e3b270a5437d1619 (good)
;; QUESTION SECTION:
;google.com.			IN	A

;; ANSWER SECTION:
google.com.		90	IN	A	216.58.223.110

;; Query time: 1 msec
;; SERVER: 192.168.57.6#53(192.168.57.6)
;; WHEN: Mon Oct 05 23:41:59 EAT 2020
;; MSG SIZE  rcvd: 83
nslookup google.com
Server:		192.168.57.6
Address:	192.168.57.6#53

Non-authoritative answer:
Name:	google.com
Address: 216.58.223.110
Name:	google.com
Address: 2a00:1450:401a:805::200e

以上就是我们关于如何在Ubuntu 20.04上使用BIND9安装和设置仅缓存DNS服务器的指南的总结。请享用。

Sidebar