RHCE 作业五(DNS解析流程详解)

发布于:2023-02-06 ⋅ 阅读:(682) ⋅ 点赞:(0)

目录

1.DNS的解析流程

2.DNS主从配置: 需要两台机器: 一台为主dns服务器,一台为从DNS服务器

3.使用httpd服务演示安全上下文值的设定(selinux)

4.使用web服务端口的改变来演示端口的设定(selinux)


1.DNS的解析流程

  • 第一步:浏览器将会检查缓存中有没有这个域名对应的解析过的IP地址,如果有该解析过程将会结束。浏览器缓存域名也是有限制的,包括缓存的时间、大小,可以通过TTL属性来设置。

  • 第二步:如果用户的浏览器中缓存中没有,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。

  • 第三步:如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。

    本地dns缓存:

    C:\Users\俗人不俗>ipconfig /displaydns  #显示本地dns缓存
    ……
    ​
    C:\Users\俗人不俗>ipconfig /flushdns    #刷新缓存
    Windows IP 配置
    已成功刷新 DNS 解析缓存。
  • 第四步:如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。

  • 第五步:如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。

  • 第六步:如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找域名域服务器,重复上面的动作,进行查询,直至找到域名对应的主机。

  • 第七步:如果用的是转发模式此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。

2.DNS主从配置: 需要两台机器: 一台为主dns服务器,一台为从DNS服务器

1、配置主服务器

#安装bind
[root@localhost ~]# yum install bind -y
#配置主服务器的主配置文件
[root@server ~]# vim /etc/named.conf 
options {
        listen-on port 53 { 192.168.5.128; };#修改为主服务器的ip
        #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";
        secroots-file   "/var/named/data/named.secroots";
        recursing-file  "/var/named/data/named.recursing";
        allow-query     { 192.168.5.0/24; };#配置允许查询的网段
        allow-transfer  { 192.168.5.129; }; #添加这里,从DNS的IP地址
		……
#添加这里
zone "openlab.com" IN {
   type master;
   file "openlab.zone";
}
#配置主服务器的openlab区域文件
[root@server ~]# vim /var/named/openlab.zone 
$TTL 1D
@       IN SOA dns.openlab.com. test.163.com (
                                                10
                                                1D
                                                1H
                                                1W
                                                3H )
        IN NS dns.openlab.com.
        IN MX 10 mail.openlab.com.
        IN NS dns2.openlab.com.
mail.opwnlab.com. IN A 192.168.5.200
dns.openlab.com.  IN A 192.168.5.128
dns2.openlab.com. IN A 192.168.5.129
ftp               IN A 192.168.5.200
dhcp              IN A 192.168.5.200
www               IN A 192.168.5.200
web               IN CNAME www
#重启服务
[root@server ~]# systemctl restart named
#验证能否解析
[root@server ~]# nslookup dns2.openlab.com 192.168.5.128
Server:		192.168.5.128
Address:	192.168.5.128#53

Name:	dns2.openlab.com
Address: 192.168.5.129    #可以解析,配置正确

2、配置从服务器

#安装bind
[root@localhost ~]# yum install bind -y
#添加配置从服务器的主配置文件
[root@client ~]# vim /etc/named.conf
……
zone "openlab.com" IN {
        type slave;
        masters { 192.168.5.128; };
        file "slaves/openlab.zone";
};
……
#重启服务
[root@server ~]# systemctl restart named
#查看/var/named/slaves目录
[root@client ~]# cd /var/named/slaves/
[root@client slaves]# ll
total 4
-rw-r--r--. 1 named named 522 Jul 30 15:12 openlab.zone

3.使用httpd服务演示安全上下文值的设定(selinux)

服务端的IP地址为172.24.8.130,服务端的设置如下:

[root@localhost ~]# systemctl restart firewalld
[root@localhost ~]# firewall-cmd --permanent --add-service=http 
success
[root@localhost ~]# firewall-cmd --reload 
success
[root@localhost ~]# getenforce 
Enforcing
[root@localhost ~]# vim /etc/httpd/conf.d/host.conf
<directory /www>
    allowoverride none
    require all granted
</directory>
<virtualhost 192.168.5.128:80>
    documentroot /www/80
    servername 192.168.5.128
</virtualhost>
[root@localhost ~]# mkdir -pv /www/80 
[root@localhost ~]# echo this is 80 > /www/80/index.html
[root@localhost ~]# systemctl restart httpd

通过客户端测试,只能访问到http服务的测试界面 修改自定义目录的安全上下文的值:

[root@localhost ~]# chcon -t httpd_sys_content_t /www/ -R

也可以将自定义目录的安全上下文的值按照/var/www/html文件修改:

[root@localhost ~]# chcon -R --reference=/var/www/html /www

修改之后即可成功访问。

4.使用web服务端口的改变来演示端口的设定(selinux)

[root@localhost ~]# vim /etc/httpd/conf.d/host.conf 
[root@localhost ~]# mkdir /www/8888
[root@localhost ~]# echo this is 8888 > /www/8888/index.html
[root@localhost ~]# systemctl restart httpd 
#服务重启失败,查看日志
[root@localhost ~]# tail -f /var/log/messages 
[root@localhost ~]# firewall-cmd --permanent --add-port=8888/tcp
success
[root@localhost ~]# firewall-cmd --reload 
success
#添加8888端口为服务端口:
[root@localhost ~]# semanage port -a -t http_port_t -p tcp 8888
[root@localhost ~]# systemctl restart httpd 
#访问成功

本文含有隐藏内容,请 开通VIP 后查看