Linux 网络服务05-DNS 域名解析服务(一)

一、DNS 系统的作用

1.DNS 服务器概述

整个Internet大家庭中连接了数以亿计的服务器、个人主机,其中大部的网站、邮件服务等服务器都使用了域名形式的地址,如 www.google.com、mail.163.com等。很显然这种地 址形式要比使用 64.233.189.147、202.108.33.74 的IP地址形式更加直观,更加容易被用户记住。

FQDN 格式(完整域名格式):在常见域名后添加“.”(根域)。例如:www.baidu.com. DNS 系统在网络中的作用就是维护着一个地址数据库,其中记录了各种主机域名;与 IP 地址的对应关系,以便为客户程序提供正向或反向的地址查询服务,即正向解析与反向解析。

(1)正向解析:

根据域名查找 IP 地址,是 DNS 服务最常用的基本功能

(2)反向解析:

根据 IP 查域名,不是很常用,应用于例如反垃圾邮件的验证等

每台 DNS 服务器都负责管理一个有限范围(一个或几个域)内的主机域名和 IP 地址的对应关系,这些特定的 DNS 域 IP 地址段成为 “zone”(区域)。

2.DNS 服务器的常见分类

根据地址解析的方向不同,DNS 区域相应的分为正向区域(包含域名到 IP 地址的解析记录)和反向区域(包含 IP 地址到域名的解析记录)

根据管理的区域地址数据的来源不同,DNS 系统可以分为不同的类型:

(1)缓存域名服务器

只提供域名解析结果的缓存功能,目的在于提高数据查询和效率,但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置根域或指定其他 DNS 服务器作为解析来源。

(2)主域名服务器

维护某一个特定 DNS 区域的地址数据库,对其中的解析记录具有自主控制权,是指定区域中唯一存在的权威服务器、官方服务器。构建主域名服务器时,需要自行建立所以负责区域的地址数据文件。

(3)从域名服务器

与主域名服务器提供完全相同的 DNS 解析服务,通常用于 DNS 服务器的热备份。对客户机来说,无论使用主域名服务器还是从域名服务器,查询结果都是一样的。

以上所述主、从域名服务器的角色,只是针对某一特定的 DNS 区域来说的。例如,同一台 DNS 服务器,可以是“.chinaunix.net”区域的主域名服务器,同时也可以是“.cublog.cn” 区域的从域名服务器。

3.DNS 服务器的查询模式

(1)DNS 服务器递归查询:

当客户机向 DNS 服务器发出解析请求,DNS 服务器从服务器本地的唯高速缓存中查询出结果,反馈给客户机,此过程称为递归查询,即 Client-Server。

(2)DNS 服务器迭代查询:

当客户机向 DNS 服务器发出解析请求,DNS 服务器从服务器本地的唯告诉缓存中查询发现没有结果,此时该 DNS 服务器以 DNS 客户的身份向其他 DNS 服务器发送解析请求或向根域名服务器发送请求,此过程称为迭代查询,即 Server-Server。

4.端口

TCP 53 端口

UDP 53 端口

二、BIND 的安装和控制

1.RPM 包的主要作用

bind:提供了域名服务器的主要程序及相关文件

bind-utils:提供了对 DNS 服务器的测试工具程序,如 nslookup 等

bind-libs:提供了 bind、bind-utils 需要使用的库函数

bind-chroot:为 BIND 服务提供了一个伪装的根目录(将/var/named/chroot 文件夹作为 BIND 的根目录)以提高安全性。也成为jail(监牢)机制。

BIND 安装以后,会自动增加一个名为 named 的系统服务

[root@huyouba1 ~]# yum -y install bind bind-utils bind-chroot bind-libs

2.主配置文件 /etc/named.conf

[root@huyouba1 ~]# cd /etc/

[root@huyouba1 etc]# cp named.conf named.conf.$(date +%Y%m%d%H%M)

[root@huyouba1 etc]# vim named.conf

保存退出,检查语法

[root@huyouba1 etc]# named-checkconf /etc/named.conf

[root@huyouba1 etc]# systemctl enable named.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.

[root@huyouba1 etc]# systemctl start named.service 

[root@huyouba1 etc]# netstat -utpln |grep 53

tcp        0      0 192.168.100.100:53      0.0.0.0:*               LISTEN      8348/named          
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      8348/named          
tcp6       0      0 ::1:53                  :::*                    LISTEN      8348/named          
tcp6       0      0 ::1:953                 :::*                    LISTEN      8348/named          
udp        0      0 192.168.100.100:53      0.0.0.0:*                           8348/named          
udp6       0      0 ::1:53                  :::*                                8348/named 

3.区域数据文件

(1)区域数据文件的作用:

用于存放某个 DNS 区域的地址解析记录(正向或反向记录)

[root@huyouba1 etc]# ls /var/named/
chroot  data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves

[root@huyouba1 etc]# ls /var/named/chroot/    # /var/named/chroot为伪根目录
dev  etc  run  usr  var

[root@huyouba1 etc]# vim /var/named/named.localhost 

$TTL 1D
@       IN SOA  @ rname.invalid. (
                                0       ; serial
                                1D      ; refresh
                                1H      ; retry
                                1W      ; expire
                                3H )    ; minimum

(2)区域数据文件修改后检查更新:

named-checkzone 域名 区域数据文件的路径

[root@huyouba1 etc]# named-checkzone  www /var/named/named.localhost 

zone www/IN: loaded serial 0
OK

(3)区域数据配置文件的特殊应用

1>基于域名解析的负载均衡,同一个域名对应到多个 IP 地址

www    A    172.16.16.172

www    A    172.16.16.173

www    A    172.16.16.174

2>泛域名解析

找不到精确对应的 A 记录时,使用 “*” 进行匹配

*    A    172.16.16.172

三、构建缓存域名服务器

缓存域名服务器通常假设在公司的局域网内,主要目的是提高域名解析的速度,减少对互联网访问的出口流量。

在一个小型企业的内部网络中,可单独建立一台(或级成在网关主机中)缓存域名服务器,为各部门员工计算机提供 DNS 解析服务。

构建示例:

缓存服务器 IP 地址为 192.168.100.100,并能够正常访问互联网,缓存域名服务器代为处理客户端的 DNS 解析请求,并缓存查询结果局域网内的各 PC 将首选 DNS 服务器设为 192.168.60.34,访问外网页面进行测试。

方法一:指向北京网通 DNS 服务器

[root@huyouba1 ~]# vim /etc/named.conf

[root@huyouba1 ~]# named-checkconf  /etc/named.conf

[root@huyouba1 ~]# systemctl restart named

将客户机 DNS 服务器设置为 192.168.100.100

[root@localhost ~]# vim /etc/resolv.conf 

# Generated by NetworkManager
search com
nameserver 192.168.100.100

客户机测试

[root@localhost ~]# nslookup www.baidu.com

Server:     192.168.100.100
Address:    192.168.100.100#53

Non-authoritative answer:
www.baidu.com   canonical name = www.a.shifen.com.
Name:   www.a.shifen.com
Address: 61.135.169.121
Name:   www.a.shifen.com
Address: 61.135.169.125

方法二:根域解析

[root@huyouba1 ~]# vim /etc/named.conf

[root@huyouba1 ~]# named-checkconf  /etc/named.conf

[root@huyouba1 ~]# systemctl restart named

客户机测试

[root@localhost ~]# vim /etc/resolv.conf 

# Generated by NetworkManager
search com
nameserver 192.168.100.100

[root@localhost ~]# nslookup www.sina.com

Server:     192.168.100.100
Address:    192.168.100.100#53

Non-authoritative answer:
www.sina.com    canonical name = us.sina.com.cn.
us.sina.com.cn  canonical name = spool.grid.sinaedge.com.
Name:   spool.grid.sinaedge.com
Address: 120.192.83.125

四、模拟误删除配置文件内容,进行排错

模拟删除主配置文件中第 16 行的分号

排错方法一:语法检查

[root@huyouba1 ~]# named-checkconf  /etc/named.conf

/etc/named.conf:17: missing ';' before 'statistics-file'

排错方法二:观察日志

再开一个 ssh 窗口,观察 /var/log/messages 日志文件

重启服务

[root@huyouba1 ~]# systemctl restart named

Job for named.service failed because the control process exited with error code. See "systemctl status named.service" and "journalctl -xe" for details.

日志中新增内容

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦