DNS服务器
1、概述
域名解析服务器:本质就是一个翻译机,url地址翻译成机器可以路由查找ip地址
- 产生原因: ip记不住,通过域名可以给对应的设备或集群的功能做出概括。
- 连接方式: 通过互联网,internet 进行链接
2、域名
( 1 )域名划分

( 2 )顶级域名划分:
- 根据性质划分:com企业 org 组织 gov政府 edu教育
- 根据国家划分:cn中国 jp日本 uk 英国 us美国
- 通用域名划分:net,xyz,top,online,com.cn
( 3 )当我们在互联网中获取www.bilibli.com域名解析服务,经过一下步骤:
- 问询跟服务器管理.com的服务器是谁
- 问管.com的服务器谁管理baidu.com的
- 问管baidu.com的服务器谁管理www.baidu.com的
( 4 )服务器
- 根域名服务器 : 根域名服务器负责告诉用户哪些服务器 管理 .com .xyz .net ...
- 顶级域名服务器 : 管理相应的顶级域名下知道xxx.com是哪他台服务器管理
- 权威域名服务器: 管理完整域名的解析。
- **本地域名服务器:**114.114.114.114 8.8.8.8 235.3.3.4
3、dns解析过程

4、搭建DNS域名解析服务器
( 1 )BIND介绍
BIND(Berkeley Internet Name Domain)是全球应用最广泛的 DNS(域名系统)服务软件,具备以下核心特点:
- 功能完整性:支持主从服务器、递归解析、DNSSEC(域名系统安全扩展)等企业级 DNS 功能,可满足从个人实验到大型网络的域名解析需求。
- 开源免费:基于开源协议发布,被 Linux、Unix 等主流操作系统广泛集成,是构建自建 DNS 服务的事实标准。
- 架构组成:
- 核心守护进程
named(Berkeley Internet Name Domain 的简称),负责处理 DNS 查询请求。 - 配置文件体系:
/etc/named.conf(主配置文件)、区域文件(如openlab.com.zone,存储域名与 IP 的映射记录)。
- 核心守护进程
- 应用场景 :常用于企业内部网络的域名解析(如将
bbs.openlab.com解析到内网服务器)、互联网服务提供商的公共 DNS 服务等场景。
( 2 )安装
shell
dnf install bind -y
( 3 )配置文件
①/etc/named.conf
dns服务的主配置文件,里面是关于dns全局配置信息
shell
# dns服务器全局设置
options {
listen-on port 53 { 127.0.0.1; }; #重要: ipv4监听地址
listen-on-v6 port 53 { ::1; }; # ipv6 监听地址
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"; # 内存分析文件
secroots-file "/var/named/data/named.secroots"; # 安全根域名文件
recursing-file "/var/named/data/named.recursing";
allow-query { 192.168.10.200; };# 重要:决定那些地址可以来获取dns解析服务
recursion yes; # 重要 yes:递归查询 no:迭代查询
dnssec-validation yes; # 是否开启加密传输,使用默认即可
managed-keys-directory "/var/named/dynamic"; # dns密钥保存位置
geoip-directory "/usr/share/GeoIP";
pid-file "/run/named/named.pid"; # pid保存在该文件中
session-keyfile "/run/named/session.key"; # 通信密钥
}
logging {
channel default_debug {
file "data/named.run"; #日志保存的文件
severity dynamic; # 日志级别
};
};
②/etc/named.rfc1912.zones : 区域信息的配置文件
③/var/named 目录
shell
[root@server named]# ls
data dynamic named.ca named.empty
named.localhost # 正向解析的模版配置文件
named.loopback # 反向解析的模版配置文件
slaves
④named.localhost模版说明
shell
$TTL 1D # 生存时间
@ IN SOA @ rname.invalid. (
0 ; serial # 序列号
1D ; refresh # 刷新时间1天
1H ; retry # 重新连接间隔 1小时
1W ; expire # 过期 1 周
3H ) ; minimum # 缓存3小时
# 权威域名解析服务器
NS ns.xxxx.com
mail.xxx.com A 127.0.0.1
image.xxx.com AAAA ::1
# @ 当前的区域名称 xxx.com
# IN internet
# SOA 开始的授权记录
# rname.invalid. :管理员的邮箱正向域名解析服务器配置
实验
1、配置正向解析服务器
shell
服务端配置
#1、安装 BIND 服务
[root@server ~]# dnf install bind -y
#2、修改主配置文件/etc/named.conf
[root@server ~]# vim /etc/named.conf
-------------------------------------------------------------------------
options {
listen-on port 53 { any; };
.....
allow-query { 192.168.10.200; };
};
-------------------------------------------------------------------------#3、修改区域配置文件/etc/named.rfc1912.zones
[root@server ~]# vim /etc/named.rfc1912.zones
在此文件中增加以下内容
------------------------------------------------------------------------
zone "openlab.com" IN {
type master; // 主服务器
file "openlab.com.zone"; // 区域数据文件名
allow-update { none; }; // 不允许动态更新
};
------------------------------------------------------------------------
#4、创建区域数据文件/var/named/openlab.com.zone
[root@server ~]# cd /var/named
[root@server named]# cp -a named.localhost openlab.com.zone
[root@server named]# vim openlab.com.zone
在此文件中添加以下内容(❗所有域名后需加.):
------------------------------------------------------------------------
$TTL 1D ; 生存时间1天
@ IN SOA ns.openlab.com. admin.openlab.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns.openlab.com.
ns IN A 192.168.10.100
ftp IN A 192.168.10.101
bbs IN A 192.168.10.102
image IN A 192.168.10.103
-------------------------------------------------------------------------
#5、启动并启用 BIND 服务
[root@server named]#systemctl start named
[root@server named]#systemctl enable named
#########################################################################
客户端配置
#1.编辑/etc/resolv.conf
[root@clinet ~]# vim /etc/resolv.conf
在此文件中添加以下内容
-------------------------------------------------------------------------
nameserver 192.168.10.100 # DNS服务器IP(即服务端IP)
-------------------------------------------------------------------------
#2、检验
[root@clinet ~]# nslookup ftp.openlab.com
Server: 192.168.10.100
Address: 192.168.10.100#53
Name: ftp.openlab.com
Address: 192.168.10.101
[root@clinet ~]# nslookup bbs.openlab.com
Server: 192.168.10.100
Address: 192.168.10.100#53
Name: bbs.openlab.com
Address: 192.168.10.102
[root@clinet ~]# nslookup image.openlab.com
Server: 192.168.10.100
Address: 192.168.10.100#53
Name: image.openlab.com
Address: 192.168.10.103
2、配置反向解析服务器
shell
服务端
#1. 修改主配置文件 让named服务可以监听任意地址服务任意ip
[root@server ~]#cd /var/named
[root@server named]# vim /etc/named.conf
-------------------------------------------------------------
listen-on port 53 { any; };
allow-query { any; };
-------------------------------------------------------------
#2.添加反向解析声明 到named.rfc1912.zones
[root@server named]# vim /etc/named.rfc1912.zones
-------------------------------------------------------------
zone "10.168.192.in-addr.arpa" IN { #双引号内的反向解析的区域名
type master;
file "192.168.10.arpa";#反向解析的文件/var/named/172.25.254.arpa
allow-update { none; };
};
-------------------------------------------------------------
#3.创建 102.168.10.arpa
[root@server named]# cp -a named.loopback 192.168.10.arpa
[root@server named]# vim 192.168.10.arpa
--------------------------------------------------------------
$TTL 1D
@ IN SOA ns.openlab.com. 123.qq.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.openlab.com. #声明域名解析服务地址
openlab.com. A 192.168.10.100 # 声明该区域的ip是什么
101 PTR www.openlab.com.
102 PTR bbs.openlab.com.
103 PTR image.openlab.com.
104 PTR timeline.openlab.com.
--------------------------------------------------------------
#4.重启named服务
[root@server named]#systemctl restart named
############################################################################
客户端
#1.配置 自己的dns服务到网络中
[root@clinet ~]# nmcli connection modify ens160 ipv4.dns 192.168.10.100
[root@clinet ~]# nmcli connection up ens160
#2.验证 nslookup
[root@clinet ~]# nslookup 192.168.10.101
101.10.168.192.in-addr.arpa name = www.openlab.com.
[root@clinet ~]# nslookup 192.168.10.102
102.10.168.192.in-addr.arpa name = bbs.openlab.com.
3、主从服务器配置
shell
配置主服务器
#1、修改声明文件,将正向和反向声明做转发处理,转发给从服务器
[root@server ~]# vim /etc/named.rfc1912.zones
----------------------------------------------------------------------------
zone "openlab.com" IN {
type master;
file "openlab.com.zone";
allow-transfer{192.168.10.101;}; # 允许转发给从服务器
};
...........................................................................
zone "254.25.172.in-addr.arpa" IN {
type master;
file "192.168.10.arpa";
allow-transfer { 192.168.10.101; };
};
----------------------------------------------------------------------------
###########################################################################
配置从服务器
#1、关闭防火墙
[root@server002 ~]#systemctl disable --now firewalld
[root@server002 ~]#setenforce 0
#2、修改/etc/named.conf
[root@server002 ~]#vim /etc/named.conf
----------------------------------------------------------------------------
listen-on port 53 { any; };
allow-query { any; };
----------------------------------------------------------------------------
#3、修改/etc/named.rfc1912.zones
[root@server002 ~]#vim /etc/named.rfc19212.zones
----------------------------------------------------------------------------
zone "openlab.com" IN {
type slave; # 身份为从服务器
masters {192.168.10.100;}; # 从服务器的主为 172.25.254.100
file "slaves/openlab.com.zone"; # 从服务器的区域数据文件保存位置
};
...........................................................................
zone "254.25.172.in-addr.arpa" IN {
type slave;
masters {192.168.10.100;};
file "slaves/172.25.254.arpa";
};
----------------------------------------------------------------------------
主从服务器都重启服务
systemctl restart named
############################################################################
配置客户端
#1、将主从ip写到客户端的dns中,然后使用nslookup 进行正反向解析测试
[root@clinet ~]# nmcli connection modify ens160 +ipv4.dns 192.168.10.101
[root@clinet ~]# nmcli connection up ens160
#2、检验
#①主从都在线时 使用主进行解析
[root@clinet ~]# nslookup bbs.openlab.com
Server: 192.168.10.100
Address: 192.168.10.100#53
Name: bbs.openlab.com
Address: 192.168.10.102
#②当将主强制下线后 从进行解析
[root@clinet ~]# nslookup bbs.openlab.com
Server: 192.168.10.101
Address: 192.168.10.101#53
Name: bbs.openlab.com
Address: 192.168.10.102