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