目录
一、定义
DNS: Domain Name System域名系统,应用层协议,是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,基于C/S架构
二、DNS系统的作用
1.正向解析:根据域名查找对应的IP地址
2.反向解析:根据IP地址查找对应的域名
3.DNS系统的分布式数据结构
三、DNS系统类型
1.缓存域名服务器
(1)也称为DNS高速缓存服务器
(2)通过向其他域名服务器查询获得域名-> IP地址记录
(3)将域名查询结果缓存到本地,提高重复查询时的速度
2.主域名服务器
(1)特定DNS区域的权威服务器,具有唯一-性
(2)负责维护该区域内所有域名->IP地址的映射记录
(3)需要自行建立所负责区域的地址数据文件
3.从域名服务器(为主域名服务器的备份)
(1)也称为辅助域名服务器,是对主域名服务器的热备份
(2)其维护的域名->IP地址记录来源于主域名服务器
(3)需要从主域名服务器自动同步区域地址数据库
PS:同步的两种方式
主推从;从拉主
四、DNS查询类型及原理
1.查询方式
(1)递归查询:一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结果后转交给客户机。此查询的源和目标保持不变,为了查询结果只需要发起一次查询。(不需要自 己动手)
(2)迭代查询: 一般情况下(有例外)本地的DNS服务器向其它DNS服务器的查询属于迭代查询,如:若对方不能返回权威的结果,则它会向下一个DNS服务器(参考前一个DNS服务器返回的结果)再次发起进行查询,直到返回查询的结果为止。此查询的源不变,但查询的目标不断变化,为查询结果一般需要发起多次查询。(需要自己动手)
2.查询原理过程
正向解析查询过程:
(1)先查本机的缓存记录
(2)查询hosts文件
(3)查询dns域名服务器,交给dns域名服务器处理
PS:如果以上过程成为递归查询:我要一个答案你直接会给我结果
(4)这个dns服务器可能是本地域名服务器,也有个缓存,如果有直接返回结果,如果没有则进行下一步
(5)求助根域服务器,根域服务器返回可能会知道结果的顶级域服务器让他去找顶级域服务器
(6)求助顶级域服务器,顶级域服务器返回可能会知道结果的二级域服务器然他去找二级域服务器
(7)求助二级域服务器,二级域服务器查询发现是我的主机,把查询到的ip地址返回给本地域名服务器
(8)本地域名服务器将结果记录到缓存,然后把域名和ip的对应关系返回给客户端
五、DNS服务配置
1.正向解析
服务器
(1)环境配置
[root@localhost ~]# systemctl stop firewalld.service (关闭防火墙)
[root@localhost ~]# setenforce 0 (关闭selinux)
[root@localhost ~]#yum install bind bind-utils -y (安装主软件和配置包管理软件)
[root@localhost ~]#systemctl start named (开启服务)
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 (进行网卡配置)
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=d1769a1e-2da9-45c8-b59c-a852d2c34ddb
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.174.10
NTMASK=255.255.255.0
GATEWAY=192.168.174.2
DNS1=127.0.0.1 (改为本地回环地址)
:wq
[root@localhost ~]# systemctl restart network (重启下网络服务)
(2)修改文件包配置
[root@localhost ~]#vim /etc/named.conf 修改配置文件
12 options {
13 listen-on port 53 { any; };
14 listen-on-v6 port 53 { ::1; };
15 directory "/var/named";
16 dump-file "/var/named/data/cache_dump.db";
17 statistics-file "/var/named/data/named_stats.txt";
18 memstatistics-file "/var/named/data/named_mem_stats.txt";
19 allow-query { any; };
修改第13和19行内容或者注释掉13或者19行内容
PS:如果不太清楚文件包可以通过
[root@localhost ~]#rpm -qc bind 这条命令来查看配置文件包
[root@localhost named]# rndc reload
server reload successful 重新加载DNS服务
(3)编写域名
[root@localhost named]#vim /etc/named.rfc1912.zones (要记住这个配置域名的文件)
zone "kgc.com" {
type master;
file "kgc.com.zone";
};
(4)编辑数据库文件
[root@localhost named]#cd /var/named (切换目录)
[root@localhost named]#ls
data dynamic named.ca named.empty named.localhost named.loopback slaves
[root@localhost named]#cp named.localhost ./kgc.com.zone -p (保留权限拷贝文件到当前目录下的
kgc.com.zone)
[root@localhost named]#vim kgc.com.zone(编辑数据库文件,解析记录对应关系)
$TTL 1D (有效解析记录的生存周期)
@ IN SOA master.kgc.com. admin.kgc.com. ( (#“@"符号表示当前的DNS区域名)
0 ; serial (更新序列号,可以是10位以内的整数)
1D ; refresh (刷新时间,重新下载地址数据的间隔)
1H ; retry (重试延时,下载失败后的重试间隔)
1W ; expire (失效时间,超过时间仍无法下载放弃)
3H ) ; minimum (无效解析记录的生存周期)
NS master (记录当前区域的DNS服务器的名称)
master A 192.168.174.10 (记录主机IP地址)
www A 192.168.174.11 (记录正向解析www.kgc.com对应的IP)
IN MX 10 mail.kgc.com. (MX为邮件交换记录,数字越大优先级越低)
mail A 192.168.174.21 (MX为邮件交换记录,数字越大优先级越低)
ftp IN CNAME www (NAME使用别名,ftp 是www的别名)
* A 192.168.174.11 (泛域名解析,“*"代表任意主机名)
@ A 192.168.174.11 (可以直接使用域名查找)
:wq
[root@localhost named]# rndc reload
server reload successful
客户机
(1)环境配置
[root@localhost ~]# systemctl stop firewalld.service (关闭防火墙)
[root@localhost ~]# setenforce 0 (关闭selinux)
[root@localhost ~]#systemctl start named (开启服务)
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 (进行网卡配置)
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=d1769a1e-2da9-45c8-b59c-a852d2c34ddb
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.174.10
NTMASK=255.255.255.0
GATEWAY=192.168.174.2
DNS1=192.168.174.20
:wq
[root@localhost ~]# systemctl restart network (重启下网络服务)
(2)验证正向解析
[root@localhost ~]# host www.kgc.com
www.kgc.com has address 192.168.174.11
[root@localhost ~]# host kgc.com (对应@ A 192.168.174.11)
kgc.com has address 192.168.174.11
[root@localhost ~]# host wwwww.kgc.com(对应 * A 192.168.174.11 )
wwwww.kgc.com has address 192.168.174.11
2.反向解析
服务器(以下配置在正向解析环境下)
(1)修改区域配置文件
[root@localhost named]#vim /etc/named.rfc1912.zones
zone "174.168.192.in-addr.arpa" IN {
type master;
file "ky15.com.zone";
allow-update { none; };
};
(2)复制正向解析文件
[root@localhost named]#cp -p kgc.com.zone ky15.com.zone
(3)编辑文件
vim ky15.com.zone
TTL 1D
@ IN SOA master.yun.com. admin.yun.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master.yun.com.
master A 192.168.174.10
100 IN PTR www.yun.com.
88 IN PTR ftp.yun.com.
:wq
[root@localhost ~]#rndc reload
客户机验证
[root@localhost named]# host 192.168.174.100
100.174.168.192.in-addr.arpa domain name pointer www.yun.com.
[root@localhost named]# host 192.168.174.88
88.174.168.192.in-addr.arpa domain name pointer ftp.yun.com.
3.主从复制
主服务器
(1)环境配置
[root@localhost ~]# systemctl stop firewalld.service (关闭防火墙)
[root@localhost ~]# setenforce 0 (关闭selinux)
[root@localhost ~]#yum install bind bind-utils -y (安装主软件和配置包管理软件)
[root@localhost ~]#systemctl start named (开启服务)
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 (进行网卡配置)
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=d1769a1e-2da9-45c8-b59c-a852d2c34ddb
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.174.20
NTMASK=255.255.255.0
GATEWAY=192.168.174.2
DNS1=192.168.174.20(修改DNS)
:wq
[root@localhost ~]# systemctl restart network (重启下网络服务)
(2)修改配置文件
[root@localhost ~]#vim /etc/named.conf 修改配置文件
12 options {
13 listen-on port 53 { any; };
14 listen-on-v6 port 53 { ::1; };
15 directory "/var/named";
16 dump-file "/var/named/data/cache_dump.db";
17 statistics-file "/var/named/data/named_stats.txt";
18 memstatistics-file "/var/named/data/named_mem_stats.txt";
19 allow-query { any; };
修改第13和19行内容或者注释掉13或者19行内容
PS:如果不太清楚文件包可以通过
[root@localhost ~]#rpm -qc bind 这条命令来查看配置文件包
[root@localhost named]# rndc reload
server reload successful 重新加载DNS服务
[root@localhost named]#vim /etc/named.rfc1912.zones (要记住这个配置域名的文件)
zone "kgc.com" IN {
type master;
file "kgc.com.zone";
allow-update { none; };
};
编辑数据库文件
[root@localhost ~]# cd /var/named
[root@localhost named]# cp -p named.localhost kgc.com.zone
[root@localhost named]# vim kgc.com.zones
$TTL 1D
@ IN SOA master admin.kgc.com. (
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 192.168.174.20
www A 192.168.174.40
:wq
[root@localhost ~]# rndc reload
(3)检验主服务器是否可以正向解析
[root@localhost named]# host www.kgc.com
www.kgc.com has address 192.168.174.40
从服务器
(1)环境设置
[root@localhost ~]# systemctl stop firewalld.service (关闭防火墙)
[root@localhost ~]# setenforce 0 (关闭selinux)
[root@localhost ~]#yum install bind bind-utils -y (安装主软件和配置包管理软件)
[root@localhost ~]#systemctl start named (开启服务)
(2)修改配置文件
[root@localhost ~]#vim /etc/named.conf 修改配置文件
12 options {
13 listen-on port 53 { any; };
14 listen-on-v6 port 53 { ::1; };
15 directory "/var/named";
16 dump-file "/var/named/data/cache_dump.db";
17 statistics-file "/var/named/data/named_stats.txt";
18 memstatistics-file "/var/named/data/named_mem_stats.txt";
19 allow-query { any; };
修改第13和19行内容或者注释掉13或者19行内容
PS:如果不太清楚文件包可以通过
[root@localhost ~]#rpm -qc bind 这条命令来查看配置文件包
[root@localhost named]# rndc reload
server reload successful 重新加载DNS服务
[root@localhost named]# vim /etc/named.rfc1912.zones
zone "kgc.com" IN {
type slave;
file "slaves/kgc.com.zone";
masters { 192.168.174.20; };
};
:wq
[root@localhost etc]# ls /var/named/slaves
kgc.com.zone
[root@localhost etc]# systemctl start named(主服务器配置好后再启动)
(3)验证
[root@localhost named]# dig www.kgc.com @192.168.174.20
; <<>> DiG 9.9.4-RedHat-9.9.4-50.el7 <<>> www.kgc.com @192.168.174.20
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22365
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.kgc.com. IN A
;; ANSWER SECTION:
www.kgc.com. 86400 IN A 192.168.174.40
;; AUTHORITY SECTION:
kgc.com. 86400 IN NS master.kgc.com.
;; ADDITIONAL SECTION:
master.kgc.com. 86400 IN A 192.168.174.20
4.分离解析
(1)环境设置
基础环境
服务器配置
[root@localhost ~]# systemctl stop firewalld.service (关闭防火墙)
[root@localhost ~]# setenforce 0 (关闭selinux)
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=6922c9f8-6bf7-4dee-89fc-12ae51df7a7b
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.100.1
NETMASK=255.255.255.0
:wq
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens37
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens37
DEVICE=ens37
ONBOOT=yes
IPADDR=12.0.0.1
NETMASK=255.255.255.0
:wq
Windows 7
验证环境
Windows 10
验证环境
(2)服务器配置
[root@localhost ~]# systemctl stop firewalld.service (关闭防火墙)
[root@localhost ~]# setenforce 0 (关闭selinux)
[root@localhost ~]# yum install bind bind-utils -y
[root@localhost ~]# vim /etc/named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
};
:wq
[root@localhost ~]# vim /etc/named.rfc1912.zones
view "lan" {
match-clients { 192.168.100.0/24; };
zone "kgc.com" IN {
type master;
file "kgc.com.lan";
};
zone "." IN {
type hint;
file "named.ca";
};
};
view "wan" {
match-clients { 12.0.0.0/24; };
zone "kgc.com" IN {
type master;
file "kgc.com.wan";
};
zone "." IN {
type hint;
file "named.ca";
};
};
:wq
[root@localhost ~]# cd /var/named
[root@localhost named]# cp -p named.localhost kgc.com.lan
[root@localhost named]# vim kgc.com.lan
$TTL 1D
@ IN SOA master.kgc.com. admin.kgc.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 192.168.100.1
www A 192.168.100.88
sftp A 192.168.100.99
:wq
[root@localhost named]# cp -p kgc.com.lan kgc.com.wan
cp:是否覆盖"kgc.com.wan"? y
[root@localhost named]# vim kgc.com.wan
$TTL 1D
@ IN SOA master.kgc.com. admin.kgc.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 12.0.0.1
www A 12.0.0.1
sftp A 12.0.0.1
:wq
[root@localhost named]# systemctl restart named
[root@localhost named]# rndc reload
server reload successful
(3)验证分离解析
Windows 7
Windows 10
获取成功
六、总结
今天主要讲了域名解析服务(DNS)的原理以及正反向解析,主从复制以及分离解析,希望大家通过我的博客可以了解并学习相关内容。