Linux之企业常用服务——高速缓存DNS

一、什么是DNS?

域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53[1]。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

二、bind是什么?

现在使用最为广泛的DNS服务器软件是BIND(Berkeley Internet Name Domain),最早有伯克利大学的一名学生编写,现在最新的版本是9,有ISC(Internet Systems Consortium)编写和维护。

BIND支持先今绝大多数的操作系统(Linux,UNIX,Mac,Windows)

BIND服务的名称称之为named

DNS默认使用UDP、TCP协议,使用端口为53(domain),953(mdc,远程控制使用)

三、DNS服务器的类型

1、主域名服务器(primary name server)

它是特定域所有信息的权威性信息源。它从域管理员构造的本地磁盘文件中加载域信息,该文件(区文件)包含着该服务器具有管理权的一部分域结构的最精确信息。主服务器是一种权威性服务器,因为它以绝对的权威去回答对其管辖域的任何查询。

2、从域名服务器(secondary name server)

它可从主服务器中复制一整套域信息。区文件是从主服务器中复制出来的,并作为本地磁盘文件存储在辅助服务器中。这种复制称为"区文件复制"。在辅助域名服务器中有一个所有域信息的完整拷贝,可以有权威地回答对该域的查询。因此,辅助域名服务器也称作权威性服务器。配置辅助域名服务器不需要生成本地区文件,因为可以从主服务器中下载该区文件。

3、缓存名称服务器(caching-only server)

可运行域名服务器软件,但是没有域名数据库软件。它从某个远程服务器取得每次域名服务器查询的结果,一旦取得一个,就将它放在高速缓存中,以后查询相同的信息时就用它予以回答。高速缓存服务器不是权威性服务器,因为它提供的所有信息都是间接信息。对于高速缓存服务器只需要配置一个高速缓存文件,但最常见的配置还包括一个回送文件,这或许是最常见的域名服务器配置。

4、转发域名服务器

负责所有非本地域名的本地查询。转发域名服务器接到查询请求时,在其缓存中查找,如找不到把请求依次转发到指定的域名服务器,直到查询到结果为止,否则返回无法映射的结果。

四、bind的安装及基本使用

1、下载高速缓存DNS服务软件bind

关于yum源的配置我们已经在前面的章节讲过了,再次不做赘述。

yum install bind -y

在这里插入图片描述

2、开启服务

systemctl start named

在这里插入图片描述

3、关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service

在这里插入图片描述

4、更改named配置

vim /etc/namd.conf
10 options {
 11         listen-on port 53 { any; };		##在哪个ip开启53接口,any为任意一台主机
 12         listen-on-v6 port 53 { ::1; };
 13         directory       "/var/named";
 14         dump-file       "/var/named/data/cache_dump.db";
 15         statistics-file "/var/named/data/named_stats.txt";
 16         memstatistics-file "/var/named/data/named_mem_stats.txt";
 17         allow-query     { any; };		##允许谁来查看,any为任意一台主机
 18         forwarders { 114.114.114.114; };	##主机询问114.114.114.114主机
 19 

33         dnssec-validation no;		##网警不检测

在这里插入图片描述
在这里插入图片描述

5、重启服务

systemctl restart named

在这里插入图片描述

测试

首先保证服务机有网,判定方式可以ping 114.114.114.114
在这里插入图片描述
具体设定可以参考我之前的文章:Linux之网络配置

服务机:

dig www.baidu.com		##查询包括NS记录,A记录,MX记录等相关信息

在这里插入图片描述
客户机:

vim /etc/resolv.conf
nameserver 172.25.254.133

在这里插入图片描述

dig www.baidu.com

在这里插入图片描述

五、bind服务的相关配置

1、权威DNS的正向解析

在DNS域名解析服务中,正向解析是指根据域名(主机名)查找到对应的IP地址。

1、修改主配置文件

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";
        allow-query     { any; };

dnssec-validation no;

在这里插入图片描述

2、修改区域配置文件

vim /etc/named.rfc1912.zones 
zone "testdns.com" IN {
        type master;					##作为主DNS
        file "testdns.com.zone";		##域名与IP地址解析规则保存的文件位置
        allow-update { none; };
};

在这里插入图片描述

3、创建域名与IP地址解析规则的文件

这里我们可以利用系统提供的模板来进行更改。

cd /var/named
cp -p named.localhost testdns.com.zone		##复制模板文件

把域名和IP地址的对应数据填写数据配置文件中并保存

vim /var/named/testdns.com.zone

$TTL 1D								谁负责维护
@       IN SOA  dns.testdns.com. zhao.testdns.com. (
                  客户看到的              0      ; serial		##更新序列号
                                        1D      ; refresh	##更新时间
                                        1H      ; 	retry	##重试延时
                                        1W      ; expire	##失效时间
                                        3H )    ; minimum	##无效解析记录的缓存时间
        NS      dns.testdns.com.
dns     A       172.25.254.133
mail    A       172.25.254.135
news    A       172.25.254.175

在这里插入图片描述
在这里插入图片描述

4、重启服务

systemctl restart named

5、测试:

step1: 在测试主机中更改:

vim /etc/resolv.conf

# Generated by NetworkManager
domain example.com
search example.com
#nameserver 172.25.254.254
nameserver 172.25.254.133

在这里插入图片描述
step2: 查询写入文件的域名与IP对应关系

dig dns.testdns.com

在这里插入图片描述
如果查询无误则设置生效。

小知识: CNAME记录与MX记录

CNAME记录,即别名记录。我们通过设置别名记录,可以将多个名称指向同一台服务器。MX记录即Mail Exchanger,主要用于邮件服务器,作用是用于定位邮件服务器的地址。

vim /var/named/testdns.com.zone
$TTL 1D
@       IN SOA  dns.testdns.com. zhao.testdns.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
                NS      dns.testdns.com.
dns             A       172.25.254.133
www             CNAME   bbs.a.testdns.com.
bbs.a           A       172.25.254.155
bbs.a           A       172.25.254.176
testdns.com.    MX 1    mail.testdns.com.
mail            A       172.25.254.233

在这里插入图片描述

systemctl restart named

测试:

dig www.testdns.com

在这里插入图片描述
分析:可以看到www.testdns.com对应了两个IP

mail root@mail.testdns.com	##给这个网址发邮件
mailq	##查看邮件发送状态

在这里插入图片描述
分析:邮件被发给了172.25.254.233的主机。

2、反向解析

在DNS域名解析服务中,反向解析的作用是将用户提交的IP地址解析为对应的域名信息,它一般用于对某个IP地址上绑定的所有域名进行整体屏蔽,屏蔽由某些域名发送的垃圾邮件。也可以判断某虚拟主机上运行了多少个网站。

1、修改主配置文件

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";
        allow-query     { any; };

dnssec-validation no;

在这里插入图片描述

2、修改区域配置文件

vim /etc/named.rfc1912.zones

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

在这里插入图片描述

3、创建IP地址与域名解析规则的文件

cd /var/name
cp -p named.loopback 172.25.254.ptr
vim 172.25.254.ptr

$TTL 1D
@       IN SOA  dns.testdns.com. root.testdns.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns.testdns.com.
dns     A       172.25.254.133
155     PTR     bbs.a.testdns.com.
158     PTR     bbs.a.testdns.com.
233     PTR     mail.testdns.com.
154     PTR     news.testdns.com.

在这里插入图片描述

4、重启服务

systemctl restart named

5、测试

在测试主机中

vim /etc/resolv.conf
nameserver 172.25.254.133

dig -x 172.25.254.154

在这里插入图片描述

3、双向解析

1、更改主配置文件

/*						##屏蔽根域名			
zone "." IN {
        type hint;
        file "named.ca";
};
*/

view localhost {					##公司内部解析
        match-clients { localhost; };
        zone "." IN {
        type hint;
        file "named.ca";
};
include "/etc/named.rfc1912.zones";
};

view internet {						##外部人员解析
        match-clients { any; };
        zone "." IN {
        type hint;
        file "named.ca";
};
include "/etc/named.rfc1912.zones.inter";
};

在这里插入图片描述

2、添加区域配置文件

cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.inter -p
vim /etc/named.rfc1912.zones.inter

zone "testdns.com" IN {
        type master;
        file "testdns.com.inter";
        allow-update { none; };
};

在这里插入图片描述

3、添加域名与IP地址解析规则的文件

cp testdns.com.zone testdns.com.inter -p
vim testdns.com.inter
$TTL 1D
@       IN SOA  dns.testdns.com. zhao.testdns.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
                NS      dns.testdns.com.
dns             A       192.25.254.133
www             CNAME   bbs.a.testdns.com.
bbs.a           A       192.25.254.155
bbs.a           A       192.25.254.176
testdns.com.    MX 1    mail.testdns.com.
mail            A       192.25.254.233

在这里插入图片描述

4、重启服务

systemctl restart named

5、测试

主机:
step1:

vim /etc/resolv.conf

# Generated by NetworkManager
search server.com
nameserver 172.25.254.133

在这里插入图片描述
step2:

dig mail.testdns.com

在这里插入图片描述
客户机:
step1:

vim /etc/resolv.conf

# Generated by NetworkManager
domain example.com
search example.com
#nameserver 172.25.254.254
nameserver 172.25.254.133

在这里插入图片描述
step2:

dig mail.testdns.com

在这里插入图片描述

分析:主机和客户机查询同一个域名查询到的IP不同。

4、辅助DNS

在DNS域名解析服务中,从服务器可以从主服务器中获取指定的区域数据文件,从而起到备份解析记录与负载均衡的作用,因此通过部署从服务器可以减轻主服务器的负载压力,还可以提升用户的查询效率。

1、主DNS

step1: 更改区域配置文件

vim /etc/named.rfc1912.zones

zone "testdns.com" IN {
        type master;
        file "testdns.com.zone";
        allow-update { none; };
        also-notify { 172.25.254.233; };
};

在这里插入图片描述
step2: 重启服务

systemctl restart named

2、辅助DNS

下载bind软件及开启named服务,关闭防火墙。

yum install bind -y
systemctl start named
systemctl stop firewalld.service

step1: 更改主配置文件

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";
        allow-query     { any; };

        /* 
         - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
         - If you are building a RECURSIVE (caching) DNS server, you need to enable 
           recursion. 
         - If your recursive DNS server has a public IP address, you MUST enable access 
           control to limit queries to your legitimate users. Failing to do so will
           cause your server to become part of large scale DNS amplification 
           attacks. Implementing BCP38 within your network would greatly
           reduce such attack surface 
        */
        recursion yes;

        dnssec-enable yes;
        dnssec-validation no;
        dnssec-lookaside auto;

在这里插入图片描述
step2: 更改区域配置文件

vim /etc/named.rfc1912.zones
zone "testdns.com" IN {
        type slave;
        masters { 172.25.254.133; };
        file "slaves/testdns.com.zone";
        allow-update { none; };
};

在这里插入图片描述
step3:

vim /etc/resolv.conf

nameserver 172.25.254.233

在这里插入图片描述
step4: 重启服务

systemctl restart named

3、测试

主DNS上:

step1: 更改解析文件IP和serial参数

vim /var/named/testdns.com.zone

$TTL 1D
@       IN SOA  dns.testdns.com. zhao.testdns.com. (
                                201902171       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
                NS      dns.testdns.com.
dns             A       172.25.254.133
www             CNAME   bbs.a.testdns.com.
bbs.a           A       172.25.254.20
bbs.a           A       172.25.254.22
testdns.com.    MX 1    mail.testdns.com.
mail            A       172.25.254.233

step2: 重启服务

systemctl restart named

step3:

dig www.testdns.com

在这里插入图片描述
辅助DNS上:

dig www.testdns.com

在这里插入图片描述
分析:主DNS每次更改后,辅助DNS会同步更新。

5、DNS的远程更新

1、基于IP的

在主DNS上:

step1: 更改主配置文件

vim /etc/named.rfc1912.zones 
zone "testdns.com" IN {
        type master;
        file "testdns.com.zone";
        allow-update { 172.25.254.233; };
        also-notify { 172.25.254.233; };
};

在这里插入图片描述
step2: 更改/var/named/目录权限

chmod 770 /var/named

step3: 重启服务

systemctl restart named

在这里插入图片描述
测试:
在233这台主机上

[root@localhost ~]# nsupdate 
> server 172.25.254.133
> update add hello.testdns.com 86400 A 172.25.254.88
> send
> quit

最后在主DNS上或者辅助DNS上:

dig hello.testdns.com

在这里插入图片描述
分析:远程更新后主DNS会生成一个新文件,这个新文件和原有的记录域名和IP地址的对应关系的文件的总和,才是该DNS记录的所有关系。在主DNS更新后,生成的文件信息会写入原文件。
在这里插入图片描述

2、基于key的

主DNS:
step1: 生成加密文件

dnssec-keygen -a HMAC-MD5 -b 128 -n HOST testdns

在这里插入图片描述
step2: 创建加密信息文件

[root@dns named]# cp -p /etc/rndc.key /etc/testdns.key
[root@dns named]# vim /etc/testdns.key 
[root@dns named]# cat /etc/testdns.key
key "testdns" {
	algorithm hmac-md5;
	secret "ZQ3pLJGLY2ODzjwtI4IO0w==";
};

在这里插入图片描述
step3: 更改主配置文件

vim /etc/named.conf

添加:
include "/etc/testdns.key";

在这里插入图片描述
step4: 更改区域配置文件

vim /etc/named.rfc1912.zones
zone "testdns.com" IN {
        type master;
        file "testdns.com.zone";
        allow-update { key testdns; };
        also-notify { 172.25.254.233; };
};

在这里插入图片描述
step5: 更改/var/named/权限

chmod 770 /etc/named.

step6: 重启服务

systemctl restart named

step7: 测试

首先没有钥匙更新:

[root@localhost ~]# nsupdate 
> server 172.25.254.133
> update add stay.testdns.com 86400 A 172.25.254.128
> send
update failed: REFUSED
> quit

在这里插入图片描述
有钥匙更新:
钥匙可以通过服务器:

scp Ktestdns.+157+15127.* root@172.25.254.233
[root@localhost mnt]# nsupdate -k Ktestdns.+157+15127.key 
> server 172.25.254.133
> update add stay.testdns.com 86400 A 172.25.254.128
> send
> quit

在这里插入图片描述

dig stay.testdns.com

在这里插入图片描述

6、花生壳——动态解析DDNS

DDNS是将用户的动态IP地址映射到一个固定的域名解析服务上,用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态IP地址传送给位于服务商主机上的服务器程序,服务器程序负责提供DNS服务并实现动态域名解析

1、首先需要在服务端搭建DHCP服务和DNS服务。

DHCP服务的搭建可以参考我之前的文章:
Linux之DHCP服务的搭建。
step1: 更改dhcpd服务配置文件

vim /etc/dhcp/dhcpd.conf

添加:
ddns-update-style interim;		##允许dhcpd服务更改dns信息

key testdns {
        algorithm hmac-md5;					##md5加密
        secret 2sOC4kwBha8yBMx1XIgJVg==;	##dns远程更新的密码
}

zone testdns.com. {
        primary 127.0.0.1;
        key testdns;
}

在这里插入图片描述

注意:客户机的主机名应该属于服务器上dhcpd服务的域名。
step2: 重启服务

systemctl restart dhcpd

测试:
设定一台主机网咯工作方式为dhcp
设定这台主机名为####.testdns.com,这个名称在原有的dns服务器是没有解析的。

重启网络查看ip和主机名称的解析
dig ####.testdns.com
在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值