运维工程师实验第二天,关于DNS服务BIND使用
一、 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地址的对应关系,以便为客户程序提供正向或反向的地址查询服务,即正向解析与反向解析。
- 正向解析:根据域名查 IP 地址,是 DNS 服务最常用的基本功能
- 反向解析:根据 IP 查域名,不是很常用,应用于例如反垃圾邮件的验证等
每台 DNS 服务器都负责管理一个有限范围(一个或几个域)内的主机域名和 IP 地址的对应关系,这些特定的 DNS 域或 IP 地址段称为“zone”(区域)。
DNS 系统的架构类似于一颗倒挂着的树(和 Linux 系统目录结构类似),它的顶点也是根(”.”),
只不过这个根是用点(.)来表示的,不是目录的根斜线(/)。
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。 端口
TCP 53 端口
UDP 53 端口
4、DNS 解析流程
例:客户端解析 www.uos.com
客户端查询自己的缓存(包含 hosts 中的记录),如果没有将查询发送/etc/resolv.conf 中的 DNS 服务器如果本地 DNS 服务器对于请求的信息具有权威性,会将(权威答案)发送到客户端。
否则(不具有权威性),如果 DNS 服务器在其缓存中有请求信息,则将(非权威答案)发送到客户端如果缓存中没有该查询信息,DNS 服务器将搜索权威 DNS 服务器以查找信息:
a. 从根区域开始,按照 DNS 层次结构向下搜索,直至对于信息具有权威的名称服务器,为客户端获答案DNS 服务器将信息传递给客户端 ,并在自己的缓存中保留一个副本,以备以后查找。
b. 转发到其它 DNS 服务器
二、BIND 的安装与控制
BIND 是 Domain Name System (DNS) 协议的一个实现,提供了 DNS 主要功能的开放实现,主要包括以下三种:
域名服务器
DNS 解析库函数
NS 服务器运行调试所用的工具
它是一款开放源码的 DNS 服务器软件,由美国加州大学 Berkeley 分校开发和维护的
1、安装 bind9
在 uos1 上
apt install bind9 #安装 DNS 软件 bind9
BIND 安装以后,会自动增加一个名为 named 的系统服务
2、主要配置文件解析
ls -l /etc/bindbind.keys
db.0
db.127 反向区域数据库,用于将 ip 解析为对应的域名
db.255
db.empty
db.local 正向区域数据库,用于将域名解析为对应的 IP 地址
named.conf 主配置文件,通过 include 关键字加载其他三个配置文件
named.conf.default-zones 默认区域
named.conf.local 用于定义解析域,也可以直接在 named.conf 中直接划定解析域
named.conf.options 配置文件,全局选项配置
rndc.key
zones.rfc1918
其中,/etc/bind9/named.conf 是 Bind 的主配置文件,不过他并不包含 DNS 数据。查看/etc/bind9/named.conf 文件可以发现,主配置文件里面使用了 include 关键字来加载其它 3个配置文件。
在/etc/bind9/named.conf.options 文件中,有一句默认的配置(如下),该语句的所示的目录 的 作 用 是 存 放 正 向 解 析 以 及 反 向 解 析 的 一 些 配 置 文 件 , 该 配 置 告 诉 Bind , 到/var/cache/bind 目录下去寻找数据文件。
3、配置主 DNS
在 uos1 上
systemctl start bind9 #启动服务
(1)编辑 named.conf.local 添加
cp /etc/bind/named.conf.local /etc/bind/named.conf.local.bak
vim /etc/bind/named.conf.local
zone “uos.com” { #定义 DNS 的 zone
type master; #定义此区为主服务器
file “/etc/bind/zones/db.uos.com”; #指定具体存放 DNS 记录的文件
};
zone “168.192.in-addr.arpa” { #定义一个 IP 为 192.168.200.*反向域区
type master;
file “/etc/bind/db.192.168.200”;
};
type 类型有三种
master:表示定义的是主域名服务器
slave :表示定义的是辅助域名服务器
hint:表示是互联网中根域名服务器
(2)复制现有文件做为 zone 文件正向解析模板
cp /etc/bind/db.local /etc/bind/db.uos.com
BIND data file for local loopback interface
$TTL 604800 #正确解析数据的缓存生存周期
@ IN SOA uos.com. root.uos.com. (
域名 认证授权(主、从服务器 域名 邮箱地址
2 ; Serial #序号
604800 ; Refresh #更新间隔时间
86400 ; Retry #更新失败再次尝试的间隔时间
2419200 ; Expire #若一直失败,尝试多久后放弃
604800 ) ; Negative Cache TTL #查询失败的 dns 缓存;
@ IN NS uos. www IN A 1.1.1.1 #主机记录
mali IN A 2.2.2.2
@ IN AAAA ::1
(3)再复制一个现有的文件作为 Zone 文件反向解析的模板
cp /etc/bind/db.127 /var/cache/bind/db.192.168.200
vim /var/cache/bind/db.192.168.200
BIND reverse data file for local loopback interface;
$TTL 604800
@ IN SOAuos. root.uos.com. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
@ IN NS localhost. 1.0.0 IN PTR localhost. 201 IN PTR www.uos.com
声明域的时候已经有了,192.168.200 所以我们只需要输入 201 既代表 192.168.200.201
A:定义了一条 A 记录,即主机名到 IP 地址的对应记录
MX 定义了一邮件记录
CNAME:定义了对应主机的一个别名
PTR:表示反向记录
(4)主配置文件解析
options {
directory “/var/cache/bind”; # zone 文件的默认路径
// forwarders { #这里设置的是主 DNS 的 IP 地址
// 0.0.0.0; #当本地缓存中没有对应的解析时,将客户机的查询转发到哪些 DNS
服务器,可以添加多个 DNS 服务器的地址。本地测试不设置
// };
dnssec-validation auto; #开启 DNSSEC 功能,DNS 安全扩展
listen-on-v6 { any; }; #定义 bind 的监听 IP 地址(IPv6)
};
(5)测试配置文件
named-checkzone db.uos.com db.127
named-checkzone /var/cache/bind/db.192.168.200 db.127
(6)启动服务或重载配置
systemctl restart bind9
(7)客户机测试
vim /etc/resolv.conf
nameserver 192.168.200.201
nslookup www.uos.com
Server: 192.168.200.201
Address: 192.168.200.201#53
Name: www.uos.com
Address: 1.1.1.1
nslookup mali.uos.com
Server: 192.168.200.201
Address: 192.168.200.1201#53
Name: mali.uos.com
Address: 2.2.2.2
root@king-PC:~# nslookup 192.168.200.201
201.200.168.192.in-addr.arpa name = nes.uos.com. 4、配置缓存 dns
DNS 缓存服务器作用
为了增加访问效率,计算机有域名缓存机制,当访问过某个网站并得到其 IP 后,会将其域名和 IP 缓存下来,下一次访问的时候,就不需要再请求域名服务器获取 IP,直接使用缓存中的 IP,提高了响应的速度。当然缓存是有有效时间的,当过了有效时间后,再次请求网站,还是需要先请求域名解析。
缓存 DNS 服务器并不在本地数据库保存任何资源记录,它仅仅缓存本地局域网内客户端的查询结果,从而起到加速查询请求和节省网络带宽的作用。
在 uos2 上配置
确认本机的网络地址,主机映射,默认 DNS 服务器地址
apt install bind9
vim /etc/bind/named.conf.options
options {
directory “/var/cache/bind”;
forwarders {
192.168.200.201;
};
dnssec-validation auto;
listen-on-v6 { any; };
};
systemctl restart bind9
uos3 客户端测试验证
vim /etc/resolv.conf
search www.uos.com
nameserver 192.168.200.202
nslookup www.uos.com
Server: 192.168.200.202
Address: 192.168.200.202#53
Non-authoritative answer:
Name: www.uos.com
Address: 1.1.1.1
nslookup mail.uos.com
Server: 192.168.200.202
Address: 192.168.200.202#53
Non-authoritative answer:
Name: mail.uos.com
Address: 2.2.2.2
关闭主 DNS 的 named 服务,再通过客户机测试,发现依然可以解析成功,到这里就说明我们的缓存服务器配置完成了