前言
一、域名
1、域名的概念和作用
2、域名与ip地址的关系
3、域名的构成
二、DNS服务器
1、DNS服务器的概念和作用
2、DNS服务器的优势
3、DNS服务器的类型
4、DNS服务器的查询方式
4.1 递归查询
4.2 迭代查询
5、DNS服务器查询原理过程
6、本地系统上的域名解析
6.1 /etc/hosts文件
6.2 搭建本地系统的域名解析
7、内网DNS服务器
7.1 内网DNS服务器概念
7.2 内网DNS服务器的特点和功能
7.3 DNS软件bind及其配置文件
7.4 搭建内网正向解析的DNS服务器
7.5 搭建内网反向解析DNS服务器
8、搭建内网主从DNS服务器
9、搭建分离解析的内网DNS服务器
当前TCP/IP网络中的设备之间进行通信,是利用和依赖于IP地址实现的
但数字形式的IP地址是很难记忆的。当网络设备众多,想要记住每个设备的IP地址,可以说是"不可能完成的任务"。那么如何解决这一难题呢?
我们可以给每个网络设备起一个友好的名称,如:www.baidu.com,这种由文字组成的名称,显而易见要更容易记忆。但是计算机不会理解这种名称的,我们可以利用一种名字解析服务将名称转化成IP地址。从而我们就可以利用名称来直接访问网络中设备了
这种提供名字解析服务的设备,我们称为DNS域名解析服务器,接下来将进行对DNS域名解析服务器详细的阐释和配置过程的说明
总结:域名和 IP 地址之间是通过 DNS 这一系统相互关联的。域名提供了便于记忆的方式来访问互联网资源,而 IP 地址则提供了确切的位置信息
域名通常由多个部分组成,以便于在互联网上唯一标识特定的资源。典型的域名由多个部分组成,这些部分按照特定的顺序排列
以域名:www.baidu.com.为例,对其进行详细的阐释和说明
根域(Root Domain):根域是DNS层次结构的最高级别。在域名中通常不可见,表示为一个空的点“.”。它作为整个域名系统的起点,所有的顶级域都是从根域派生出来的
顶级域(Top-Level Domain,TLD):顶级域又称为一级域,是紧接在根域之下的部分,通常是域名的最后一部分。它可以表示国家、地区或特定类型的组织。例如,“.com”、“.org”、“.net”、“.gov”、“.edu”、“.uk”等都是顶级域。有时候也会有一些新兴的通用顶级域,比如“.app”、“.blog”等
二级域(Second-Level Domain):二级域名位于顶级域名之下,是在互联网上唯一标识某个特定组织或实体的名称。例如,在域名“baidu.com”中,“baidu”就是二级域名
主机名(Hostname):通常是指代特定的服务器或服务的名称,比如 "www" 表示万维网服务,"ftp" 表示文件传输协议服务等
DNS(Domain Name System)服务器是一种用于将域名解析为IP地址的服务器。它们是互联网基础设施的一部分,使得用户可以使用易于记忆的域名来访问网站和其他网络服务,而无需记住它们的IP地址
客户端向本地DNS服务器发送一个DNS查询请求,如果本地DNS服务器没有缓存所需的DNS记录,则会向根DNS服务器发送请求。根DNS服务器将指向所需域的顶级域DNS服务器,然后本地DNS服务器将向该顶级域DNS服务器发送请求,以获取所需域的DNS记录。这个过程会一直进行下去,直到本地DNS服务器获得所需域的DNS记录并将其返回给客户端
客户端向本地DNS服务器发送一个DNS查询请求,本地DNS服务器向根DNS服务器发送请求,根DNS服务器返回指向所需域的顶级域DNS服务器的信息。然后,本地DNS服务器向该顶级域DNS服务器发送请求,以获取所需域的DNS记录。这个过程会一直进行下去,直到本地DNS服务器获得所需域的DNS记录并将其返回给客户端
①本地/etc/hosts解析文件查询:先查看本机名称解析/etc/hosts配置文件,如果有记录直接访问,如果没有就去本地缓存DNS服务器
②本地DNS解析:如果缓存服务器有记录,就直接反馈结果(递归查询)。如果本地缓存中没有相应的记录,就需要迭代查询,本地 DNS 服务器会向根域名服务器发出请求,询问顶级域名服务器的地址
③根域服务器查询:根域服务器只能解析根域名,无法完整解析所有域名,会反馈顶级域服务器的地址,再去寻找顶级域服务器
④顶级域服务器查询:顶级域服务器只能解析顶级域名,无法完整解析所有域名,会反馈二级域服务器的地址,再去寻找二级域服务器
⑤二级域服务器查询:二级域服务器发现在自己的服务范围之内,可以完整解析所有域名,直接将获取到相应的域名解析记录,包括对应的IP地址反馈给本地缓存服务器
⑥返回结果:本地 DNS 服务器将获取到的域名解析结果缓存,并将解析结果返回给用户的计算机
/etc/hosts
文件是一个在 Linux 和类 Unix 系统中常见的文本文件,用于将 IP 地址与主机名关联起来,实现本地域名解析
这个文件允许系统管理员手动指定特定主机名对应的 IP 地址,从而绕过 DNS 服务器进行域名解析
#修改/etc/hosts文件,将你想要的域名和其对应的ip地址添加其中
[root@localhost ~]#vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.12.100 www.baidu.com
#文件的格式为: IP地址 域名
①ping www.baidu.com查看dns服务器解析的IP地址:180.101.50.242
②修改/etc/hosts的配置文件,指定www.baidu.com的域名对应的ip地址为172.16.12.100
③再次ping www.baidu.com发现其解析的IP地址改变为设定的172.16.12.100
注:
因为/etc/hosts文件执行的优先级大于dns服务器的优先级,也就是说在解析域名时,会优先查看/etc/hosts文件,如果该域名在/etc/hosts文件中,会直接反馈文件中指定的IP地址
④修改dns的优先级
⑤重新ping www.baidu.com,发现恢复原来dns服务器解析的IP地址:180.101.50.242
内网DNS域名解析服务器是部署在一个内部网络(内网)中的域名系统(DNS)服务器。其主要功能是解析内网中的域名到对应的IP地址,使内网用户能够访问内网资源,而无需记住每个资源的具体IP地址
总体而言,内网DNS解析服务器是为了方便内网用户访问内部资源而构建的,旨在提供高效、安全、自定义的域名解析服务
bind
通常指的是BIND(Berkeley Internet Name Domain)软件,它是一种用于实现域名系统(DNS)的开源软件
主配置文件/etc/named.conf:编辑此文件以配置域名解析、域名服务器和其他相关设置,配置文件通常位于/etc/bind/named.conf
域名配置文件/etc/named.rfc1912.zones:可以定义域名和其对应的区域文件,添加、修改或删除域名及其相关的区域文件配置
数据库文件/var/named/域名:用于解析特定域名的IP地址,包含了特定域名的资源记录(如A记录、CNAME记录等)以及其他与该域名相关的配置信息
数据库文件格式:
$TTL 1D #有效解析记录的生存周期
@ IN SOA master admin.dhyq.com. ( #“@"符号表示当前的DNS区域名
0 ; serial #更新序列号,可以是10位以内的整数
1D ; refresh #刷新时间,重新下载地址数据的间隔
1H ; retry #重试延时,下载失败后的重试间隔
1W ; expire #失效时间,超过该时间仍无法下载则放弃#
3H) ; minimum #无效解析记录的生存周期,
NS master #记录当前区域的DNS服务器的名称
master A 172.16.12.10 #记录主机IP地址
IN MX 10 mail.dhyq.com. #MX为邮件交换记录,数字越大优先级越低
www IN A 172.16.12.100 #记录正向解析www.benet.com对应的IP
mail IN A 172.16.12.110 #MX为邮件交换记录,数字越大优先级低
yyy IN CNAME www #CNAME使用别名,yyy是www的别名
* IN A 172.16.12.200 #泛域名解析,“*"代表任意主机名
各种资源记录:
SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录SOA,是起始授权机构记录,说明了在众多 NS 记录里哪一台才是主要的服务器。在任何DNS记录文件中,都是以SOA ( Startof Authority )记录开始。SOA资源记录表明此DNS名称服务器是该DNS域中数据信息的最佳来源。
A(internet Address):作用,域名解析成IP地址
PTR(PoinTeR):反向解析,ip地址解析成域名
NS(Name Server):专用于标明当前区域的DNS服务器,服务器类型为域名服务器
CNAME (Canonical Name):别名记录
MX(Mail eXchanger):邮件交换器
TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如:SPF(反垃圾邮件)记录,https验证等
前提:关闭防火墙和临时防护
[root@localhost ~]systemctl stop firewalld #关闭防火墙
[root@localhost ~]setenforce 0 #关闭临时防护
步骤一:
#安装bind、bind-utils,再查找到其配置文件和主程序的位置,并开启服务
[root@localhost ~]#yum install -y bind bind-utils.x86_64
[root@localhost ~]#rpm -qc bind
/etc/named.conf #主配置文件
[root@localhost ~]#rpm -ql bind
/usr/sbin/named #主程序名为named,安装包名为bind
[root@localhost ~]#systemctl start named #开启named服务
[root@localhost ~]#ss -natp | grep named #检测named是否开启,并查看其端口号
********************************************************************************
步骤二:
#在内网DNS服务器:172.16.12.10上操作
#修改主配置文件/etc/named.conf,修改权限和监听地址
[root@localhost ~]#vim /etc/named.conf
listen-on port 53 { any; }; #将监听地址改为any,或者删除、注释掉这行
allow-query { any; }; #将允许前来访问的客户端改为any,或者删除、注释掉这行
[root@localhost ~]#named-checkconf /etc/named.conf #查看主配置文件内容是否出错
*********************************************************************************
步骤三:
#在内网DNS服务器:172.16.12.10上操作
#修改域名配置文件/etc/named.rfc1912.zones
[root@localhost ~]#vim /etc/named.rfc1912.zones
zone "dhyq.com" IN {
type master;
file "dhyq.com.zone";
};
**********************************************************************************
步骤四:
#在内网DNS服务器:172.16.12.10上操作
#复制/var/named/named.localhost模版成/var/named/dhyq.com.zone数据库文件,在此基础上进行修改
[root@localhost ~]#cd /var/named
[root@localhost named]#cp -a named.localhost dhyq.com.zone
[root@localhost named]#vim dhyq.com.zone #编辑数据库文件
$TTL 1D
@ IN SOA master rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 172.16.12.10
www A 172.16.12.100
ftp A 172.16.12.200
yyy CNAME www
[root@localhost named]#named-checkzone dhyq.com /var/named/dhyq.com.zone
#检测数据库文件内容是否出错
[root@localhost named]#rndc reload #重新加载dns服务
************************************************************************************
步骤五:
#在内网DNS服务器:172.16.12.10上操作
#验证,查看域名解析的IP地址是否正确
[root@localhost named]#dig www.dhyq.com @172.16.12.10
[root@localhost named]#dig yyy.dhyq.com @172.16.12.10
[root@localhost named]#dig ftp.dhyq.com @172.16.12.10
************************************************************************************
步骤六:
#在客户端:172.16.12.12上验证内网dns服务器172.16.12.10
[root@localhost ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33
DNS1=172.16.12.10 #添加内网的dns服务器
[root@localhost ~]#systemctl restart network #重启网络
[root@localhost ~]#cat /etc/resolv.conf #查看当前客户端的dns服务器
[root@localhost ~]#host ftp.dhyq.com #查看域名解析的IP地址是否正确
[root@localhost ~]#host yyy.dhyq.com
步骤一:下载bind软件省略,命令见上
步骤二:修改主配置文件/etc/named.conf,修改权限和监听地址
步骤三:修改域名配置文件/etc/named.rfc1912.zones
步骤四:复制/var/named/named.localhost模版成/var/named/dhyq.com.zone数据库文件,在此基础上进行修改
步骤五:验证,查看域名解析的IP地址是否正确
步骤六: 在客户端:172.16.12.12上验证内网dns服务器172.16.12.10
#在搭建内网DNS正向解析服务器的基础上,修改其相应的配置文件即可
#先修改区域配置文件
[root@localhost named]#vim /etc/named.rfc1912.zones
zone "12.16.172.in-addr.arpa" IN {
type master;
file "xzyq.com.zone";
};
*************************************************************************
#复制正向解析数据库文件成模板为反向解析数据库文件,在此基础上进行修改
[root@localhost named]#cp -a dhyq.com.zone xzyq.com.zone
[root@localhost named]#vim xzyq.com.zone
$TTL 1D
@ IN SOA master rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 172.16.12.10
111 PTR www.yun.com.
220 PTR ftp.yun.com.
主从DNS服务器共同工作,确保了域名解析服务的可靠性、稳定性和效率。当主服务器发生故障或不可用时,从服务器可以继续提供域名解析服务,从而确保网络的连通性
前提:关闭防火墙和临时防护
[root@localhost ~]systemctl stop firewalld #关闭防火墙
[root@localhost ~]setenforce 0 #关闭临时防护
搭建主从DNS服务器具体详细步骤:
步骤一:主DNS服务器:172.16.12.10和从DNS服务器:172.16.12.12都要操作
#安装bind、bind-utils,再查找到其配置文件和主程序的位置,并开启服务
[root@localhost ~]#yum install -y bind bind-utils.x86_64
[root@localhost ~]#rpm -qc bind
/etc/named.conf #主配置文件
[root@localhost ~]#rpm -ql bind
/usr/sbin/named #主程序名为named,安装包名为bind
[root@localhost ~]#systemctl start named #开启named服务
[root@localhost ~]#ss -natp | grep named #检测named是否开启,并查看其端口号
********************************************************************************
步骤二:主DNS服务器:172.16.12.10和从DNS服务器:172.16.12.12都要操作
#修改主配置文件/etc/named.conf,修改权限和监听地址
[root@localhost ~]#vim /etc/named.conf
listen-on port 53 { any; }; #将监听地址改为any,或者删除、注释掉这行
allow-query { any; }; #将允许前来访问的客户端改为any,或者删除、注释掉这行
[root@localhost ~]#named-checkconf /etc/named.conf #查看主配置文件内容是否出错
*********************************************************************************
步骤三:主DNS服务器:172.16.12.10和从DNS服务器:172.16.12.12都要操作
#修改网卡配置文件的dns地址
[root@localhost ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33
DNS1=172.16.12.10 #修改dns服务器
DNS2=172.16.12.12
[root@localhost ~]#systemctl restart network #重启网络
[root@localhost ~]#cat /etc/resolv.conf #查看当前系统的dns服务器
**********************************************************************************
步骤四:在主DNS服务器:172.16.12.10上操作
#修改主域名配置文件/etc/named.rfc1912.zones
[root@localhost ~]#vim /etc/named.rfc1912.zones
zone "dhyq.com" IN {
type master;
file "dhyq.com.zone";
};
**********************************************************************************
步骤五:在主DNS服务器:172.16.12.10上操作
#修改主DNS服务器的数据库文件
[root@localhost ~]#cd /var/named
[root@localhost named]#cp -a named.localhost dhyq.com.zone
[root@localhost named]#vim dhyq.com.zone
$TTL 1D
@ IN SOA master rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
NS slave #添加指定的从服务器
master A 172.16.12.10 ##添加指定的从服务器对应的IP地址
slave A 172.16.12.12
www A 172.16.12.100
ftp A 172.16.12.200
yyy CNAME www
[root@localhost named]#named-checkzone dhyq.com /var/named/dhyq.com.zone
#检测数据库文件内容是否出错
***********************************************************************************
步骤五:在从DNS服务器:172.16.12.12上操作
#修改从域名配置文件/etc/named.rfc1912.zones
[root@localhost ~]#vim /etc/named.rfc1912.zones
zone "dhyq.com" IN {
type slave;
file "slaves/dhyq.com.zone";
masters{ 172.16.12.10 ;}; #申明主服务器的IP地址
};
***********************************************************************************
步骤六:重启dns服务,检测从DNS服务器上的/var/named/slaves/下是否出现dhyq.com.zone数据库文件
#主DNS服务器:172.16.12.10和从DNS服务器:172.16.12.12都要重新加载dns服务
[root@localhost named]#rndc reload
[root@localhost ~]#ll /var/named/slaves/
***********************************************************************************
步骤七:验证
#关闭主dns服务器,查看域名还能否成解析IP地址
[root@localhost named]#systemctl stop named
[root@localhost named]#dig ftp.dhyq.com
[root@localhost named]#dig yyy.dhyq.com
其实按前面的配置内网DNS服务器的步骤,配置两个内网DNS服务器,一台作为主NDS服务器,一台作为从DNS服务器,修改两个DNS服务器的配置文件即可
①修改主DNS服务器的数据库文件:vim /var/named/dhyq.com.zone
②修改从DNS服务器的域名配置文件:vim /etc/named.rfc1912.zones
③主从DNS服务器重新开启dns服务后,进行测试
关闭主服务器的dns服务,查看还能否解析出ip地址
注意点:
每次修改主DNS服务器的数据库文件时,注意版本序列号要在原来基础上加1:
否则,主服务器不改版本序列号,从服务器解析ftp.dhyq.com时对应IP地址还是为原来的172.16.12.200
主服务器修改版本序列号,从服务器解析ftp.dhyq.com时对应IP地址是新的IP地址:172.16.12.222
如果主服务器每次修改数据库配置文件后没有将序列版本号加1,那么在24小时内从服务器使用的都是旧的数据库配置文件,无法实现与主服务器的同步。
前提:关闭防火墙和临时防护
[root@localhost ~]systemctl stop firewalld #关闭防火墙
[root@localhost ~]setenforce 0 #关闭临时防护
#安装bind、bind-utils,再查找到其配置文件和主程序的位置,并开启服务
[root@localhost ~]#yum install -y bind bind-utils.x86_64
[root@localhost ~]#rpm -qc bind
/etc/named.conf #主配置文件
[root@localhost ~]#rpm -ql bind
/usr/sbin/named #主程序名为named,安装包名为bind
[root@localhost ~]#systemctl start named #开启named服务
[root@localhost ~]#ss -natp | grep named #检测named是否开启,并查看其端口号
******************************************************************************
#修改主配置文件/etc/named.conf,修改权限和监听地址
[root@localhost ~]# vim /etc/named.conf
listen-on port 53 { any; };
allow-query { any; };
#将根配置文件删除或者注释
//zone "." IN {
// type hint;
// file "named.ca";
******************************************************************************
修改域名配置文件/etc/named.rfc1912.zones
[root@localhost ~]# vim /etc/named.rfc1912.zones
#只配置view,删除zone开头的所有,否则不能识别
view "lan" {
match-clients { 172.16.12.0/24; }; #允许匹配的网段
zone "dxzh.com" IN {
type master;
file "dxzh.com.lan";
};
zone "." IN { #根配置文件
type hint;
file "named.ca";
};
};
view "wan" {
match-clients { 20.0.0.0/24; }; #允许匹配的网段
zone "dxzh.com" IN {
type master;
file "dxzh.com.wan";
};
zone "." IN {
type hint;
file "named.ca";
};
};
*****************************************************************************
#配置数据库文件
[root@localhost ~]# cd /var/named/
[root@localhost named]# cp -a named.localhost dxzh.com.lan
[root@localhost named]# cp -a named.localhost dxzh.com.wan
[root@localhost named]# vim dxzh.com.lan
$TTL 1D
@ IN SOA master rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 172.16.12.10
www A 172.16.12.222
[root@localhost named]# vim dxzh.com.wan
@ IN SOA master rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 20.0.0.10
www A 20.0.0.222
******************************************************************************
#修改ens36网卡名称、网卡、及ip地址(20.0.0.10)即可
[root@localhost named]# vim /etc/sysconfig/network-scripts/ifcfg-ens36
NAME=ens36
DEVICE=ens36
IPADDR=20.0.0.10
[root@localhost named]# systemctl restart network #重启网络服务
[root@localhost named]# systemctl restart named #重启DNS服务
验证: