运维之道 | DNS 服务搭建及主从配置、配置宿主机DNS解析及验证httpd域名

前言

在互联网上通信需要借助于IP地址进行访问,但人类对于数字的记忆能力远不如文字,那么将IP地址转换成容易记忆的文字是个好办法,可是计算机只能识别0、1代码,这时就需要一种机制来解决IP地址与主机名的转换问题,DNS全称为Domain Name System,即域名系统,其作用就是将我们经常使用的"网址"解析为IP地址,联机分布式数据库系统,DNS大多数名字在本地解析,仅少量需要在网上通讯,所以效率高。

1、DNS服务器的作用
  • 正向解析:根据主机名称(域名)查找对应的IP地址
  • 反向解析:根据IP地址查找对应的主机域名
2、DNS系统的分布式数据结构

运维之道 | DNS 服务搭建及主从配置、配置宿主机DNS解析及验证httpd域名_第1张图片

3、DNS查询步骤

第一步:客户机访问某个网站,请求域名解析,首先查找本地HOSTS文件,如果有对应域名、IP记录,直接返回给客户机。如果没有则将该请求发送给本地的域名解析服务器;
第二步:本地DNS域名解析服务器能够解析客户端发来的请求,服务器直接将答案返回给客户机。
第三步:本地DNS服务器不能解析客户端发来的请求,分为两种解析方法:

  • 递归查询:大多数客户机向DNS服务器解析域名的方式;

递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。(一条龙服务,帮你搞定)

  • 迭代查询:大多数DNS服务器向其他DNS服务器解析域名的方式;

迭代查询就是:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时要么给出所要查询的IP地址要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机。(告诉你方式,你自己去查)

4、DNS服务器的类型
  • 缓存域名服务器cache:也称唯高速缓存服务器,通过向其他域名服务器查询获得域名->IP地址记录,将域名查询结果缓存到本地,提高重复查询时的速度;
  • 主域名服务器master:特定DNS区域的官方服务器,具有唯一性,负责维护该区域内所有域名->IP地址的映射记录;
  • 从域名服务器slave:也称为辅助域名服务器,其维护的域名->IP地址记录来源于主域名服务器;
5、BIND域名服务基础

BIND(Berkeley Internet Name Daemon)伯克利Internet域名服务

  • 主要执行程序:/usr/sbin/named
  • 服务脚本:/etc/init.d/named
  • 默认监听端口:53
  • 主配置文件:/etc/named.conf
  • 区域配置文件:/etc/named.rfc1912.zones 用来保存域名和IP地址对应关系
  • 保存DNS解析记录的数据文件:/var/named/chroot/var/named/
6、DNS服务器解析

DNS的主要作用是进行主机名的解析

解析:

根据用户提供一种名称,去查询解析库,以得到另一种名称。 域名—>IP,IP—>域名;

资源记录:
  • TTL值:生存时间,DNS记录在DNS服务器上缓存时间
  • IN:表示后面的数据使用的是INTERNET标准
  • SOA记录:起始授权记录,一个区域文件只能有一个
  • @:表示相应的域名(区域)
  • test.com:授权主机
  • root.test.com:管理者信箱 [email protected]
  • rr(resource record):有类型的概念,用于此记录解析的属性
  • A记录:用来指定主机名(或域名)对应的IP(ipv4)地址记录。(AAAA ipv6
  • CNAME记录:定义对应主机的一个别名(域名)
  • NS记录:域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析
  • type:类型:master、slave、hint
  • master:表示定义的是主域名服务器(主从)
  • slave:表示定义的是辅助域名服务器(主从)
  • MX记录:邮件交换记录,指向邮件服务器
  • hint:表示是互联网中根域名服务器
  • zone:关键字来定义域区,一个zone关键字定义一个域区
  • PTR记录:反向DNS记录,A记录的反向
    运维之道 | DNS 服务搭建及主从配置、配置宿主机DNS解析及验证httpd域名_第2张图片

一、DNS 服务 Bind 安装

主机规划
服务 IP
DNS服务(主) 192.168.182.13
DNS服务(从) 192.168.182.12
测试主机 192.168.182.10
1、安装bind
[root@localhost ~]# yum install -y bind*

[root@localhost ~]# named -v
BIND 9.11.4-P2-RedHat-9.11.4-9.P2.el7 (Extended Support Version) <id:7107deb>
2、关闭防火墙策略和selinux
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0

二、DNS 服务搭建

1、主配置文件
[root@localhost ~]# vim /etc/named.conf					///只改三处

options { #选项
        listen-on port 53 { any; }; 							#服务监听端口为53							///改为any任意人可访问
        listen-on-v6 port 53 { any; }; 							#服务监听端口为53(ipv6)				///改为any任意人可访问
        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"; #静态缓存(放内存里的,一般不用)
        allow-query     { any; }; 								#允许连接的客户机					    	///改为any任意人可访问
        recursion yes; 											#递归查找
 
        dnssec-enable yes; 										#DNS加密
        dnssec-validation yes;									#DNS加密高级算法
        dnssec-lookaside auto; 									#DNS加密的相关东西
 
        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key"; 					#加密用的key(私钥公钥的加密,很强)
};

logging { 														#日志
        channel default_debug {
                file "data/named.run"; 							#运行状态文件
                severity dynamic; 								#静态服务器地址(根域)
        };
};
 
zone "." IN { 													#根域解析
        type hint;  master slave
        file "named.ca"; 										#根域配置文件
};
 
include "/etc/named.rfc1912.zones"; 							#扩展配置文件(新开域名)
include "/etc/named.root.key";
2、区域配置文件
  • 用来保存域名和IP地址对应关系的所在位置,在这个文件中,定义了域名与IP地址解析规则,保存的文件位置,以及服务类型等内容,而没有包含具体的域名、IP地址对应关系等信息;
  • 服务类型有三种,分别为hint(根区域)、master(主区域)、slave(辅助区域),其中常用的master和slave指的就是主服务器和从服务器;
[root@localhost ~]# vim /etc/named.rfc1912.zones		///在配置文件添加正反解析

zone "villiantsang.com" IN {  
     type master; 										#服务类型  
     file "villiantsang.com.zone";  					#域名与IP地址解析规则保存文件  
     allow-update { none; };  							#允许哪些客户机动态更新解析信息(主从配置) 
     }; 												#正向解析参数
     
zone "182.168.192.in-addr.arpa" IN {  					#表示为192.168.182.0/24网段的反向解析区域  
     type master;  
     file "villiantsang.com.local";   					#域名与IP地址解析规则保存文件 
     allow-update { none; };  							#允许哪些客户机动态更新解析信息(主从配置) 
     }; 												#反向解析参数
  • 正向解析

复制加上-p参数,可以保留原始文件的所有者、所属组、权限属性等信息

[root@localhost ~]# cd /var/named/
[root@localhost named]# cp -p named.localhost villiantsang.com.zone

$TTL 1D															///缓存记录为1天
@       IN SOA   ns.villiantsang.com.  root (	///#@当前的域名 #授权信息开始 #DNS区域的地址 #域名管理员邮箱不要用@符号
                                        0       ; serial		///更新序列号(与从DNS有关,每次更新需要+1)
                                        1D      ; refresh		///更新时间(与从DNS有关) 
                                        1H      ; retry			///重试延时(与从DNS有关)
                                        1W      ; expire		///失效时间(与从DNS有关)
                                        3H )    ; minimum		///无效解析记录时间(与从DNS有关)
@       IN      NS      ns.villiantsang.com.					///定义ns记录
ns      IN      A       192.168.182.13							///域名服务器,用来指定该IP为DNS服务器(ns一定要与DNS服务器IP对应)

V1      IN      A       192.168.182.11							///定义v1 主机对应IP:192.168.182.11
V2      IN      A       192.168.182.12							///定义v2 主机对应IP:192.168.182.12
www     IN      A       192.168.182.13							///定义www主机对应IP:192.168.182.13
bbs     IN      A       192.168.182.14							///定义bbs主机对应IP:192.168.182.14

@       IN      MX      10      mail.villiantsang.com.			///定义邮件地址
mail    IN      A               192.168.182.10					///定义邮件地址
  • 反向解析

反向解析的作用是将用户提交的IP地址解析为对应的域名信息,它一般用于对某个IP地址上绑定的所有域名进行整体屏蔽,屏蔽由某些域名发送的垃圾邮件

[root@localhost ~]# cd /var/named/
[root@localhost named]# cp -p named.loopback villiantsang.com.local

$TTL 1D
@       IN SOA  villiantsang.com. root (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@       IN       NS     ns.villiantsang.com.					///DNS域名服务器反向解析的IP:11

11      IN      PTR     v1.villiantsang.com.					///定义v1 主机头反向解析的IP:11
12      IN      PTR     v2.villiantsang.com.					///定义v2 主机头反向解析的IP:12
13      IN      PTR     www.villiantsang.com.					///定义www主机头反向解析的IP:13
14      IN      PTR     bbs.villiantsang.com.					///定义bbs主机头反向解析的IP:14

10      IN      PTR     mail.villiantsang.com.					///定义邮件地址,指定IP
  • 通过named-checkzone命令测试配置文件是否正确
[root@localhost named]# named-checkzone villiantsang.com.zone villiantsang.com.local 
zone villiantsang.com.zone/IN: loaded serial 0
OK
3、重启DNS服务
  • 重启DNS服务
[root@localhost named]# systemctl restart named

三、DNS域名解析测试

正向解析

1、修改测试主机192.168.182.10域名解析文件/etc/resolv.conf文件
[root@test ~]# vim /etc/resolv.conf

nameserver 192.168.182.13			///为做测试,删除所有域名解析服务,只设置这一条域名解析服务(不能ping 百度(8.8.8.8))

在这里插入图片描述

2、通过ping测试
[root@test ~]# ping v1.villiantsang.com
PING V1.villiantsang.com (192.168.182.11) 56(84) bytes of data.		///测试出 v1.villiantsang.com 的IP为192.168.182.11
^C
--- V1.villiantsang.com ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1000ms

[root@test ~]# ping v2.villiantsang.com
PING V2.villiantsang.com (192.168.182.12) 56(84) bytes of data.		///测试出 v2.villiantsang.com 的IP为192.168.182.12
^C
--- V2.villiantsang.com ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 999ms

[root@test ~]# ping www.villiantsang.com
PING www.villiantsang.com (192.168.182.13) 56(84) bytes of data.	///测试出 www.villiantsang.com 的IP为192.168.182.13
^C
--- www.villiantsang.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms

[root@test ~]# ping bbs.villiantsang.com
PING bbs.villiantsang.com (192.168.182.14) 56(84) bytes of data.	///测试出 bbs.villiantsang.com 的IP为192.168.182.14
^C
--- bbs.villiantsang.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
3、通过bind工具nslookup测试
[root@test ~]# nslookup v1.villiantsang.com
Server:         192.168.182.13
Address:        192.168.182.13#53

Name:   V1.villiantsang.com					
Address: 192.168.182.11

[root@test ~]# nslookup v2.villiantsang.com
Server:         192.168.182.13
Address:        192.168.182.13#53

Name:   V2.villiantsang.com
Address: 192.168.182.12

[root@test ~]# nslookup www.villiantsang.com
Server:         192.168.182.13
Address:        192.168.182.13#53

Name:   www.villiantsang.com
Address: 192.168.182.13

[root@test ~]# nslookup bbs.villiantsang.com
Server:         192.168.182.13
Address:        192.168.182.13#53

Name:   bbs.villiantsang.com
Address: 192.168.182.14

反向解析

通过反向解析命令:nslookup -qt=ptr IP进行测试
[root@test ~]# nslookup -qt=ptr 192.168.182.10
*** Invalid option: qt=ptr
10.182.168.192.in-addr.arpa     name = mail.villiantsang.com.

[root@test ~]# nslookup -qt=ptr 192.168.182.11
*** Invalid option: qt=ptr
11.182.168.192.in-addr.arpa     name = v1.villiantsang.com.

[root@test ~]# nslookup -qt=ptr 192.168.182.12
*** Invalid option: qt=ptr
12.182.168.192.in-addr.arpa     name = v2.villiantsang.com.

[root@test ~]# nslookup -qt=ptr 192.168.182.13
*** Invalid option: qt=ptr
13.182.168.192.in-addr.arpa     name = www.villiantsang.com.

[root@test ~]# nslookup -qt=ptr 192.168.182.14
*** Invalid option: qt=ptr
14.182.168.192.in-addr.arpa     name = bbs.villiantsang.com.

四、DNS主从配置

1、修改主DNS服务中区域配置文件
[root@master ~]# vim /etc/named.rfc1912.zones		///在配置文件添加正反解析

zone "villiantsang.com" IN {  
     type master;									///服务类型  master 										
     file "villiantsang.com.zone";  					 
     allow-update { 192.168.182.12; };  			///允许192.168.182.12客户机动态更新解析信息
     }; 											
     
zone "182.168.192.in-addr.arpa" IN {  					 
     type master;  									///服务类型  master
     file "villiantsang.com.local";  
     allow-update { 192.168.182.12; };  			///允许192.168.182.12客户机动态更新解析信息 
     }; 											///反向解析参数
2、从DNS服务安装bind
[root@slave ~]# yum install -y bind*
3、修改从DNS服务中主配置文件
[root@slave ~]# vim /etc/named.conf

options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { any; };
        allow-query     { any; };
4、修改从DNS服务中区域配置文件
[root@slave ~]# vim /etc/named.rfc1912.zones

zone "villiantsang.com" IN {
     type slave;							///slave从服务
     file "slave/villiantsang.com.zone";	///从服务正向解析配置文件,不用创建,启动时会自动生成
     masters { 192.168.182.13; };			///绑定master主服务 IP 地址
};

zone "182.168.192.in-addr.arpa" IN {
     type slave;							///slave从服务
     file "slave/villiantsang.com.local";	///从服务反向解析配置文件,不用创建,启动时会自动生成
     masters { 192.168.182.13; };			///绑定master主服务 IP 地址
};
5、重启主从DNS服务
[root@master ~]# systemctl restart named		///重启主DNS服务
[root@slave ~]# systemctl restart named			///重启从DNS服务
6、查看从服务是否自动生成正反解析文件
[root@slave slaves]# pwd
/var/named/slaves										///从服务配置文件目录
[root@slave slaves]# ls
villiantsang.com.local  villiantsang.com.zone			///自动生成的正反解析配置文件
7、DNS测试
正向解析
  • 通过ping测试
[root@slave ~]# ping www.villiantsang.com
PING www.villiantsang.com (192.168.182.13) 56(84) bytes of data.
64 bytes from www.villiantsang.com (192.168.182.13): icmp_seq=1 ttl=64 time=0.675 ms

[root@slave ~]# ping v1.villiantsang.com
PING V1.villiantsang.com (192.168.182.11) 56(84) bytes of data.
64 bytes from www.villiantsang.com (192.168.182.11): icmp_seq=1 ttl=64 time=0.675 ms

[root@slave ~]# ping v2.villiantsang.com
PING V2.villiantsang.com (192.168.182.12) 56(84) bytes of data.
64 bytes from v2.villiantsang.com (192.168.182.12): icmp_seq=1 ttl=64 time=0.019 ms

[root@slave ~]# ping bbs.villiantsang.com
PING bbs.villiantsang.com (192.168.182.14) 56(84) bytes of data.
64 bytes from www.villiantsang.com (192.168.182.14): icmp_seq=1 ttl=64 time=0.675 ms
  • 通过bind工具nslookup测试
[root@slave ~]# nslookup www.villiantsang.com
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   www.villiantsang.com
Address: 192.168.182.13

[root@slave ~]# nslookup v1.villiantsang.com
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   V1.villiantsang.com
Address: 192.168.182.11

[root@slave ~]# nslookup v2.villiantsang.com
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   V2.villiantsang.com
Address: 192.168.182.12

[root@slave ~]# nslookup bbs.villiantsang.com
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   bbs.villiantsang.com
Address: 192.168.182.14
反向解析
[root@slave ~]# nslookup -qt=ptr 192.168.182.10
*** Invalid option: qt=ptr
10.182.168.192.in-addr.arpa     name = mail.villiantsang.com.

[root@slave ~]# nslookup -qt=ptr 192.168.182.11
*** Invalid option: qt=ptr
11.182.168.192.in-addr.arpa     name = v1.villiantsang.com.

[root@slave ~]# nslookup -qt=ptr 192.168.182.12
*** Invalid option: qt=ptr
12.182.168.192.in-addr.arpa     name = v2.villiantsang.com.

[root@slave ~]# nslookup -qt=ptr 192.168.182.13
*** Invalid option: qt=ptr
13.182.168.192.in-addr.arpa     name = www.villiantsang.com.

[root@slave ~]# nslookup -qt=ptr 192.168.182.14
*** Invalid option: qt=ptr
14.182.168.192.in-addr.arpa     name = bbs.villiantsang.com.

五、宿主机绑定虚拟机DNS服务器

1、修改宿主机DNS解析

运维之道 | DNS 服务搭建及主从配置、配置宿主机DNS解析及验证httpd域名_第3张图片
运维之道 | DNS 服务搭建及主从配置、配置宿主机DNS解析及验证httpd域名_第4张图片

2、刷新DNS服务

打开cmd窗口
运维之道 | DNS 服务搭建及主从配置、配置宿主机DNS解析及验证httpd域名_第5张图片
刷新DNS服务
运维之道 | DNS 服务搭建及主从配置、配置宿主机DNS解析及验证httpd域名_第6张图片

3、测试DNS解析

运维之道 | DNS 服务搭建及主从配置、配置宿主机DNS解析及验证httpd域名_第7张图片
运维之道 | DNS 服务搭建及主从配置、配置宿主机DNS解析及验证httpd域名_第8张图片

4、安装部署httpd服务,并修改httpd测试界面
[root@master ~]# yum install -y httpd

[root@master ~]# echo "i am villiantsang" > /var/www/html/index.html

[root@master ~]# systemctl start httpd
5、打开宿主机测试域名解析 httpd

运维之道 | DNS 服务搭建及主从配置、配置宿主机DNS解析及验证httpd域名_第9张图片


阿里云域名(万网)配置:https://www.bilibili.com/video/av68500782?p=6
DNS学习视频:https://www.bilibili.com/video/av68500782?p=3

你可能感兴趣的:(Linux,系统服务)