Linux之DNS域名系统服务

Posted 锦衣admin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux之DNS域名系统服务相关的知识,希望对你有一定的参考价值。

DNS服务概述

DNS(domain name system ) 域名管理系统

  • 由特定的格式组成,用来表示互联网中某一台计算机或者计算机组的名称,能够使人更方便的访问互联网,而不用记住能够被机器直接读取的IP地址。

  • 计算机 => IP地址,互联网中的计算机都是通过IP地址进行互相访问的。(IP地址过于复杂)

  • 域名:代替IP实现计算机的访问(高级 => 上层应用,底层还是IP地址)域名通过DNS解析找到对应的IP地址

DNS的正向解析:

  • 将主机域名转换为对应的IP 地址,以便网络程序能够通过主机域名访问到对应的服务器主机

域名——>IP (A记录:通过域名解析IP )

DNS的反向解析

  • 将主机的IP地址转换为对应的域名,以便网络(服务)程序能够通过IP地址查询到主机的域名

IP——>域名 (PTR记录:通过IP查找域名)

DNS的结构

在这里插入图片描述

#l 域名:www.itheima.com
#l DNS结构:www.itheima.com.  =>  从右向左解析

根域(.):

  • 在整个 DNS 系统的最上方一定是 . (小数点) 这个 DNS 服务器 (称为 root),也叫”根域“。

  • 根域 (13台 全世界只有13台。1个为主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲2个,位于英国和瑞典,亚洲1个,位于日本。)

一级域名<顶级域|国家域>:

com net edu gov org cc io| cn uk us ru ja ko

  • .com : 商业公司
  • .net :互联网公司
  • edu :教育(中小学、高中、大学…)
  • gov :政府
  • io :存储设备,redis
  • cn :中国域名(国家域)

域名机构:

  • 收费(新网|万网)

  • 老牌免费域名:TK顶级域名、TK域名DNS、TK域名商

DNS工作原理

在这里插入图片描述

  • 如果询问一次得到结果 递归查询 C-S

  • 如果询问多次得到结果 迭代查询 S-S

一次递归 多次迭代
dig工具使用:

# dig +trace www.itcast.cn	  追踪DNS的解析过程
# dig www.itcast.cn			  正向解析
# dig -x IP地址			    反向解析

DNS服务实验

任务要求

在这里插入图片描述

在内网搭建三台服务器,用于测试DNS服务解析

DNS服务器的搭建:10.1.1.12

DNS 的域名解析都是 udp/53 . 主从之间的数据传输默认使用tcp/53

DNS服务器端软件:

  • Bind是一款开放源码的DNS服务器软件,Bind由美国加州大学Berkeley(伯克利)分校开发和维护的,全名为Berkeley Internet Name Domain它是目前世界上使用最为广泛的DNS服务器软件,支持各种unix平台和windows平台。BIND现在由互联网系统协会(Internet Systems Consortium)负责开发与维护。

环境准备

编号主机名称IP地址备注信息
1client.itcast.cn10.1.1.11client客户端,用于测试
2dns.itcast.cn10.1.1.12dns服务器,用于实现域名解析
3web.itcast.cn10.1.1.13web服务器,用于搭建内部web服务

第一步:更改主机名称与IP地址

# hostnamectl set-hostname client.itcast.cn
# hostnamectl set-hostname dns.itcast.cn
# hostnamectl set-hostname web.itcast.cn

# su

# vim /etc/sysconfig/network-scripts/ifcfg-ens33
	BOOTPROTO=none
	IPADDR=10.1.1.11/10.1.1.12/10.1.1.13
	更改UUID编号的后3位,必须是唯一的

# systemctl stop NetworkManager
# systemctl disable NetworkManager
关闭网络管理,以免影响静态IP获取

# systemctl restart network

第二步:关闭防火墙与SELinux

# systemctl stop firewalld
# systemctl disable firewalld

# setenforce 0
# vim /etc/selinux/config
	SELINUX=disabled

第三步:配置YUM源(有网配置公网YUM源、无网就配置光盘或自建YUM源)

# yum clean all
# yum makecache

DNS服务器搭建(正向解析实验):10.1.1.12

DNS服务器安装DNS软件

# yum install bind -y

# rpm -q bind

# rpm -ql bind	=>	查看bind软件生成哪些文件

	/etc/logrotate.d/named	=>	 日志轮转文件

	/etc/named.conf	=>	主配置文件
	/etc/named	=>	配置文件目录
	
	/var/named/named.ca	=>	根域服务器
	
	/var/named/named.localhost	=>	正向解析区域文件模板
	/var/named/named.loopback	=>	反向解析区域文件模板

	/etc/named.rfc1912.zones	=>	zone文件,定义域


	/usr/lib/systemd/system/named.service	=>	服务管理脚本
	/usr/sbin/named	=>	二进制程序文件
	
	/var/named/slaves	=>	dns服务器下载文件的默认路径
	/usr/sbin/named-checkconf	=>	检测配置文件
	/usr/sbin/named-checkzone	=>	检测域文件
	/var/rum/named	=>	 进程pid

正向解析,DNS正向解析配置(域名=>IP)

在这里插入图片描述

  • /etc/named.conf主要配置访问权限控制(哪些IP或哪些主机可以访问DNS服务器)

  • /etc/named.rfc1912.zones主要定义域名如何解析(正向解析),解析到具体哪个IP地址

第一步: 对named.conf以及named.rfc1912.zones进行备份(以免错误配置无法恢复原有配置数据)

# cp /etc/named.conf /etc/named.conf.bak

# cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bak

第二步: /etc/named.conf主配置文件详解(访问权限控制)

# vim /etc/named.conf
  • 添加任何主机都可以访问的权限:添加any(any; 有空格)在这里插入图片描述

第三步: /etc/named.rfc1912.zones从配置文件详解(域名应该指向哪个IP地址)

# vim /etc/named.rfc1912.zones	=>	增加一行配置,让域名指向.zone文件(文件有IP指向)
	...
	zone "itcast.cluster" IN {				=>	域名
	        type master;
	        file "itcast.cluster.zone";		=>	增加.zone子配置文件
	        allow-update { none; };
	};

#l 备注:
 vim =>1923  co  42,把19-23行,copy到42行的后面

第四步: 在/var/named目录创建itcast.cluster.zone文件定义正向解析

# cd /var/named
# cp -p named.localhost itcast.cluster.zone		=>	-p保留文件原有属性,在/var/mamed目录创建itcast.cluster.zone子配置文件

第五步:编辑itcast.cluster.zone文件,定义域名的指向

  • zone文件的格式说明
zone文件详解
# $TTL  缓存的生存周期
# @ = zonename = itcast.com  当前域
# IN  互联网
# SOA 开始授权
# NS  dns服务端	nameserver
# A   ipv4 正向
# AAAA IPV6
# CNAME 别名
# MX  邮件交互记录  5 数字代表优先级 数字越小优先级越高

# 0       ; serial    更新序列号	
# 1D      ; refresh   更新间隔(从服务器下载数据)
# 1H      ; retry     失败重试
# 1W      ; expire    区域文件的过期时间
# 3H )    ; minimum   缓存的最小生存周期

# D Day、H Hour、W Week
# vim itcast.cluster.zone	=>	将itcast.cluster.zone域名指向web服务器
	增加有一行:www	A	10.1.1.13

在这里插入图片描述

检查named.conf与zones文件

  • named-checkconf 测试命令
  • /etc/named.conf、/etc/named.rfc1912.zones
检查/etc/named.conf、/etc/named.rfc1912.zones从配置文件
	# named-checkconf /etc/named.conf	
	# named-checkconf /etc/named.rfc1912.zones

检查itcast.cluster.zone文件
	# cd /var/named
	# named-checkzone itcast.cluster.zone itcast.cluster.zone	=>	需要输入两次文件检查

启动DNS服务(named)

# systemctl restart named	=>	启动DNS服务
# netstat -tnlp |grep named

Web服务搭建:10.1.1.13

安装并启动httpd服务

# yum install httpd -y
# systemctl start httpd

# echo 'DNS Test ...' > /var/www/html/index.html	=>	测试httpd服务是否启动
在客户端浏览器打开www.itcast.cluster测试

客户端:10.1.1.11

添加DNS服务器

临时
	# echo 'nameserver 10.1.1.12' > /etc/resolv.conf
	注:电脑重启,网络刷新restart network,VMware挂起,临时DNS都会失效

永久添加
	# vim /etc/sysconfig/network-scripts/ifcfg-ens33
		DNS1=10.1.1.12

使用nslookup检测正向解析是否生效

# nslookup www.itcast.cluster
	[root@client ~]# nslookup www.itcast.cluster
	;; connection timed out; no servers could be reached
	#l 报错

#l 解决办法:
将ifcfg-ens33中的DNS=10.1.1.22换成DNS1=10.1.1.12和DNS2=8.8.8.8

使用elinks命令行浏览器或curl来实现访问

# yum install elinks -y
# elinks
	输入www.itcast.cluster

# curl http://www.itcast.cluster

至此,正向解析完成

DNS服务反向解析实验

DNS两种解析:

正向解析:把域名解析为对应的IP地址

反向解析:把IP地址解析为对应的域名

DNS的反向解析

目标:把10.1.1.13这个IP地址通过DNS服务器指向www.itcast.cluster域名

  • 没有对 /etc/named.conf、/etc/named.rfc1912.zone配置文件备份需要备份

第一步:在/etc/named.conf主配置文件开启网络的访问权限控制

# vim /etc/named.conf	=>	增加any; 选项允许所有主机访问
	12 options {
	13         listen-on port 53 { 127.0.0.1;any; };	=>	增加any; 选项允许所有主机访问
	14         listen-on-v6 port 53 { ::1; };
	15         directory       "/var/named";
	16         dump-file       "/var/named/data/cache_dump.db";
	17         statistics-file "/var/named/data/named_stats.txt";
	18         memstatistics-file "/var/named/data/named_mem_stats.txt";
	19         recursing-file  "/var/named/data/named.recursing";
	20         secroots-file   "/var/named/data/named.secroots";
	21         allow-query     { localhost;any;};	=>	增加any; 选项允许所有主机访问

第二步:在/etc/named.rfc1912.zones从配置文件中定义zone文件

# vim /etc/named.rfc1912.zones
	49 zone "1.1.10.in-addr.arpa" IN {		=>	注意:倒写IP网段
	50         type master;
	51         file "10.1.1.zone";			=>	zone文件写法
	52         allow-update { none; };
	53 };

vim =>3135  co  47,把31-35行,copy到47行的后面

第三步:cd /var/named进入到DNS zone配置文件目录,复制named.loopback文件

# cd /var/named


# cp -p named.loopback 10.1.1.zone	=>	-p将复制文件原有属性保留

第四步:编辑10.1.1.zone文件,把IP地址=>10.1.1.13指向www.itcast.cluster域名

$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
        AAAA    ::1
        PTR     localhost.
#增加一条反向解析,把10.1.1.13 => PTR => www.itcast.cluster
13      PTR     www.itcast.cluster		=>	这里增加一条

第五步:检查与客户端测试

  • DNS服务器:测试
# named-checkconf /etc/named.conf	=>	测试主配置文件
# named-checkconf /etc/named.rfc1912.zones	=>	测试从配置文件

# cd /var/named
# named-checkzone 10.1.1.zone 10.1.1.zone	=>	测试zone域文件

# systemctl restart named	=>	重启DNS服务
  • 客户端检测:
# echo 'nameserver 10.1.1.12' > /etc/resolv.conf
# nslookup 10.1.1.13
	Server:         10.1.1.12
	Address:        10.1.1.12#53

	13.1.1.10.in-addr.arpa  name = www.itcast.cluster.1.1.10.in-addr.arpa.

多域DNS服务器搭建:10.1.1.12

需求:搭建一个DNS服务器,可以同时解析test.net和heima.cc域
直接搭建在原DNS服务器中

编号域名IP地址
1www.test.net10.1.1.12
2bbs.heima.cc10.1.1.12

第一步:更改 /etc/named.conf主配置文件详解(访问权限控制)

# vim /etc/named.conf
  • 添加任何主机都可以访问的权限:添加any(any; 有空格)在这里插入图片描述
# vim /etc/named.rfc1912.zones
	49 zone "1.1.10.in-addr.arpa" IN {
	50         type master;
	51         file "10.1.1.zone";
	52         allow-update { none; };
	53 };

第二步:更改/etc/named.rfc1912.zones,添加test以及heima域

# vim /etc/named.rfc1912.zones
	...
	zone "test.net" IN {
	        type master;
	        file "test.net.zone";
	        allow-update { none; };
	};

	zone "heima.cc" IN {
	        type master;
	        file "heima.cc.zone";
	        allow-update { none; };
	};

第三步:进入/var/named目录,复制named.localhost

# cd /var/named
# cp -p named.localhost test.net.zone
# cp -p named.localhost heima.cc.zone

第四步:编辑test.net.zone与heima.cc.zone文件

# vim test.net.zone
	...
	www 	A	 10.1.1.13

# vim heima.cc.zone
	...
	bbs		A	 10.1.1.13

第五步:检测配置文件,然后启动named服务(重启)

# named-checkconf /etc/named.conf
# named-checkconf /etc/named.rfc1912.zones

# cd /var/named
# named-checkzone test.net.zone test.net.zone
# named-checkzone heima.cc.zone heima.cc.zone

# systemctl restart named

第六步:客户端测试

# echo 'nameserver 10.1.1.12' > /etc/resolv.conf
	[root@client ~]# nslookup www.test.net
	Server:         10.1.1.12
	Address:        10.1.1.12#53

	Name:   www.test.net
	Address: 10.1.1.13

	[root@client ~]# nslookup bbs.heima.cc
	Server:         10.1.1.12
	Address:        10.1.1.12#53

	Name:   bbs.heima.cc
	Address: 10.1.1.13

DNS主从部署

在这里插入图片描述
主从部署的核心思路:(master:主 slave:从)

  1. master和slave的系统时间保持一致
  2. slave服务器上安装相应的软件(系统版本、软件版本保持一致)
  3. 根据需求修改相应的配置文件(master和slave都应该去修改)
  4. 主从同步的核心是slave同步master上的区域文件(zone文件)

第一步:准备一台slave从服务器(略)
① 克隆 ② 更改主机名称以及IP地址(更改UUID编号、关闭NetworkManager)③ 关闭防火墙与SELinux ④ 配置YUM源

编号主机名称IP地址备注信息
1slave.itcast.cn10.1.1.14dns slave从服务器

第二步:更改主dns服务器,允许其他的从服务器下载同步资源

  • 增加一行allow-transfer {10.1.1.14; };允许slaev从服务器同步文件权限
# vim /etc/named.conf
12 options {
13         listen-on port 53 { 127.0.0.1;any; };	
14         listen-on-v6 port 53 { ::1; };
15         allow-transfer {10.1.1.14; };	=>  允许从服务器的IP地址过来同步资源
16         directory       "/var/named";
17         dump-file       "/var/named/data/cache_dump.db";
18         statistics-file "/var/named/data/named_stats.txt";
19         memstatistics-file "/var/named/data/named_mem_stats.txt";
20         recursing-file  "/var/named/data/named.recursing";
21         secroots-file   "/var/named/data/named.secroots";
22         allow-query     { localhost;any;};	


# systemctl restart named

第三步:SLAVE从服务器配置

  • 打开全网监听,允许所有主机访问
# yum install bind -y

# vim /etc/named.conf
	12 options {
	13         listen-on port 53 { 127.0.0.1;any; };	=>	增加any; 允许所有主机访问
	14         listen-on-v6 port 53 { ::1; };
	15         directory       "/var/named";
	16         dump-file       "/var/named/data/cache_dump.db";
	17         statistics-file "/var/named/data/named_stats.txt";
	18         memstatistics-file "/var/named/data/named_mem_stats.txt";
	19         recursing-file  "/var/named/data/named.recursing";
	20         secroots-file   "/var/named/data/named.secroots";
	21         allow-query     { localhost;any; };	=>	增加any; 允许所有主机访问

# vim /etc/named.rfc1912.zones	=>	在从配置文件中增加两列主服务器写入的域,将其同步到/etc/named目录中
	zone "test.net" IN {
	        type slave;
	        file "slaves/test.net";
	        masters { 10.1.1.12; };		=>	设定主DNS服务器IP,自动从主服务器那里同步过来
	};

	zone "heima.cc" IN {
	        type slave;
	        file "slaves/heima.cc";
	        masters { 10.1.1.12; };		=>	设定主DNS服务器IP,自动从主服务器哪里同步过来
	};

# 检测配置文件是否有错(略)
# named-checkconf /etc/named.conf
# named-checkconf/etc/named.rfc1912.zones

# systemctl restart named

查看/etc/named目录下是否生成一个slave文件夹,文件夹内存放域.zone文件
	[root@slave named]# pwd
	/var/named
	[root@slave named]# ls
	data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
	[root@slave named]# ll slaves/
	总用量 12
	-rw-r--r--. 1 named named 267 54 21:23 heima.cc
	-rw-r--r--. 1 named named 309 54 21:23 itcast.cluster
	-rw-r--r--. 1 named named 267 54 21:23 test.net

第四步:在Client客户端,把Slave从服务器的IP设置为DNS

# echo 'nameserver 10.1.1.14' > /etc/resolv.conf
# nslookup www.test.net

[[A[root@client  nslookup www.tset.net
Server:         10.1.1.14
Address:        10.1.1.14#53

Non-authoritative answer:
Name:   www.tset.net
Address: 209.99.64.70

[root@client ~]#  nslookup www.tset.net
Server:         10.1.1.14
Address:        10.1.1.14#53

** server can't find www.tset.net: NXDOMAIN

[root@client ~]# echo 'nameserver 10.1.1.14' > /etc/resolv.conf
[root@client ~]# nslookup www.itcast.cluster
Server:         10.1.1.14
Address:        10.1.1.14#53

Name:   www.itcast.cluster
Address: 10.1.1.13

[root@client ~]# nslookup www.test.net
Server:         10.1.1.14
Address:        10.1.1.14#53

Name:   www.test.net
Address: 10.1.1.13

[root@client ~]# nslookup bbs.heima.cc
Server:         10.1.1.14
Address:        10.1.1.14#53

Name:   bbs.heima.cc
Address: 10.1.1.13

以上是关于Linux之DNS域名系统服务的主要内容,如果未能解决你的问题,请参考以下文章

Linux系统服务搭建之DNS

Linux之DNS服务

Linux之bind服务(DNS)部署配置

Linux之DNS

Linux学习基础必备技能之DNS——反向解析缓存服务器主从服务器分离解析

Linux之DNS服务器搭建及常见DNS攻击和防御