实现私有DNS搭建(正向解析+反向解析+主从同步+安全措施+配置转发服务器+基于ACL实现智能DNS)

先了解一些bind中常用工具:

dig :DNS 查找工具

描述:

dig是一个用于查询DNS名称服务器的灵活工具。它执行DNS查找并显示从所查询的名称服务器返回的答案。大多数DNS管理员使用dig来解决DNS问题,因为它具有灵活性、易用性和清晰的输出。其他查找工具的功能往往不如dig。

语法:

dig [@server] [-b address] [-c class] [-f filename] [-k filename] [-m] [-p port#] [-q name] [-t type] [-v] [-x addr] [-y [hmac:]name:key] [ [-4] | [-6] ] [name] [type] [class] [queryopt…]

dig [-h]

dig [global-queryopt…] [query…]

dig的典型调用如下所示:   

      dig @server name type

sever:

要查询的名称服务器的名称或IP地址。它可以是带点的十进制形式的IPv4地址,也可以是冒号分隔形式的IPv6地址。当提供的server参数是主机名时,dig会在查询该名称服务器之前解析该名称。

如果没有提供server参数,dig会查询/etc/resolv.conf;如果在那里找到一个地址,它就查询该地址的名称服务器。如果使用了-4或-6选项,则只尝试对应传输的地址。如果没有找到可用的地址,dig将查询发送到本地主机。将显示来自响应的名称服务器的应答。

name:

要查找的Resource record(资源记录)中的名字

-x addr:

这个选项简化了映射IP地址到名称的反向查询,这个addr是一个带点的十进制的IPV4格式,后者是以冒号分隔的IPV6地址。当使用-x选项是,不需要提供name, class, and type 参数,Dig会自动查找类似94.0.192 .in-addr这样的名称。并将查询类型和类别分别设置为PTR和IN。在IP6下使用nibble格式查找IPv6地址。

host:DNS查找工具

语法:

host [-aACdlnrsTUwv] [-c class] [-N ndots] [-p port] [-R number] [-t type] [-W wait] [-m flag] [ [-4] | [-6] ] [-v] [-V] {name} [server]

描述:

host是一个执行DNS查询的简单实用程序,它通常用于将名称转换为IP地址,反之亦然。如果没有给出参数或选项,host会打印出命令行参数和选项的简短摘要。

name是要查找的域名。它也可以是一个带点的十进制的IPv4地址或冒号分隔的IPv6地址,在这种情况下,主机默认对该地址执行反向查找。server是一个可选参数,它是主机应该查询的名称服务器的名称或IP地址,而不是/etc/resolv.conf中列出的服务器。

named-checkconf : 名称配置文件的语法检查工具

语法:

named-checkconf [-chjlvz] [-p [-x ]] [-t directory] {filename}

描述:

检查名称配置文件中的语法,而不是语义。这个文件连带着它包含的其他文件都可以进行解析和语法检查。如果没有指定文件,默认读取/etc/name.conf文件

注意:

在独立的解析环境读取的名称文件,比如rndc.key和bind.keys文件,不会自动通过named-checkconf工具检查这些文件中可能导致named服务不能正常运行的配置错误,即使named-checonf显示的是没问题。

named-checkzone :专区(zone)文件准许工具

语法:

named-checkzone [-d] [-h] [-j] [-q] [-v] [-c class] [-C mode] [-f format] [-F format] [-J filename] [-i mode] [-k mode] [-m mode] [-M mode] [-n mode] [-l ttl] [-L serial] [-o filename] [-r mode] [-s style] [-S mode] [-t directory] [-T mode] [-w directory] [-D] [-W mode] {zonename} {filename}

描述:

named-checkzone 检查专区(zone)文件的语法和完整性。当加载专区(zone)时,它执行和named一样的检查。在专区(zone)文件配置到名称服务器之前,用named-checkzone是很有用的。 

rndc :名称服务器控制程序

语法:

rndc [-b source-address] [-c config-file] [-k key-file] [-s server] [-p port] [-q] [-r] [-V] [-y server_key] [[-4] | [-6]] {command}

描述:

rndc控制操作名称服务器 如果调用rndc命令时后面没有选项或者参数,它将打印可支持的命令和有用的选项和它们的参数. 

命令:

flush:

清除服务器缓存

reload:
加载配置文件和专区(zone)

 了解example.com base zone file(域名基本专区文件):

以下是域example.com的完整专区文件,它说明了许多常见的特征。在文件的合适位置对这些特征进行了解释。专区文件由RR(资源记录)组成。RR(资源记录)面试了专区的特征或属性。

owner name

RR所创建的域

The @ (at-sign):

当在标签或名称字段使用时,@符号表示当前的源。在专区文件的开始,就是域名再加上点(.)。

每一行的开始都给出了RR的所有者,如果以空行开头,意思就是和先前的RR所有者一样。为了可读性,通常包含空行。

TTL:

RR的生存时间。该字段是一个32位整数,以秒为单位,在解析器缓存RRs时主要使用。TTL描述了一个RR在失效之前可以缓存多长时间。

The $TTL Directive:

这将为后续未定义的TTL设置默认的生存时间(Time-To-Live, TTL)。有效的ttl值的范围是0 ~ 2147483647秒。

IN:The Internet. The only widely class used today.
互联网。今天唯一广泛使用的类别。

SOA:marks the start of a zone of authority
标志权威专区的开始

A:a host address
主机地址

NS:an authoritative name server
权威名称服务器

CNAME:the canonical name for an alias

别名的标准名称

MX:mail exchange

邮件交换

@         IN      SOA   ns1.example.com. hostmaster.example.com. (
 6                                2003080800 ; serial number
 7                                12h        ; refresh
 8                                15m        ; update retry
 9                                3w         ; expiry
10                                2h         ; minimum
11                                )

serial number:

备用名称服务器定期读取(3和4)SOA RR。时间间隔由开始授权(SOA) RR的刷新参数定义。

备用名称服务器将从主名称服务器接收到的SOA RR的序列号参数与当前区域数据的SOA RR中的序列号进行比较。

如果接收到的序列号在算术上比当前序列号大,则从服务器使用AXFR或IXFR(取决于主服务器和从服务器的配置)发起区域传输(5),使用TCP在端口53(6)上

refresh:

专区中备用服务器读取或轮询主服务器的时间间隔。SOA RR最为推荐的专区刷新时间是整小时的倍数,以减少流量负载。

update retry:

重试更新:备用名称服务器再次同步主名称服务器的时间

expiry:

到期:指定服务器在正常过期后保留记录的最长时间,以便将它们作为过期记录返回。默认为1天。允许的最小值是1秒。

minimum:

SOA中最后一个字段是“解析域名失败”的缓存生存时间。控制从本服务器上响应其他服务器上缓存的错误域名的时间 。这个时间最大为3小时(3h)。

第一阶段:先实现客户端向名称解析器端解析域名功能。

rocky作为DNS名称解析服务器,ubutu作为客户端。另一台rocky提供http服务,让windos能过通过DNS名称解析服务登录域名。 

#安装bind相关软件包
[root@Rocky8 ~]#yum -y install bind bind-utils bind-libs

#查询bind软件包清单  
[root@Rocky8 ~]#rpm -ql bind

/etc/named.conf                        #配置文件
/etc/named.rfc1912.zones               #专区配置文件
/usr/lib/systemd/system/named.service  #服务文件
/var/named                             #相关数据存放目录
/var/named/named.ca                    #根域数据文件

#查看一下服务文件
[root@Rocky8 ~]#cat /usr/lib/systemd/system/named.service

ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} $OPTIONS   #用户名字:named

#设置开机自启并立即启动
[root@Rocky8 ~]#systemctl enable --now named 

Created symlink /etc/systemd/system/multi-user.target.wants/named.service → /usr/lib/systemd/system/named.service.

#查看named服务开的监听端口
[root@Rocky8 ~]#ss -ntulp

Netid      Local Address:Port              Process
  
udp          127.0.0.1:53          users:(("named",pid=27949,fd=512)) #专门负责地址解析
tcp          127.0.0.1:53          users:(("named",pid=27949,fd=21))
tcp          127.0.0.1:953         users:(("named",pid=27949,fd=23)) 

#修改rocky网卡配置文件。
[root@Rocky8 ~]#vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
NAME=eth0
BOOTPROTO=static
IPADDR=10.0.0.128
PREFIX=24
GATEWAY=10.0.0.2
DNS1=127.0.0.1                          #添加DNS指向自己

#重新加载网卡信息及启动网卡
[root@Rocky8 ~]#nmcli connection reload
[root@Rocky8 ~]#nmcli connection up eth0

#查看NDS
[root@Rocky8 ~]#cat /etc/resolv.conf

# Generated by NetworkManager
search zhang.stu
nameserver 127.0.0.1

#本机目前已可以借助自己的DNS完成解析
[root@Rocky8 ~]#ping www.baidu.com

PING www.a.shifen.com (220.181.38.150) 56(84) bytes of data.
64 bytes from 220.181.38.150 (220.181.38.150): icmp_seq=1 ttl=128 time=17.2 ms
64 bytes from 220.181.38.150 (220.181.38.150): icmp_seq=2 ttl=128 time=12.0 ms
64 bytes from 220.181.38.150 (220.181.38.150): icmp_seq=3 ttl=128 time=14.1 ms

#修改named服务配置文件(修改2项)是为了让远程客户端能通过本主机DNS解析
[root@Rocky8 ~]#vim /etc/named.conf

listen-on port 53 { any; };          #匹配能正常使用DNS的IP地址 ,也可以直接注销
allow-query     { any; };            #这是默认值——允许用户从任何IP进行查询。也可以直接注销

#检查修改配置文件以后的语法问题
[root@Rocky8 ~]#named-checkconf

#搭建解析数据库:

#创建zone(专区)文件及加640权限和加named组
[root@Rocky8 ~]#cd /var/named
[root@Rocky8 /var/named]#touch zhangyongbiao.com.zone
[root@Rocky8 /var/named]#chmod 640 zhangyongbiao.com.zone
[root@Rocky8 /var/named]#chgrp named zhangyongbiao.com.zone
[root@Rocky8 /var/named]#ll zhangyongbiao.com.zone
-rw-r----- 1 root named 0 Dec 14 15:16 zhangyongbiao.com.zone

#编辑zone(专区)文件
[root@Rocky8 /var/named]#vim zhangyongbiao.com.zone

$TTL 1D
@           IN  SOA master hostmaster ( 1214 3h 10m 1d 6h )
            NS  master
master      A   10.0.0.128
www         A   10.0.0.135
joe         A   192.168.1.0
db          A   192.168.100.0

#检查zone(专区)的完整性和语法
[root@Rocky8 /var/named]#named-checkzone zhangyongbiao.com /var/named/zhangyongbiao.com.zone

zone zhangyongbiao.com/IN: loaded serial 1214
OK

#编辑zone(专区)配置文件
[root@Rocky8 /var/named]#vim /etc/named.rfc1912.zones

zone "zhangyongbiao.com" IN {
        type master;
        file "zhangyongbiao.com.zone";
};

#检查配置文件的语法是否有问题
[root@Rocky8 /var/named]#named-checkconf /etc/named.rfc1912.zones

#加载配置文件和zone(专区)
[root@Rocky8 /var/named]#rndc reload

server reload successful



#ubuntu先安装bind9-utils(需要用到里面的dig或host命令)
[16:22:19 root@ubuntu2204 ~]#apt -y install bind9-utils

#修改ubuntu的网卡配置(ubuntu作为远程客户端)
[16:12:21 root@ubuntu2204 ~]#vim /etc/netplan

network:
  ethernets:
    eth0:
      #      dhcp4: true
      addresses: [10.0.0.131/24]
      nameservers: 
        addresses: [10.0.0.128]      #DNS地址指向主服务器的IP
  version: 2

#ubuntu网卡生效
[16:18:31 root@ubuntu2204 ~]#netplan apply

#ubuntu查看网关
[16:19:27 root@ubuntu2204 ~]#resolvectl status

Global
       Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: stub

Link 2 (eth0)
    Current Scopes: DNS
         Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 10.0.0.128
       DNS Servers: 10.0.0.128


#ubuntu客户端能够通过DNS解析服务器(rocky)去解析了。

#解析www.zhangyongbiao.com
[15:55:07 root@ubuntu2204 ~]#host www.zhangyongbiao.com
www.zhangyongbiao.com has address 10.0.0.135

#解析joe.zhangyongbiao.com
[15:55:26 root@ubuntu2204 ~]#host joe.zhangyongbiao.com
joe.zhangyongbiao.com has address 192.168.1.0

#解析db.zhangyongbiao.com
[15:57:02 root@ubuntu2204 ~]#host db.zhangyongbiao.com
db.zhangyongbiao.com has address 192.168.100.0

[16:24:21 root@ubuntu2204 ~]#host www.baidu.com

www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 220.181.38.149
www.a.shifen.com has address 220.181.38.150


#配置另一台rocky,能让windos通过解析服务登录域名

#安装httpd软件
[root@Rocky8 ~]#yum -y install httpd

#写入信息
[root@Rocky8 ~]#echo "welcome to Baoding" > /var/www/html/index.html

 第二阶段:反向解析

rocky是NDS名称解析服务器。ubuntu是客户端

#在名称解析服务器上创建一个10网段的专区文件
[root@Rocky8 /var/named]#vim 10.0.0.zone
$TTL 1D
@             IN   SOA   master   hostmaster ( 1214 3H 10M 1D 3H )
                   NS    master
master        IN   A     10.0.0.128
200           IN   PTR   www.zhangyongbiao.com.
30            IN   PTR   db.zhangyongbiao.com.
150           IN   PTR   joe.zhangyongbiao.com.

#检查专区语法和完整性
[root@Rocky8 /var/named]#named-checkzone 10.0.0 /var/named/10.0.0.zone 

zone 10.0.0/IN: loaded serial 1214
OK

#编辑专区配置文件
[root@Rocky8 /var/named]#vim /etc/named.rfc1912.zones

zone "0.0.10.in-addr.arpa" IN {
        type master;
        file "10.0.0.zone";
};

#检查配置文件的语法是否正确
[root@Rocky8 /var/named]#named-checkconf

#ubuntu客户端反向解析ipv4
[17:13:43 root@ubuntu2204 ~]#host 10.0.0.200
200.0.0.10.in-addr.arpa domain name pointer www.zhangyongbiao.com.

[17:13:52 root@ubuntu2204 ~]#host 10.0.0.30
30.0.0.10.in-addr.arpa domain name pointer db.zhangyongbiao.com.

[18:22:46 root@ubuntu2204 ~]#host 10.0.0.150
150.0.0.10.in-addr.arpa domain name pointer joe.zhangyongbiao.com.

第三阶段:实现主从同步 

加一台centos作为从节点DNS服务器,ubuntu客户端从从节点NDS服务器解析域名

#修改从节点NDS服务器配置文件
[root@CentOS ~]#vim /etc/named.conf

//      listen-on port 53 { any; };   #注销
//      allow-query     { any; };     #注销

#修改从节点服务器centos的zone(专区)文件
[root@CentOS ~]#vim /etc/named.rfc1912.zones

zone "zhangyongbiao.com" IN {
        type slave;
        masters { 10.0.0.128; };                   #注意,这是masters(末尾加s)
       file "slaves/zhangyongbiao.com.zone.slave";
};                                                 #存储从主服务器过来的数据目录


#检查语法
[root@CentOS ~]#named-checkconf

#启动服务并立即启动
[root@CentOS ~]#systemctl enable --now named

#修改主节点服务器rocky的配置文件
[root@Rocky8 /var/named]#vim zhangyongbiao.com.zone

$TTL 1D
@             IN   SOA   master   hostmaster ( 1215 3H 10M 1D 3H ) #序列号要加1
                   NS    master
                   NS    slave             #添加从节点服务器名称
master        IN   A     10.0.0.128
slave         IN   A     10.0.0.130        #指向所在的IP地址
www           IN   A     10.0.0.100
joe           IN   A     1.1.1.1
db            IN   A     192.168.1.0
jok           IN   A     2.2.2.2

#重启主节点服务器rocky
[root@Rocky8 /var/named]#systemctl restart named


#从ubuntu客户端添加从节点服务器的IP
[21:22:47 root@ubuntu2204 ~]#vim /etc/netplan
# This is the network config written by 'subiquity'
network:
  ethernets:
    eth0:
      #      dhcp4: true
      addresses: [10.0.0.131/24]
      nameservers: 
        addresses: [10.0.0.128]                 #主节点DNS服务器IP
        addresses: [10.0.0.130]                 #从节点DNS服务器IP
  version: 2

#ubuntu网卡生效
[21:27:08 root@ubuntu2204 ~]#netplan apply


#从节点服务器完成解析域名
[21:51:55 root@ubuntu2204 ~]#dig joe.zhangyongbiao.com @10.0.0.130

;; ANSWER SECTION:
www.zhangyongbiao.com.	86400	IN	A	10.0.0.100

;; AUTHORITY SECTION:
zhangyongbiao.com.	86400	IN	NS	master.zhangyongbiao.com.

;; ADDITIONAL SECTION:
master.zhangyongbiao.com. 86400	IN	A	10.0.0.128

;; Query time: 0 msec
;; SERVER: 10.0.0.130#53(10.0.0.130) (UDP)
;; WHEN: Thu Dec 15 21:58:23 CST 2022
;; MSG SIZE  rcvd: 131

加强安全性:虽然实现了主从DNS服务器数据同步,但是安全性还是不能保证。因为从其他客户端可以通过用dig -t AXFR命令来获取主或从DNS服务器上的数据;以下是举例:ubuntu还是客户端,它直接从主服务器或从从服务器传输zone(专区)数据 

#ubuntu作为客户端。不用通过主或从服务器解析,而是把主服务器上的数据全部传输过来

[10:48:12 root@ubuntu2204 ~]#dig -t AXFR zhangyongbiao.com @10.0.0.128

; <<>> DiG 9.18.1-1ubuntu1.2-Ubuntu <<>> -t AXFR zhangyongbiao.com @10.0.0.128
;; global options: +cmd
zhangyongbiao.com.	86400	IN	SOA	master.zhangyongbiao.com. hostmaster.zhangyongbiao.com. 1215 10800 600 86400 10800
zhangyongbiao.com.	86400	IN	NS	master.zhangyongbiao.com.
zhangyongbiao.com.	86400	IN	NS	slave.zhangyongbiao.com.
db.zhangyongbiao.com.	86400	IN	A	192.168.1.0
joe.zhangyongbiao.com.	86400	IN	A	1.1.1.1
jok.zhangyongbiao.com.	86400	IN	A	2.2.2.2
master.zhangyongbiao.com. 86400	IN	A	10.0.0.128
slave.zhangyongbiao.com. 86400	IN	A	10.0.0.130
www.zhangyongbiao.com.	86400	IN	A	10.0.0.100

#也可以从从节点服务器上传输专区数据
[10:49:30 root@ubuntu2204 ~]#dig -t AXFR zhangyongbiao.com @10.0.0.130

; <<>> DiG 9.18.1-1ubuntu1.2-Ubuntu <<>> -t AXFR zhangyongbiao.com @10.0.0.130
;; global options: +cmd
zhangyongbiao.com.	86400	IN	SOA	master.zhangyongbiao.com. hostmaster.zhangyongbiao.com. 1215 10800 600 86400 10800
zhangyongbiao.com.	86400	IN	NS	master.zhangyongbiao.com.
zhangyongbiao.com.	86400	IN	NS	slave.zhangyongbiao.com.
db.zhangyongbiao.com.	86400	IN	A	192.168.1.0
joe.zhangyongbiao.com.	86400	IN	A	1.1.1.1
jok.zhangyongbiao.com.	86400	IN	A	2.2.2.2
master.zhangyongbiao.com. 86400	IN	A	10.0.0.128
slave.zhangyongbiao.com. 86400	IN	A	10.0.0.130
www.zhangyongbiao.com.	86400	IN	A	10.0.0.100
zhangyongbiao.com.	86400	IN	SOA	master.zhangyongbiao.com. hostmaster.zhangyongbiao.com. 1215 10800 600 86400 10800

解决办法:在主和从DNS服务器的专区(zone)文件或配置文件的option中指定allow-transfer。 

#修改主DNS服务器配置文件
[root@Rocky8 /var/named]#vim /etc/named.conf

options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        secroots-file   "/var/named/data/named.secroots";
        recursing-file  "/var/named/data/named.recursing";
        allow-query     { any; };
        allow-transfer  { 10.0.0.130; };          #加入只允许从节点传输数据的权限

#修改从NDS服务器配置文件
[root@CentOS /var/named]#vim /etc/named.conf

options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        secroots-file   "/var/named/data/named.secroots";
        recursing-file  "/var/named/data/named.recursing";
        allow-query     { any; };
        allow-transfer  { none; };                  #添加不允许传输的权限

#已经不能直接从主从DNS服务器传输数据了
[10:51:11 root@ubuntu2204 ~]#dig -t AXFR zhangyongbiao.com @10.0.0.128

; <<>> DiG 9.18.1-1ubuntu1.2-Ubuntu <<>> -t AXFR zhangyongbiao.com @10.0.0.128
;; global options: +cmd
; Transfer failed.

[11:14:22 root@ubuntu2204 ~]#dig -t AXFR zhangyongbiao.com @10.0.0.130

; <<>> DiG 9.18.1-1ubuntu1.2-Ubuntu <<>> -t AXFR zhangyongbiao.com @10.0.0.130
;; global options: +cmd
; Transfer failed.

泛域名和子域应用

#在主NDS服务器上编辑zone的RR(资源记录)文件
[root@Rocky8 /var/named]#vim zhangyongbiao.com.zone

$TTL 1D
@             IN   SOA   domain1   hostmaster ( 1219 3H 10M 1D 3H )
                   NS    master
sz                 NS    ns1            #设置sz子域名的名称服务器
master        IN   A     10.0.0.128
ns1           IN   A     10.0.0.135     #指定名称服务器的IP 
www           IN   A     10.0.0.245
*             IN   A     8.8.8.8         #域名名称的通配符
@             IN   A     6.6.8.8         #直接搜索域名就可以


#创建sz子域文件
[root@Rocky8 /var/named]#touch sz.zhangyongbiao.com.zone         #建立RR(资源记录文件)
[root@Rocky8 /var/named]#chmod 640 sz.zhangyongbiao.com.zone     #改权限
[root@Rocky8 /var/named]#chgrp named sz.zhangyongbiao.com.zone   #改所属组

#编辑sz子域文件
[root@Rocky8 /var/named]#vim /var/sz.zhangyongbiao.com.zone

$TTL 1D
  
@             IN  SOA  stubdomain  hostmaster ( 1 3H 10M 1D 3H )
              IN  NS   master
master        IN  A    10.0.0.135
www           IN  A    6.6.6.8       #www.sz.zhangyongbiao.com对应的IP地址

#改sz子域的相关配置文件
[root@Rocky8 /var/named]#vim /etc/named.conf   
 
options {
        listen-on port 53 { any; };  #修改项
        allow-query     { any; };    #修改项

#修改sz子域的专区文件
[root@Rocky8 /var/named]#vim /etc/named.rfc1912.zones

zone "sz.zhangyongbiao.com" IN {
        type master;
        file "sz.zhangyongbiao.com.zone";
};

#启动sz子域DNS服务器
[root@Rocky8 /var/named]#systemctl enable --now named

#测试泛域名
[19:16:42 root@ubuntu2204 ~]#host 1233.zhangyongbiao.com

1233.zhangyongbiao.com has address 8.8.8.8

#测试泛域名
[19:50:03 root@ubuntu2204 ~]#host zhangyongbiao.com
zhangyongbiao.com has address 6.6.8.8

#测试sz子域
[19:51:51 root@ubuntu2204 ~]#host www.sz.zhangyongbiao.com
www.sz.zhangyongbiao.com has address 6.6.6.8

配置转发DNS服务器 :rocky作为转发服务器,centos作为主NDS名称服务器,ubuntu作为客户端

#先配置NDS转发服务器

#修改配置文件(改4项)
[root@Rocky8 /var/named]#vim /etc/named.conf
options {
                                            #first表示先转到主DNS,没结果在转到根服务器。      
            forward only;                   #only表示只转发到主DNS服务器。而不去根服务器
            forwarders      {10.0.0.130;};  #主DNS服务器IP地址

dnssec-enable no;                           #这项都改成NO
dnssec-validation no;                       #这项也改成NO

#重新加载文件
[root@Rocky8 /var/named]#rndc reload      #或者systemctl restart named




#配置主DNS名称服务器

#创建,修改权限和组
[root@CentOS /var/named]#touch zhangyongbiao.local.zone
[root@CentOS /var/named]#chmod 640 zhangyongbiao.local.zone
[root@CentOS /var/named]#chgrp named zhangyongbiao.local.zone

#编辑专区RR(资源记录)文件
[root@CentOS /var/named]#vim zhangyongbiao.local.zone

$TTL 1D
@           IN  SOA  domain hostmaster ( 17 3H 10M 1D 3H )
            IN  NS   master
master      IN  A    10.0.0.130
www         IN  A    8.8.6.6           #最后解析www.zhangyongbiao.local的ip为8.8.6.6


#编辑专区文件
[root@CentOS /var/named]#vim /etc/named.rfc1912.zones

zone "zhangyongbiao.local" IN {
       type master;
       file "zhangyongbiao.local.zone";
};


#重新加载文件
[root@Rocky8 /var/named]#rndc reload      #或者systemctl restart named



#ubuntu客户端进行测试,通过rocky转发服务器到主DNS名称服务器在解析www.zhangyongbiao.local的IP
[root@ubuntu2204 ~]#dig www.zhangyongbiao.local @10.0.0.128   #IP是rocky转发服务器的

;; ANSWER SECTION:
www.zhangyongbiao.local. 84936	IN	A	8.8.6.6

;; AUTHORITY SECTION:
zhangyongbiao.local.	84936	IN	NS	master.zhangyongbiao.local.

;; ADDITIONAL SECTION:
master.zhangyongbiao.local. 84936 IN	A	10.0.0.130

;; Query time: 0 msec
;; SERVER: 10.0.0.128#53(10.0.0.128) (UDP)
;; WHEN: Sat Dec 17 22:23:52 CST 2022
;; MSG SIZE  rcvd: 133

 基于acl实现智能DNS

Access Control Lists:访问控制列表

1.访问控制列表是可以被设置昵称的地址匹配列表,以便在以后应用  allow-notifyallow-queryallow-query-onallow-recursionblackholeallow-transfermatch-clients这些功能。

2.ACL可以给与那些访问名称服务器的用户更好的控制,避免大量的IP地址列表去搞乱配置文件。

 view Block Definition and Usage:查看块定义和用法

view语句是BIND9里面一个强大的功能。它可以让名称服务器去依据请求者的不同去回答NDS查询。它对于实现DNS拆分设置是非常好用的,而不用去运行很多的服务器

在视图语句中定义的区域只能被与视图匹配的客户端访问。通过在多个视图中定义相同名称的区域,可以将不同的区域数据赋予不同的客户端

如果配置文件中没有view语句,则会在in类中自动创建一个与任何客户端匹配的默认视图。

在配置文件顶层指定的任何zone语句都被认为是这个默认视图的一部分,options语句应用于默认视图。如果清晰地提供了view语句,则所有的zone语句都必须发生在view语句中。 

rocky是DNS服务器,centos是客户端  

#修改配置文件(增加acl和view语句)
[root@Rocky8 /var/named]#vim /etc/named.conf

acl beijingnet { 
      10.0.0.0/24;
};                          #只允许北京的10.0.0.0网段去访问DNS名称服务器,也可以在添加其他网段
acl shanghainet { 
      192.168.10.0/24;
};                          #只允许上海的192.168.10.0网段去访问DNS名称服务器,也可添加其他网段


options {
        listen-on port 53 { any; };    #也可以用"//"注销 
        allow-query     { any; };       #也可以用"//"注销

view beijingview {  
       match-clients { beijingnet; };                  #调用acl
       include "/etc/named.rfc1912.zones.bj";
};                                                     #增加beijingview语句

view shanghaiview { 
       match-clients { shanghainet; };                 #调用acl
       include "/etc/named.rfc1912.zones.sh";
};                                                     #增加shanghaiview语句
#先把原/etc/named.conf中单独的"."域专区剪切到/etc/named.frc1912.zones中来。(因为view语句不允许有单独的zone存在)。在"cp -p"为.bj和.sh文件。进行内容添加。
[root@Rocky8 /var/named]#vim /etc/named.rfc1912.zones.bj

zone "." IN {
        type hint;
        file "named.ca";
};                                         
                                           
zone "zhangyongbiao.com" IN {
       type master;
       file "zhangyongbiao.com.zone.bj";
};                                           #添加域名文件

#然后再修改上海区域文件
[root@Rocky8 /var/named]#vim /etc/named.rfc1912.zones.sh

zone "." IN {
        type hint;
        file "named.ca";
};

zone "zhangyongbiao.com" IN {
       type master;
       file "zhangyongbiao.com.zone.sh";     #添加域名文件
};
#编辑北京地区的zone文件
[root@Rocky8 /var/named]#vim  zhangyongbiao.com.zone.bj

$TTL 1D
@           IN   SOA  secdomain  hostmaster ( 1220 3H 10M 1D 3H )
            IN   NS    master
master      IN   A    10.0.0.10
www         IN   A    6.6.6.6     #北京区域10.0.0.0网段用户访问DNS,得到的地址是6.6.6.6


#编辑上海地区的zone文件
[root@Rocky8 /var/named]#vim  zhangyongbiao.com.zone.sh

$TTL 1D
@           IN   SOA  secdomain  hostmaster ( 1220 3H 10M 1D 3H )
            IN   NS    master
master      IN   A    10.0.0.10
www         IN   A    8.8.8.8      #上海区域192.168.10.0网段用户访问DNS,得到的地址是8.8.8.8

服务器端和客户端都要添加网卡“仅主机”模式,为了测试192.168.10.0网段的用户请求DNS  

通过10.0.0.0网段访问的www.zhangyongbiao.com的解析地址为6.6.6.6

通过192.168.10.0网段访问的www.zhangyongbiao.com的解析地址为8.8.8.8 

[root@CentOS ~]#dig www.zhangyongbiao.com @10.0.0.10

;; ANSWER SECTION:
www.zhangyongbiao.com.	86400	IN	A	6.6.6.6                #完成

;; AUTHORITY SECTION:
zhangyongbiao.com.	86400	IN	NS	master.zhangyongbiao.com.

;; ADDITIONAL SECTION:
master.zhangyongbiao.com. 86400	IN	A	10.0.0.10

;; Query time: 0 msec
;; SERVER: 10.0.0.10#53(10.0.0.10)
;; WHEN: Tue Dec 20 15:19:25 CST 2022
;; MSG SIZE  rcvd: 131


[root@CentOS ~]#dig www.zhangyongbiao.com @192.168.10.130

;; ANSWER SECTION:
www.zhangyongbiao.com.	86400	IN	A	8.8.8.8                #完成

;; AUTHORITY SECTION:
zhangyongbiao.com.	86400	IN	NS	master.zhangyongbiao.com.

;; ADDITIONAL SECTION:
master.zhangyongbiao.com. 86400	IN	A	10.0.0.10

;; Query time: 0 msec
;; SERVER: 192.168.10.130#53(192.168.10.130)
;; WHEN: Tue Dec 20 15:20:39 CST 2022
;; MSG SIZE  rcvd: 131

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值