RHCE--web服务器③
作用:
-
DNS(Domain Name System)是互联网上的一项服务,用于将域名和IP地址进行相互映射,使人更方便的访问互联网
-
正向解析:域名->IP
-
反向解析:IP->域名
DNS域名解析过程


过程分析
第一步:在浏览器中输入www . google .com 域名,本地电脑会检查浏览器缓存中有没有这个域名对应的解析过的 IP 地址,如果缓存中有,这个解析过程就结束。浏览器缓存域名也是有限制的,不仅浏览器缓存大小有限制,而且缓存的时间也有限制,通常情况下为几分钟到几小时不等,域名被缓存的时间限制可以通过 TTL 属性来设置。这个缓存时间太长和太短都不太好,如果时间太长,一旦域名被解析到的 IP 有变化,会导致被客户端缓存的域名无法解析到变化后的 IP 地址,以致该域名不能正常解析,这段时间内有一部分用户无法访问网站。如果设置时间太短,会导致用户每次访问网站都要重新解析一次域名
第二步:如果浏览器缓存中没有数据,浏览器会查找操作系统缓存中是否有这个域名对应的 DNS 解析结果。其实操作系统也有一个[域名解析]的过程,在 Linux 中可以通过 / etc/hosts 文件来设置,而在 windows 中可以通过配置 C:\Windows\System32\drivers\etc\hosts 文件来设置,用户可以将任何域名解析到任何能够访问的 IP 地址。例如,我们在测试时可以将一个域名解析到一台测试服务器上,这样不用修改任何代码就能测试到单独服务器上的代码的业务逻辑是否正确。正是因为有这种本地 DNS 解析的规程,所以有黑客就可能通过修改用户的域名来把特定的域名解析到他指定的 IP 地址上,导致这些域名被劫持 。
第三步:前两步是在本地电脑上完成的,若无法解析时,就要用到我们网络配置中的 "DNS 服务器地址" 了。操作系统会把这个域名发送给这个本地 DNS 服务器。每个完整的内网通常都会配置本地 DNS 服务器。
第四步:如果本地 DNS 服务器仍然没有命中,就直接到根 DNS 服务器请求解析。
第五步:根 DNS 服务器返回给本地 DNS 域名服务器一个顶级 DNS 服务器地址,它是国际顶级域名服务器,如. com、.cn、.org 等,全球只有 13 台左右
第六步:本地 DNS 服务器再向上一步获得的顶级 DNS 服务器发送解析请求
第七步:接受请求的顶级 DNS 服务器查找并返回此域名对应的 Name Server 域名服务器的地址,这个 Name Server 服务器就是我要访问的网站域名提供商的服务器,其实该域名的解析任务就是由域名提供商的服务器来完成。 比如我要访问 www.baidu.com,而这个域名是从 A 公司注册获得的,那么 A 公司上的服务器就会有 www.baidu.com 的相关信息
第八步:返回该域名对应的 IP 和 TTL 值,本地 DNS 服务器会缓存这个域名和 IP 的对应关系,缓存时间由 TTL 值控制
第九步:Name Server 服务器收到查询请求后再其数据库中进行查询,找到映射关系后将其IP地址返回给本地DNS服务器
第十步:本地DNS服务器把解析的结果返回给本地电脑,本地电脑根据 TTL 值缓存在本地系统缓存中,域名解析过程结束在实际的 DNS 解析过程中,可能还不止这 10 步,如 Name Server 可能有很多级,或者有一个 GTM 来负载均衡控制,这都有可能会影响域名解析过程
注意:
-
从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间使用的交互查询就是迭代查询

搭建DNS域名解析服务器
安装软件
[root@server ~]# yum install bind -y
bind服务中三个关键文件
/etc/named.conf : 主配置文件
/etc/named.rfc1912.zones : 区域配置文件(zone),用于保存域名和ip对应关系文件位置的一个文件。
/var/named 目录
/var/named/named.localhost ----域名解析文件
主配置文件分析

一般需要修改三部分:
-
listen-on port 53 { 127.0.0.1; }; 即监听ip及端口-------ip也可以改为any,意思是可以监听所有主机
-
allow-query { localhost; }; 允许那些客户端访问------也可以改为any,意思是允许所有客户端来解析域名
-
recursion yes; 是否开启递归查询
区域配置文件
正向解析

配置时需要修改:localhost.localdomain---------这里改成你的根域名,例如:❗ 注意:只写根域名(openlab.com),不写 www,www 在解析文件里写。
type master; # 服务类型:master表示主服务器,slave表示从服务器,hint根服务器
file "named.localhost";----指定这个域名的解析记录存在哪个文件里。
文件默认路径:/var/named/ 系统默认用 named.localhost 存放本机域名解析。
# allow-update:允许更新解析库内容,一般关闭
# allow-query: 允许查询的主机,白名单
# allow-tranfter : 允许同步的主机,白名单,常用
# allow-recursion: 允许递归的主机
反向解析:

zone "0.in-addr.arpa" IN {含义
in‑addr.arpa 是反向解析固定格式,用来做「IP → 域名」解析。 格式规则:网段倒着写,只需书写网段即可
- 你的 IP 网段:
192.168.88.0/24 - 倒过来就是:
88.168.192.in‑addr.arpa
正向解析资源文件
查看:
[root@server ~]# vim /var/named/named.localhost

$TTL 1D # 设置生存周期时间,为1天,$表示宏定义
@ (权威服务器的名字) IN (intelnet) SOA @ (负责解析baidu.com的 DNS 服务器是 ns.baidu.com) rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns.域名.
baidu.com. IN NS ns.baidu.com.------用于告知客户端baidu.com这个区域的负责权威域名解析的主机是ns.baidu.com
这个机子的ip就在下方写
ns.baidu.com. IN A 192.168.88.150-------A用于映射主机域名和IP的关系
ns IN A 域名解析服务器IP地址
www IN A 域名解析服务器IP地址
bbs IN A 域名解析服务器IP地址
mail IN A 域名解析服务器IP地址
① @
代表当前区域的根域名
- 正向解析:
@=openlab.com - 反向解析:
@=88.168.192.in‑addr.arpa
② SOA
起始授权记录,DNS 必须有这条,代表这个区域的管理员信息
③ 第一个 @
= 当前 DNS 服务器的域名,必须改成你的 DNS 服务器域名 例:ns.openlab.com.
③ rname.invalid.
管理员邮箱,rname.invalid. = 系统默认无效邮箱
- 格式:把
@换成.,比如123.qq.com.(代表邮箱 123@qq.com)
反向解析资源文件
[root@server ~]# vim /var/named/named.loopback
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns.域名. # 域名服务器记录,注意结尾的点
ns IN A 域名解析服务器的IP地址
IP地址 PTR 域名. # PTR 指针记录,用于反向解析
实验1:正向解析
准备工作
# 服务端及客户端都关闭安全软件
[root@server ~]# setenforce 0
[root@server ~]# systemctl stop firewalld
# 服务端安装bind软件
[root@server ~]# yum install bind -y
DNS配置
第二步:服务端操作,编辑区域配置文件,可以选择一个模版修改局部(推荐),也可以全部清空重启写入数据
[root@server ~]# vim /etc/named.rfc1912.zones
zone "baidu.com" IN { # 双引号中输入,表示管理那个区域
type master;
file "baidu.com.zone"; # 双引号中输入,表示ip和域名解析的配置文件的名称,注意:不写路径
allow-update { none; };
};
第三步:服务端操作,编辑数据配置文件,使用拷贝命令将模版文件(/var/named/named.localhost)复制一份在修改局部,注意:拷贝时需要加-a参数,即拷贝内容及文件属性保证文件内容一致、权限等信息不变
[root@server ~]# cd /var/named # 切换到数据配置文件存储路径
[root@server named]# ls
data dynamic named.ca named.empty named.localhost named.loopback slaves
[root@server named]# cp -a named.localhost baidu.com.zone # -a 完整拷贝
[root@server named]# vim openlab.com.zone # 完整格式修改如下

第四步:服务端重启服务
[root@server named]# systemctl restart named
测试
定义客户端,将客户端的dns修改为服务端的IP地址
[root@node1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32
dns=192.168.88.150; # dns改为服务端的IP地址
[root@node1 ~]# nmcli c reload
[root@node1 ~]# nmcli c up ens32
定位客户端测试

nslookup ----- 进入交互模式

注意:第三步数据配置文件可以进行精简
精简原则:
-
可以使用@替代域名,如@替代openlab.com.
-
可以使用空格或tab重复继承上一行第一列的值
-
可以省略域名,会自动补全,如:www为www.openlab.com.
-
配置文件可以省略如下:

实验2:反向解析
DNS设置
第一步:服务端操作,编辑主配置文件
[root@server ~]# vim /etc/named.conf
# 需改2行
listen-on port 53 { any; }; # any为允许所有主机
allow-query { 192.168.48.131; }; # 此处也可以写为IP地址
第二步:服务端操作,编辑区域配置文件,添加反向解析记录,注意:区域名称中IP地址反向书写,只需书写网段号
[root@server named]# vim /etc/named.rfc1912.zones
zone "48.168.192.in-addr.arpa" IN {
type master;
file "192.168.48.arpa";-----文件名见名知意
allow-update { none; };
};
第三步:服务端操作,编辑数据配置文件,复制一份反向解析模(/var/named/named.loopback),复制时需要加-a 参数,在修改局部即可
[root@server ~]# cd /var/named
[root@server named]# ls
data dynamic named.ca named.empty named.localhost named.loopback slaves
[root@server named]# cp -a named.loopback 192.168.88.arpa
[root@server named]# vim 192.168.88.arpa

第四步:重启服务
[root@server named]# systemctl restart named
客户端测试

部署DNS从服务器
作用:
-
DNS作为重要的互联网基础设施服务,保证 DNS 域名解析服务的正常运转至关重要,只有这样才能提供稳定、快速且不间断的域名查询服务
-
DNS 域名解析服务中,从服务器可以从主服务器上获取指定的区域数据文件,从而起到备份解析记录与负载均衡的作用,因此通过部署从服务器可以减轻主服务器的负载压力,还可以提升用户的查询效率
-
注意:
-
时间同步必须保持一致性
-
bind最好使用同一版本
-
实验3:主从DNS服务器
完全区域传送
- 将一个区域文件复制到多个服务器上的过程叫做区域传送
- 将主服务器上的所有信息复制到辅助服务器上来实现完全区域传送,即复制整个区域文件
服务器说明:
| 设备 | IP | 系统 |
|---|---|---|
| 主服务器 | 192.168.88.150 | Euler |
| 从服务器 | 192.168.88.151 | Euler |
第一步:两个服务器恢复快照,预处理、安装软件、设置网卡信息
第二步:主服务端操作,编辑主配置文件设置监听IP
# 主服务端操作:
[root@server ~]# vim /etc/named.conf
listen-on port 53 { 192.168.88.150; }; # {}中改为any。也可写为本机IP
allow-query { any; }; # {}中改为any,也可写为服务端
第三步:主服务端操作打开区域配置文件,添加如下内容,重点为:允许从服务器的同步请求,即修改为 allow-transfer {允许同步区域信息的主机IP;};参数
[root@server ~]# vim /etc/named.rfc1912.zones
# 修改为以下内容:
zone "openlab.com" IN {
type master;
file "openlab.com.zone";
allow-transfer { 192.168.88.151; };
};
zone "48.168.192.in-addr.arpa" IN {
type master;
file "192.168.48.arpa";
allow-transfer { 192.168.8.151; };
};
第四步:主服务端操作,设置正反向解析数据配置文件,内容如下
# 正向解析:
[root@server ~]# cd /var/named
[root@server ~]# ls
[root@server ~]# cp -a named.localhost baidu.com.zone
[root@server ~]# vim baidu.com.zone

# 反向解析:
[root@server ~]# cd /var/named
[root@server ~]# ls
[root@server ~]# cp -a named.loopback 192.168.88.arpa
[root@server ~]# vim /var/named/192.168.88.arpa
#配置内容如下:

第五步:主服务端操作,重启服务
[root@server ~]# systemctl restart named
第六步:从服务端操作,修改主配置文件:
[root@node1 ~]# vim /etc/named.conf
11 listen-on port 53 { 192.168.88.131; }; ---从服务端的ip
19 allow-query { any; };
第七步:从服务端操作,修改区域配置文件,填写主服务器的 IP 地址与要抓取的区域信息,注意此时的服务类型应该是 slave(从)


第八步:从服务端操作,重启服务,注意:当从服务器的 DNS 服务程序在重启后,就自动从主服务器上同步了数据配置文件,且该文件默认会放置在区域配置文件中所定义的目录位置中
[root@node1 ~]# cd /var/named/slaves
[root@node1 ~]# ls # 启动服务前查看解析配置文件为空
[root@node1 ~]# systemctl start named
[root@node1 ~]# ls # 启动服务后自动拉取
第九步:从服务端操作,确认从服务端的网卡DNS地址修改为自己的IP:192.168.88.131,使从服务器自身也能提供的 DNS 域名解析服务,在进行测试
[root@node1 ~]# nslookup www.openlab.com
[root@node1 ~]# nslookup 192.168.48.130
实验4:增量区域传送
- 功能:仅复制区域里变化的文
[root@server ~]# vim /var/named/openlab.com.zone
$TTL 1D
@ IN SOA baidu.com. admin.baidu.com. (
1 ; serial # 修改,需要加1
3 ; refresh # 修改
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.baidu.com.
NS slave.openlab.com.
ns IN A 192.168.48.130
www IN A 192.168.48.130
bbs IN A 192.168.48.130
mail IN A 192.168.48.130 # 添加
ftp IN CNAME www
slave IN A 192.168.48.131
www1 IN CNAME www # 添加
# 注意:1 ; serial 处的序号数字必须加1,否则从服务端不更新
第二步:主服务端操作,重启服务
[root@server ~]# systemctl restart named
第三步:从服务端操作,重启服务
[root@node1 ~]# systemctl restart named
第四步:从服务端操作,测试
[root@node1 ~]# nslookup mail.baidu.com
[root@node1 ~]# nslookup www1.baidu.com
实验4:客户端访问外部网站,
客户端要问DNS服务器网站的域名解析地址是多少,找到之后把域名返回给客户,客户端再拿这个地址找网站

客户端要问DNS服务器网站的域名解析地址是多少,找到之后把域名返回给客户,客户端再拿这个地址找网站

| node2 | web网站 |
| master | DNS |
第一步:创建web网站
[root@web ~]# mkdir /www/sczl
[root@web ~]# echo "sczl" > /www/sczl/index.html
第二步:
[root@web ~]# yum install nginx -y
第三步:编写配置文件

第四步:重启服务
[root@web ~]# systemctl restart nginx
[root@web ~]# curl 192.168.88.150
sczl
第五步选择一个为DNS的设备
第一步:
[root@web ~]# yum install nginx -y
第二步:编辑主配置文件
vim /etc/named.conf

第三步
vim /etc/named.rfc1912.zones
配置正向解析模版

第四步:
cp -a /var/named/named.locahost /var/named/sczl.com.zone
第五步:编写数据配置文件
vim /var/named/sczl.com.zone

第六步:启动服务
systemctl enable --now named
客户端配置
DNS的ip要改为,DNS域名解析服务器的,并激活
[root@node1 ~]# nmcli c up ens32
测试
查这个网站域名对应的 IP 是多少。
nslookup www.sczl.com
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐



所有评论(0)