当前位置 : 主页 > 操作系统 > centos >

DNS工作原理及主从DNS服务器配置

来源:互联网 收集:自由互联 发布时间:2022-06-20
1 名字解析介绍和DNS 当前TCP/IP网络中的设备之间进行通信,是利用和依赖于IP地址实现的。但数字形式的IP地址是很难记忆的。当网络设备众多,想要记住每个设备的IP地址,可以说是“

1 名字解析介绍和DNS

当前TCP/IP网络中的设备之间进行通信,是利用和依赖于IP地址实现的。但数字形式的IP地址是很难记忆的。当网络设备众多,想要记住每个设备的IP地址,可以说是“不可能完成的任务”。那么如何解决这一难题呢?我们可以给每个网络设备起一个友好的名称,如:www.magedu.org,这种由文字组成的名称,显而易见要更容易记忆。但是计算机不会理解这种名称的,我们可以利用一种名字解析服务将名称转化成(解析)成IP地址。从而我们就可以利用名称来直接访问网络中设备了。除此之外还有一个重要功能,利用名称解析服务可以实现主机和IP的解耦,即:当主机IP变化时,只需要修改名称服务即可,用户仍可以通过原有的名称进行访问而不受影响。

实现此服务的方法是多样的。如下面所述:

本地名称解析配置文件:hosts

  • Linux: /etc/hosts

  • windows: %WINDIR%/system32/drivers/etc/hosts

    122.10.117.2 www.magedu.org

    93.46.8.89 www.google.com

DNS:Domain Name System 域名系统,应用层协议,是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。

基于C/S架构,服务器端:53/udp, 53/tcp

BIND:Bekerley Internet Name Domain,由 ISC (www.isc.org)提供的DNS软件实现DNS域名结构

  • 根域

  • 一级域名:Top Level Domain: tld

    com, edu, mil, gov, net, org, int,arpa

    三类:组织域、国家域(.cn, .ca, .hk, .tw)、反向域

  • 二级域名:magedu.com

  • 三级域名:study.magedu.com

  • 最多可达到127级域名

ICANN(The Internet Corporation for Assigned Names and Numbers)互联网名称与数字地址分配机构,负责在全球范围内对互联网通用顶级域名(gTLD)以及国家和地区顶级域名(ccTLD)系统的管理、以及根服务器系统的管理

1.1 DNS工作原理

  第一步:客户机提出域名解析请求,并将该请求发送给本地的域名服务器。  第二步:当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回。  第三步:如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域) 的主域名服务器的地址。  第四步:本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址。  第五步:重复第四步,直到找到正确的纪录。  第六步:本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。

1.2 DNS查询类型

  • 递归查询:最终结果,负责到底
  • 迭代查询:最好结果,不负责到底

1.3 名称服务器

Name Server,域内负责解析本域内的名称的DNS服务器

IPv4的根名称服务器:全球共13个负责解析根域的DNS服务器,美国10个,荷兰1,瑞典1,日本1

IPv6的根名称服务器:全球共25个,中国1主3从,美国1主2从

1.4 解析类型

  • FQDN --> IP 正向解析
  • IP --> FQDN 反向解析

注意:正反向解析是两个不同的名称空间,是两棵不同的解析树

1.5 完整的查询请求经过的流程

Client -->hosts文件 --> Client DNS Service Local Cache --> DNS Server (recursion 递归) --> DNS Server Cache -->DNS iteration(迭代) --> 根--> 顶级域名DNS-->二级域名 DNS…

1.6 DNS服务器的类型

  • 主DNS服务器
  • 从DNS服务器
  • 缓存DNS服务器(转发器)

1.6.1 主DNS服务器

管理和维护所负责解析的域内解析库的服务器

1.6.2 从DNS服务器

从主服务器或从服务器“复制”(区域传输)解析库副本

  • 序列号:解析库版本号,主服务器解析库变化时,其序列递增
  • 刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
  • 重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
  • 过期时长:从服务器联系不到主服务器时,多久后停止服务
  • 通知机制:主服务器解析库发生变化时,会主动通知从服务器

1.7实现DNS主从服务器

1.7.1 实验目的

搭建DNS主从服务器架构,实现DNS服务冗余

1.7.2 环境要求

需要四台主机 DNS主服务器:192.168.100.8 DNS从服务器:192.168.100.18 web服务器:192.168.100.7 web服务器:192.168.100.17 DNS客户端:192.168.100.27

1.7.3 前提准备

关闭SElinux 关闭防火墙 时间同步

1.7.4 主从DNS服务器基本配置

1.7.4.1 主DNS服务端配置

yum install bind -y vim /etc/named.conf #注释掉下面两行 // listen-on port 53 { 127.0.0.1; }; // allow-query { localhost; }; #只允许从服务器进行区域传输 allow-transfer { 从服务器IP;}; vim /etc/named.rfc1912.zones #加上这段 zone "magedu.org" { type master; file "magedu.org.zone"; }; cp -p /var/named/named.localhost /var/named/magedu.org.zone #如果没有-p,需要改权限。chgrp named magedu.org.zone vim /var/named/magedu.org.zone $TTL 1D @ IN SOA master admin.magedu.org. ( 1 1D 1H 1W 3H ) NS master NS slave master A 192.168.100.8 slave A 192.168.100.18 systemctl start named #第一次启动服务 rndc reload #不是第一次启动服务

1.7.4.2 从DNS服务器配置

yum install bind -y vim /etc/named.conf // listen-on port 53 { 127.0.0.1; }; // allow-query { localhost; }; #不允许其它主机进行区域传输 allow-transfer { none;}; vim /etc/named.rfc1912.zones zone "magedu.org" { type slave; masters { 主服务器IP;}; file "slaves/magedu.org.slave"; }; systemctl start named #第一次启动服务 rndc reload #不是第一次启动服务 ls /var/named/slaves/magedu.org.slave #查看区域数据库文件是否生成

1.7.4.3 客户端测试主从DNS服务架构

vim /etc/sysconfig/network-scripts/ifcfg-eth0 DNS1=主服务器 DNS2=从服务器 #验证从DNS服务器是否可以查询 dig www.magedu.org curl www.magedu.org #在主服务器上停止DNS服务 systemctl stop named #验证从DNS服务器仍然可以查询 dig www.magedu.org curl www.magedu.org

1.7.5 主从DNS配置实例

1、主DNS服务器配置 #为保证dns信息的安全,需要在主dns服务器上做限制,修改主配置文件named.conf,添加allow-transfer [root@c8-dns ~]# yum install -y bind;systemctl enable --now named [root@c8-dns ~]# cat /etc/named.conf options { // listen-on port 53 { localhost; }; // allow-query { any; }; allow-transfer { 192.168.100.18; }; [root@c8-dns ~]# vim /etc/named.rfc1912.zones #加上这段 zone "magedu.org" IN { type master; file "magedu.org.zone"; }; [root@c8-dns ~]# vim /var/named/magedu.org.zone $TTL 1D @ IN SOA master admin.magedu.org. ( 1 1D 1H 1W 3H ) NS master NS slave master A 192.168.100.8 slave A 192.168.100.18 www CNAME websrv websrv A 192.168.100.110 websrv A 192.168.100.111 [root@c8-dns ~]# chgrp named magedu.org.zone [root@c8-dns ~]# rndc reload server reload successful 2、从DNS服务器配置 #从服务器还需要在主配置named.conf中添加allow-transfer [root@c8-slave ~]# vim /etc/named.conf // listen-on port 53 { 127.0.0.1; }; // allow-query { localhost; }; allow-transfer { none; }; [root@c8-slave ~]# cat /etc/named.rfc1912.zones zone "magedu.org" IN { type slave; masters { 192.168.100.8; }; file "slaves/magedu.org.zone.slave"; }; [root@c8-slave ~]# rndc reload server reload successful [root@c8-slave ~]# ll /var/named/slaves/magedu.org.zone.slave -rw-r--r-- 1 named named 312 May 20 09:31 /var/named/slaves/magedu.org.zone.slave 3、web01和web02服务器配置 [root@web01 ~]# cat /etc/resolv.conf nameserver 192.168.100.8 [root@web01 ~]# yum install -y httpd;systemctl enable --now httpd;echo www.magedu.org on 192.168.100.110 >/var/www/html/index.html [root@web01 ~]# cat /var/www/html/index.html www.magedu.org on 192.168.100.110 [root@web02 ~]# cat /etc/resolv.conf nameserver 192.168.100.8 [root@web02 ~]# yum install -y httpd;systemctl enable --now httpd;echo www.magedu.org on 192.168.100.111 >/var/www/html/index.html [root@web02 ~]# cat /var/www/html/index.html www.magedu.org on 192.168.100.111 4、客户端配置及测试 [root@c7-client ~]# cat /etc/resolv.conf # Generated by NetworkManager nameserver 192.168.100.8 nameserver 192.168.100.18 [root@c7-client ~]# host www.magedu.org www.magedu.org is an alias for websrv.magedu.org. websrv.magedu.org has address 192.168.100.111 websrv.magedu.org has address 192.168.100.110 [root@c7-client ~]# curl www.magedu.org www.magedu.org in 192.168.100.111 [root@c7-client ~]# curl www.magedu.org www.magedu.org on 192.168.100.110 #测试web服务器的冗余,停掉web01(100.110),访问的都是保存在web02上的网页信息 [root@web01 ~]# systemctl stop httpd [root@c7-client ~]# curl www.magedu.org www.magedu.org in 192.168.209.111 [root@c7-client ~]# curl www.magedu.org www.magedu.org in 192.168.209.111 #测试dns主从冗余,停掉主dns服务器(100.8),可以正常访问web01或web02上的网页信息 [root@c8-dns ~]# systemctl stop named [root@web01 ~]# systemctl start httpd [root@c7-client ~]# curl www.magedu.org www.magedu.org in 192.168.209.111 [root@c7-client ~]# curl www.magedu.org www.magedu.org on 192.168.209.110

2 实现Internet 的DNS 服务架构

2.1 实验目的

搭建DNS实现internet dns架构

2.2 环境要求

需要8台主机 DNS客户端:192.168.100.6/24 本地DNS服务器(只缓存):192.168.100.8/24 转发目标DNS服务器:192.168.100.18/24 根DNS服务器:192.168.100.28/24 org域DNS服务器:192.168.100.38/24 magedu.org域主DNS服务器:192.168.100.48/24 magedu.org域从DNS服务器:192.168.100.58/24 www.magedu.org的WEB服务器:192.168.100.68/24

2.3 前提准备

关闭SElinux 关闭防火墙 时间同步

2.4 实现步骤

2.4.1 各种主机的网络配置

#在客户端配置DNS服务器地址 [root@client ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE="eth0" BOOTPROTO="none" ONBOOT="yes" TYPE="Ethernet" IPADDR=192.168.100.6 PREFIX=24 GATEWAY=192.168.100.2 DNS1=192.168.100.8 [root@client ~]# service network restart

2.4.2 实现WEB服务

#在web服务器192.168.100.68/24上实现 [root@web ~]# yum install -y httpd;systemctl enable --now httpd [root@web ~]# echo www.magedu.org > /var/www/html/index.html [root@web ~]# systemctl restart httpd [root@web ~]# cat /var/www/html/index.html www.magedu.org

2.4.3 实现magedu.org域的主DNS服务器

#在magedu.org域主DNS服务器192.168.100.48/24上实现 [root@master-dns ~]# yum install bind -y;systemctl enable --now named [root@master-dns ~]# cat /etc/named.conf options { // listen-on port 53 { 127.0.0.1; }; // allow-query { localhost; }; allow-transfer { 192.168.100.58; }; [root@master-dns ~]# cat /etc/named.rfc1912.zones #添加magedu.org zone "magedu.org" IN { type master; file "magedu.org.zone"; }; [root@master-dns ~]# cat /var/named/magedu.org.zone $TTL 1D @ IN SOA master admin.magedu.org. ( 1 1D 1H 1W 3H ) NS master NS slave master A 192.168.100.48 slave A 192.168.100.58 www A 192.168.100.68 [root@master-dns ~]# chgrp named /var/named/magedu.org.zone;chmod 640 /var/named/magedu.org.zone [root@master-dns ~]# ll /var/named/magedu.org.zone -rw-r----- 1 root named 149 May 23 15:34 /var/named/magedu.org.zone [root@master-dns ~]# rndc reload server reload successful

2.4.4 实现magedu.org域的从DNS服务器配置

#在magedu.org域从DNS服务器192.168.100.58/24上实现 [root@slave-dns ~]# yum install bind -y;systemctl enable --now named [root@slave-dns ~]# cat /etc/named.conf options { // listen-on port 53 { 127.0.0.1; }; // allow-query { localhost; }; allow-transfer { none; }; [root@slave-dns ~]# cat /etc/named.rfc1912.zones zone "magedu.org" IN { type slave; file "slaves/magedu.org.zone"; masters { 192.168.100.48; }; }; #查看区域数据库文件是否生成 [root@slave-dns ~]# ll /var/named/slaves/ total 0 [root@slave-dns ~]# rndc reload server reload successful [root@slave-dns ~]# ll /var/named/slaves/ total 4 -rw-r--r-- 1 named named 319 May 23 03:51 magedu.org.zone #测试一下 [root@c7-test ~]# host www.magedu.org 192.168.100.48 Using domain server: Name: 192.168.100.48 Address: 192.168.100.48#53 Aliases: www.magedu.org has address 192.168.100.68 [root@c7-test ~]# host www.magedu.org 192.168.100.58 Using domain server: Name: 192.168.100.58 Address: 192.168.100.58#53 Aliases: www.magedu.org has address 192.168.100.68

2.4.5 实现org域的主DNS服务器

#在org域的主DNS服务器192.168.100.38/24上实现 [root@org-dns ~]# yum install -y bind;systemctl enable --now named [root@org-dns ~]# vim /etc/named.conf #注释掉两行 // listen-on port 53 { 127.0.0.1; }; // allow-query { localhost; }; [root@org-dns ~]# vim /etc/named.rfc1912.zones #加上这段 zone "org" IN { type master; file "org.zone"; }; [root@org-dns ~]# cat /var/named/org.zone $TTL 1D @ IN SOA master admin.magedu.org. ( 1 1D 1H 1W 3H ) NS master magedu NS mageduns1 magedu NS mageduns2 master A 192.168.100.38 mageduns1 A 192.168.100.48 mageduns2 A 192.168.100.58 [root@org-dns ~]# chgrp named /var/named/org.zone [root@org-dns ~]# ll /var/named/org.zone -rw-r----- 1 root named 193 May 23 04:30 /var/named/org.zone [root@org-dns ~]# rndc reload server reload successful #测试,说明magedu子域管理成功 [root@c7-test ~]# host www.magedu.org 192.168.100.38 Using domain server: Name: 192.168.100.38 Address: 192.168.100.38#53 Aliases: www.magedu.org has address 192.168.100.68

2.4.6 实现根域的主DNS服务器

#在根域的主DNS服务器192.168.100.28/24上实现 [root@root-dns ~]# yum install -y bind;systemctl enable --now named [root@root-dns ~]# vim /etc/named.conf #注释掉两行,第13行和第21行 // listen-on port 53 { 127.0.0.1; }; // allow-query { localhost; }; #将下面行改为: zone "." IN { type master; file "root.zone"; }; [root@root-dns ~]# cat /var/named/root.zone $TTL 1D @ IN SOA master admin.magedu.org. ( 1 1D 1H 1W 3H ) NS master org NS orgns master A 192.168.100.28 orgns A 192.168.100.38 [root@root-dns ~]# chgrp named /var/named/root.zone [root@root-dns ~]# ll /var/named/root.zone -rw-r----- 1 root named 135 May 23 04:37 /var/named/root.zone [root@root-dns ~]# rndc reload server reload successful #测试,根域也没问题 [root@c7-test ~]# host www.magedu.org 192.168.100.28 Using domain server: Name: 192.168.100.28 Address: 192.168.100.28#53 Aliases: www.magedu.org has address 192.168.100.68

2.4.7 实现转发目标的DNS服务器

#在转发目标的DNS服务器192.168.100.18/24上实现 [root@forward ~]# yum install -y bind;systemctl enable --now named [root@forward ~]# cat /etc/named.conf #注释掉两行,第13行和第21行 // listen-on port 53 { 127.0.0.1; }; // allow-query { localhost; }; [root@forward ~]# cat /var/named/named.ca ;; ANSWER SECTION: . 518400 IN NS a.root-servers.net. ;; ADDITIONAL SECTION: a.root-servers.net. 518400 IN A 192.168.100.28 [root@forward ~]# rndc reload server reload successful [root@c7-test ~]# host www.magedu.org 192.168.100.18 Using domain server: Name: 192.168.100.18 Address: 192.168.100.18#53 Aliases: Host www.magedu.org not found: 2(SERVFAIL) #因为named.conf文件中还有两项安全配置需要去掉,修改如下 [root@forward ~]# cat /etc/named.conf #注释掉两行,第13行和第21行 // listen-on port 53 { 127.0.0.1; }; // allow-query { localhost; }; dnssec-enable no; dnssec-validation no; #再次测试,成功 [root@c7-test ~]# host www.magedu.org 192.168.100.18 Using domain server: Name: 192.168.100.18 Address: 192.168.100.18#53 Aliases: www.magedu.org has address 192.168.100.68

2.4.8 实现本地只缓存DNS服务器

#在转发目标的DNS服务器192.168.100.8/24上实现 [root@local-dns ~]# yum install -y bind;systemctl enable --now named [root@local-dns ~]# vim /etc/named.conf #注释掉两行,第13行和第21行 // listen-on port 53 { localhost; }; // allow-query { any; }; forward only; forwarders { 192.168.100.18; }; dnssec-enable no; dnssec-validation no; [root@local-dns ~]# rndc reload server reload successful #同上个服务器(100.18) [root@c7-test ~]# host www.magedu.org 192.168.100.8 Using domain server: Name: 192.168.100.8 Address: 192.168.100.8#53 Aliases: www.magedu.org has address 192.168.100.68

2.4.9 客户端测试

[root@c7-test ~]# cat /etc/resolv.conf nameserver 192.168.100.8 [root@c7-test ~]# host www.magedu.org www.magedu.org has address 192.168.100.68 [root@c7-test ~]# dig www.magedu.org ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.5 <<>> www.magedu.org ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7875 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.magedu.org. IN A ;; ANSWER SECTION: www.magedu.org. 86154 IN A 192.168.100.68 ;; AUTHORITY SECTION: magedu.org. 86154 IN NS mageduns2.org. magedu.org. 86154 IN NS mageduns1.org. ;; ADDITIONAL SECTION: mageduns1.org. 86154 IN A 192.168.100.48 mageduns2.org. 86154 IN A 192.168.100.58 ;; Query time: 9 msec ;; SERVER: 192.168.100.8#53(192.168.100.8) ;; WHEN: Sun May 23 18:10:45 CST 2021 ;; MSG SIZE rcvd: 139 [root@c7-test ~]# curl www.magedu.org www.magedu.org

2.4.10 测试主从服务器的容错能力

#停掉DNS主服务器100.48,从服务器100.58能否正常访问 [root@master-dns ~]# systemctl stop named #清除所有机器的缓存 rndc flush #再次测试,正常 [root@c7-test ~]# curl www.magedu.org www.magedu.org
上一篇:Gitlab数据备份和恢复
下一篇:没有了
网友评论