关于dns的名词解释
dns:domain name service(域名解析服务)

关于客户端:

/etc/resolv.conf ,dns指向文件

centos 禁止远端dns递归查询_linux


host www.baidu.com ,地址解析命令

centos 禁止远端dns递归查询_centos 禁止远端dns递归查询_02


dig www.baidu.com,地址详细解析信息命令

centos 禁止远端dns递归查询_linux_03


A记录 ,ip地址叫做域名的Address 记录

centos 禁止远端dns递归查询_IP_04


SOA ,授权起始主机

dns顶级的种类是:“ . ”,点的个数最多是13个

次级:.com、 .net、 .edu、 .org …


DNS服务端安装

安装包的名称是bind

centos 禁止远端dns递归查询_重启_05


centos 禁止远端dns递归查询_IP_06


服务名称是:named.service

centos 禁止远端dns递归查询_IP_07


DNS服务主配置文件:/etc/named.conf

数据目录:/var/named

端口 :53

centos 禁止远端dns递归查询_重启_08


关于报错信息:

1.no servers could be reached ,服务无法访问,出现这个问题需要关注的是(服务是否开启?火墙是否添加服务?网络通畅?端口是否添加?)

2.服务启动失败,配置文件写错 journalctl -xe查询错误

3.dig 查询状态

状态

说明

NOERROR

查询成功

REFUSED

服务拒绝访问

SERVFAIL

查询记录失败,(dns服务器无法到达上级,拒绝缓存)

NXDOMAIN

此域名A记录在dns中不存在


DNS服务的启用设定

systemctl enable --now named,启动服务并设置开机自启

firewall-cmd --permanent --add-service=dns,在火墙里添加dns服务

centos 禁止远端dns递归查询_IP_09


firewall-cmd --permanent --add-port=53/tcp,在火墙里添加53端口

centos 禁止远端dns递归查询_linux_10


编辑服务的配置文件:vim /etc/named.conf

listen-on port 53 { any; }; 在本地所有网络接口上开启53端口

allow-query { any; }; 允许查询A记录的客户端列表

dnssec-validation no; 禁用dns检测,使dns能够缓存外部信息到本机

centos 禁止远端dns递归查询_重启_11


centos 禁止远端dns递归查询_重启_12


设置完后重启服务:systemctl restart named完成上述操作后可以使用另一台主机来测试,更改测试主机的/etc/resolv.conf 文件里的 nameserver 后面的IP改为开启DNS服务主机的IP

centos 禁止远端dns递归查询_linux_13


然后 dig www.baidu.com 来测试,就可以正常显示了

centos 禁止远端dns递归查询_centos 禁止远端dns递归查询_14


高速缓存dns

我们使用自己架设的dns服务器去查看网站时

centos 禁止远端dns递归查询_重启_15


可以看到用了3272毫秒才看到,为了降低这种问题的出现,我们在开启dns服务的主机里添加配置

编辑:vim /etc/named.conf

写入配置:forwarders { 114.114.114.114; };,表示在服务主机里如果没有这个信息时直接去114查询答案

centos 禁止远端dns递归查询_vim_16


然后重启服务,去测试主机里访问网站,可以看到速度就变的很快

centos 禁止远端dns递归查询_linux_17


dns的正向解析

正向解析就是我们可以自己去设置一个域名的解析方式,在别人来访问我们的域名时可以去做A记录的解析,如我们去dig www.baidu.com 一样

正常我们写解析时应该直接在主配置文件里去写,但是为了规范管理,系统将zone文件单独放到了 /etc/named.rfc1912.zones 里

centos 禁止远端dns递归查询_IP_18


所以编辑 /etc/named.rfc1912.zones去写我们的正向解析,在这个文件里也是有系统给我们的模板的,我们复制模板直接去改就行

centos 禁止远端dns递归查询_vim_19


写入的内容如下:

zone "test.com" IN {    #维护的域名,一般就是公司的域名
        type master;	#当前的服务器主dns
        file "test.com.zone";	#域名A记录文件
        allow-update { none; };		#允许更新主机列表
 };

在目录cd /var/named/ 里有 “named.localhost” 这个文件,就是我们zone文件的模板,因为涉及权限和拥有组等不同的设定,直接去复制这个文件及它本身的属性并且命名为test.com.zone: cp -p named.localhost test.com.zone

centos 禁止远端dns递归查询_重启_20


然后编辑文件在里面写入我们需要的配置

$TTL 1D		#Time To Live域名解析记录在DNS服务器中的存留时间
@       IN SOA  dns.test.com. root.westos.com (
                                        0       ; serial	#这个值在每次修改此配置文件后都需要修改,并且数字只能增加,最大支持10位数,可以直接设置为2020031401这样的格式
                                       1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
                NS      dns.test.com.
dns             A       192.168.43.10	
www             CNAME   test.a.test.com.	#规范域名
test.a          A       192.168.43.110		#正向解析记录
test.a          A       192.168.43.111		
test.com.       MX 1    192.168.0.10.		#邮件解析记录

写完后重启服务 systemctl restart named
我们还需要安装邮件服务去查看邮件解析记录

dnf install postfix -y
systemctl enable --now postfix
dnf install mailx -y
netstat -antlupe | grep 25

查询正向解析:dig www.test.com

centos 禁止远端dns递归查询_linux_21


邮件解析记录查询:dig -t mx westos.com

先用其他主机去给test.com台主机发一个邮件,就可以看到

centos 禁止远端dns递归查询_linux_22


我们设定的A记录也可以直接去访问,就像baidu里的 news.baidu.com、wenku.baidu.com 一样

centos 禁止远端dns递归查询_重启_23


dns的反向解析

正向解析是在访问域名时会解析到我们的主机IP

反向解析是通过访问IP去解析我们的域名:dig -x 192.168.43.111,没有做反向解析之前查询的PTR值是空的

centos 禁止远端dns递归查询_vim_24


首先编辑文件vim /etc/named.rfc1912.zones 写入配置

zone "43.168.192.in-addr.arpa" IN {
type master;
file "192.168.43.ptr";
allow-update { none; };
};

切换路径 cd /var/named/ ,复制named.loopback文件
cp -p named.loopback 192.168.43.ptr
编辑:vim 192.168.0.ptr

$TTL 1D
@       IN SOA  dns.test.com. root.test.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns.test.com.
dns     A       192.168.43.20
110     PTR     test.a.test.com.  #反向解析记录
111     PTR     test.a.test.com.

重启服务,使用另一台主机测试 :dig -x 192.168.43.110

centos 禁止远端dns递归查询_重启_25


可以看到反向解析的A记录就出现了


dns的双向解析

在日常使用中如办公环境下,我们对于dns的设定可能会出现两种不同的需求,对外和对内的区别,我们谁当一个网段可以让其他外界客户来访问我们的服务,对于内部设定另一个网段来使用,那就需要保证两个网段查看到的内容都是各自的不会发生冲突

这种设定,我们测试时需要布置3台主机,

实验环境:

客户端2台:

一台IP是192.168.43.20

centos 禁止远端dns递归查询_centos 禁止远端dns递归查询_26


一台IP是172.25.254.30

centos 禁止远端dns递归查询_重启_27

服务端1台2个网段的ip:

192.168.43.10

172.25.254.10

centos 禁止远端dns递归查询_centos 禁止远端dns递归查询_28


在192.168.43网段的客户主机中:vim /etc/resolv.conf

写入 nameserver 192.168.43.10

在172.25.254网段的客户主机中:vim /etc/resolv.conf
写入 nameserver 172.25.254.10

配置方式:
cd /var/named/
cp -p test.com.zone test.com.inter
编辑文件: vim test.com.inter 配置方式和正向解析一样,配置为172.25.254网段的

$TTL 1D
@       IN SOA  dns.test.com. root.westos.com (
                                        2020031401      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
                NS      dns.test.com.
dns             A       172.25.254.10
www             CNAME   test.a.test.com.
test.a          A       172.25.254.110
test.a          A       172.25.254.111
test.com.       MX 1    172.25.254.20.

然后在去复制:cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.inters

编辑 /etc/named.rfc1912.inters ,更改配置

centos 禁止远端dns递归查询_vim_29


编辑:vim /etc/named.conf ,注释掉之前的配置,再写信的配置

#zone "." IN {
#       type hint;
#       file "named.ca";
#};
#
#include "/etc/named.rfc1912.zones";
#include "/etc/named.root.key";

view localnet {
        match-clients { 172.25.254.0/24; };
        zone "." IN {
                type hint;
                file "named.ca";
        };
        include "/etc/named.rfc1912.inters";
        include "/etc/named.root.key";
};

view internet {
        match-clients { any; };
        zone "." IN {
                type hint;
                file "named.ca";
        };
        include "/etc/named.rfc1912.zones";
        include "/etc/named.root.key";
};

配置完后重启服务 systemctl restart named

测试:

在172.25.254网段的主机里dig www.test.com

centos 禁止远端dns递归查询_vim_30

在192.168.43网段主机里dig www.test.com

centos 禁止远端dns递归查询_重启_31


这样设定后,172.25.254网段就是我们的内网,只对内部开放,而192.168.43网段是对外部所有人开放的。

这样不同需求的主机用户对于域名的访问就会有不同的内容。


dns集群

集群的意思就是多台dns服务器,在一台主机上更改设置就很亏制动同步到所有主机上。例如114.114.114.114这个dns服务器,它的每时每刻的访问量都是非常大的,一台主机去提供服务是远远不够的,那就需要辅助的dns服务器来帮助主dns服务器去分担流量。
搭建环境:
两台主机,一台主dns:192.168.43.10
一台搭建辅助dns:192.168.0.20

做这个测试前还原之前上个实验在 /etc/named.conf 里的设定,重启服务

主dns的配置:
vim /etc/named.rfc1912.zones

zone "test.com" IN {
        type master;
        file "test.com.zone";
        allow-update { none; };
        also-notify { 192.168.43.20; };		#主动通知的辅助dns主机
 };

vim /var/named/test.com.zone

$TTL 1D
@       IN SOA  dns.test.com. root.westos.com (
                                        2020031401      ; serial		每次更改A记录都需要更改此值,只增不减
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
                NS      dns.test.com.
dns             A       192.168.43.10
www             CNAME   test.a.test.com.
test.a          A       192.168.43.110
test.a          A       192.168.43.111
test.com.       MX 1    192.168.43.20.

完成后重启服务

辅助dns主机:

首先安装程序:dnf install bind -y

在火墙里添加服务:firewall-cmd --permanent --add-service=dns

firewall-cmd --reload

centos 禁止远端dns递归查询_IP_32


编辑主配置文件: /etc/named.conf

centos 禁止远端dns递归查询_linux_33

编辑文件: /etc/named.rfc1912.zone

zone "test.com" IN {
        type slave;
        masters { 192.168.43.10; };
        file "slaves/test.com.zone";
};

完成后重启服务

使用另一台192.168.43网段的主机测试,设置dns为192.168.43.20,然后dig www.test.com

centos 禁止远端dns递归查询_centos 禁止远端dns递归查询_34


并且在主dns配置的做A记录的更新,会自动同步到其他的辅助dns主机上

centos 禁止远端dns递归查询_centos 禁止远端dns递归查询_35


centos 禁止远端dns递归查询_linux_36


dns的更新

dns基于ip地址的更新:
在dns中设定:
vim /etc/named.rfc1912.zones

zone "westos.com" IN {
	type master;
	file "westos.com.zone";
	allow-update { 192.168.43.20; }; ##允许指定客户端更新test域
 	also-notify { 192.168.43.20; };
};

重启服务

测试在192.168.43.20主机里,命令:nsupdate

centos 禁止远端dns递归查询_linux_37


更新新的A记录后,再去访问更新的域名

centos 禁止远端dns递归查询_IP_38


如果要删除更新的A记录的话,输入指令

centos 禁止远端dns递归查询_IP_39


centos 禁止远端dns递归查询_vim_40

dns基于key更新的方式:

首先需要去使用命令生成加密的key

dnssec-keygen -a HMAC-SHA256 -b 128 -n HOST test

-a 指定加密方式,-b 加密长度,-n 生成加密名称

centos 禁止远端dns递归查询_vim_41


并且这种加密方式属于对称加密,我们可以查看到加密内容

centos 禁止远端dns递归查询_linux_42


cp -p /etc/rndc.key /etc/test.key

vim /etc/test.key

key "test" {
        algorithm hmac-sha256;
       secret "nYLcyl0CSUfrUaan9yqdLQ==";	#加密字符串
};

vim /etc/named.conf 更改配置文件的对应文件的名称为我们刚建立的文件名

centos 禁止远端dns递归查询_centos 禁止远端dns递归查询_43


vim /etc/named.rfc1912.zones ,写入key更新的对应配置

centos 禁止远端dns递归查询_linux_44


重启服务,然后测试更新

centos 禁止远端dns递归查询_vim_45


centos 禁止远端dns递归查询_linux_46


如果想让其他主机来更新dns的A记录,把我们的公匙Ktest.+163+19596.private 传给他们就可以


ddns(dhcp+dns)

在我们的工作域里的主机,如果它是通过dns主机发布的dhcp服务获取的ip,那我们在地址解析时没法去将它的地址解析写入A记录中,因为它的ip是会发生变化的,所以在这种情况下,我们还需要地址解析的话,就需要在dns服务主机里的dhcp服务里去配置信息,这种方式就是ddns。
在使用虚拟机做测试时,如果时通过路由器连接的网络,我们需要关闭路由器的dhcp功能,然后自己来搭建dhcp服务器

首先安装在dns主机里安装dhcp服务,并配置dhcp

dnf instsall dhcp-server -y

配置完成后启动dhcpd服务,在测试主机里设置,主机名为test.com域的主机名,网卡为dhcp模式,并获得一个IP

centos 禁止远端dns递归查询_IP_47


设置完后,测试访问:dig www.test.com ,可以访问到,但是访问自己的域名是无解的

如果是静态IP,直接写入A记录就可以,但是dhcp的动态IP不可能我们每次都去重新写入,所以我们还需要在dhcp的配置文件后面写入配置: vim /etc/dhcp/dhcpd.conf

key test {								#设定key加密
	algorithm hmac-sha256;
	secret nYLcyl0CSUfrUaan9yqdLQ==;	
 };
zone test.com. {						
	primary 127.0.0.1;
	key test;
}

重启dhcpd和named服务
然后去访问测试主机的域名就可以得到正向解析