一、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.
日志中新增内容