Linux DNS服务

简介

DNS:Domain Name Service,应用层协议,基于C/S架构
端口:53/udp,53/tcp
本地名称解析配置文件:/etc/hosts		
	优先级最高,此文件定义后不再查找其他DNS服务器
	格式:IP HOSTNAME

相关名词

FQDN

FQDN:全称域名,包括主机名和域名两部分,一般最后会有一个点作为根域,平常书写时省略 
	  以www.sina.com.cn为例,主机名为www,域名为sina.com.cn(用点分隔成多个部分)
根域:.
一级域名:
	com:商业公司
	edu:教育行业
	mil:军事
	gov:政府
	org:开源
	int:国际组织
	arpa: 反向域
	分为三类:组织域、国家域(.cn等)、反向域
二级域名:自定义
三级域名:自定义
最多127级域名
ICNAA:互联网名称与数字地址分配机构,负责在全球范围内对互联网通用顶级域名以及国家和地区顶级域名系统的管理,以及根服务器系统的管理
DNS服务器地址:
	114.114.114.114		电信提供
	223.5.5.5			阿里提供
	223.6.6.6			阿里提供
	119.29.29.29		腾讯提供
	8.8.8.8				美国谷歌提供
	1.1.1.1				澳大利亚
IPv4DNS服务器总共有13台根服务器,美国10台,欧洲2台(瑞典、荷兰),亚洲1台(日本)
IPv6DNS服务器总共有25台根服务器,中国有一台

DNS查询

递归查询:本机客户端向离自己最近的DNS服务器发出请求解析,而最近的DNS服务器负责将结果返回给本机,这种查询叫递归
迭代查询:本机客户端向离自己最近的DNS服务器发出请求解析,DNS服务器向根域、顶级域一级一级查询时叫做迭代查询
解析类型:
	FQDN --> IP		正向解析
	IP --> FQDN		反向解析
	#注意:正反向解析是两个不同的名称空间,是两棵不同的解析树

DNS服务器

DNS服务器类型:
	主DNS服务器
	从DNS服务器
	缓存DNS服务器(转发器)

主DNS服务器:管理和维护所负责解析的域内解析库的服务器
从DNS服务器:从主服务器或从服务器"复制"解析库副本
	序列号:解析库版本号,主服务器解析库变化时,其序列号递增
	刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
	重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
	过期时长:从服务器联系不到主服务器,多久后停止服务
	通知机制:主服务器解析库发生变化时,会主动通知从服务器
缓存DNS服务器:也称转发服务器,被转发的服务器需要能够为请求者做递归,否则转发请求不予进行
	全局转发:对非本机所负责解析区域的请求,全转发给指定的服务器
		/etc/named.conf
		options {
			forward first|only;		选择其中之一
			forwarders { IP; };		指定转发服务器IP
		}
		first:当有请求解析时,查看本地缓存是否有请求者需要的内容,如果没有转发给指定服务器,如果指定服务
		器也没有请求者需要的内容,由本机负责迭代向根查询,最后返回请求者需要的内容,如果指定服务器有请求者
		需要的内容,直接返回
		
		only:当有请求解析时,查看本地缓存是否有请求者需要的内容,如果没有转发给指定服务器,如果指定服务器
		也没有请求者需要的内容,由指定服务器迭代向根查询需要内容,然后通过本机过桥返回,本机也将缓存
	
	特定区域转发:仅转发对特定的区域的请求,比全局转发优先级高
		编辑区域文件/etc/named.rfc1912
			zone "zone_name" IN {
				type forward;			类型forward
				forward first|only;		选择其中之一
				forwarders { IP; };		指定转发服务器IP
			};
	注意:需要关闭dnssec功能
		 dnssec-enable no;
	     dnssec-validation no;

区域传送:
	完全传送 axfr:传送整个解析库
	增量传送 ixfr:仅传递解析库变化的那部分内容

区域类型:
	master	:主区域
	slave	:从区域
	hint	:提示区域
	forword	:准发区域

资源记录

区域解析库:有众多RR组成
	资源记录:Resource Record,RR
	记录类型:SOA,A,AAAA,PTR,NS,CNAME,MX

	SOA:start of authority,起始授权记录;一个区域解析库有且只能有一个SOA记录,必须位于解析库的第一条记录
		例:@       IN      SOA     dns1    admin.cheng.com. (
			@	:表示本域域名,
			dns1	:表示本域中的DNS服务器
			admin.cheng.com.	:邮件地址,正常邮件地址是admin@cheng.com.,但是DNS中@是特殊字符有特殊含义,
								 所以用.代替@
					0		:DNS数据库版本序列号,若有主从服务器,这个数字需人为修改,此序列号最常10位
					10H		:刷新间隔,从服务器到主服务拉取数据的间隔
					1H		:当拉取失败,重试拉取时间间隔
					2D		:当重试拉取时间超过此处定义的时间,从服务器上面的数据将失效,不再提供查询服务
					3H )	:当客户访问一个本机没有的域名时,将缓存,缓存时间为此处定义的时间,此时间之内客户在查询直接通过缓存返回没有此域名

	A:Internet address,正向解析,FQDN --> IPv4

	AAAA:FQDN --> IPv6

	PTR:pointeR,IP --> FQDN,反向解析

	NS:name server,专用于标明当前区域的DNS服务器
		例:@    IN      NS      dns1.cheng.com.
			有几条NS记录就有几个DNS服务器

	CNAME:别名记录
		www		CNAME	webser			:为www取别名
		webser	A		192.168.40.5	:别名对应的IP

	MX:邮件交换器
		shen.com. IN   MX  10  mail		:需要先声明MX记录,10表示优先级,数字越小优先级越高
		@		   IN	MX	10	mail		:也可以这样写
		mail    IN      A       192.168.40.5	:然后定义A记录指定对应IP

	TXT:对域名进行标识说明的一种方式,一般做验证记录是会使用此项

泛域名解析:	
	@:在很多情况下访问网站的人一般不敲www,直接敲域名例如baidu.com,@本身就表示本域,所以为@添加一条A
	   记录使得不敲www的用户也可以访问网站
		例:@	A	192.168.40.5		:在浏览器中哪怕不敲www也会进入此IP的网页

	*:如果有人敲错了FQDN,例如wwwwww.baidu.com,很显然没有这么多w的FQDN,但是依然会进入网站,因为*表示通配符,此处定义的*后面会自动补齐域名
		所以无论敲什么,只要后面是本机的域名都可以进入网站、
		例如:sdadasasfas.baidu.com:只要后面是baidu.com的域名,前面用*匹配是什么都行
		注意:*代替不了@
	
	$GENERATE 1-200 www$	A	192.168.40.$	:$表示引用前面定义的1-200。
		测试:dig www34.cheng.com
		显示效果:A记录为192.168.40.34这个IP,www后面跟的什么数字IP就是什么数字,因为都用$引用的

资源记录定义的格式:
	语法:zone_name [TTL] IN RR_type  value
	注意:
		TTL可从全局继承
		@可用于引用当前区域的名字
		同一个名字可以通过多条记录定义多个不同的值,此时DNS服务器会以轮询的方式响应
		同一个值也可能有多个不同的定义名字,通过多个不同的名字执行同一个值进行定义;此仅表示通过多个不同的
		名字可以找到同一个主机

DNS服务包 - Bind

介绍

bind:目前使用最多的DNS管理软件包
rpm -ql bind
使用yum安装即可
配置文件介绍:
	/etc/named.conf		:主配置文件
	/etc/named.rfc1912.zones	:创建域建议写在此文件中
	
	/usr/sbin/named		:服务端主程序
	/usr/sbin/rndc		:管理DNS的准用工具,当然也可以使用系统的systemctl管理
	
	/var/log/named.log	:日志文件
	/var/named			:目录下存放DNS文件
	/var/named/named.ca	:根服务器信息的文件,安装DNS服务器都会有
	/var/named/slaves	:从DNS服务器在主服务器拉取过来的默认数据目录

配置文件

/etc/named.conf
	options {		
		listen-on port 53 { localhost; };	:默认是127.0.0.1的地址,表示只给本地换回地址提供DNS
											  服务,更改为localhost或#注释此行表示本机所有IP都能
											  使用DNS服务
	    listen-on-v6 port 53 { ::1; };		:IPv6,意思和上面相同
	    directory       "/var/named";		:默认数据目录,此文件下面内容都会继承此处定义的目录,
	    									  就不同写绝对路径了,相对此处定义的目录路径
		allow-query     { any; };			:为哪些主机提供准发服务,默认是localhost,更改为any
											  表示为所有主机提供转发
	
	}
	logging {
		此处定义的内容是记录日志的级别
	}
	zone "." IN {			:. 表示根域信息
	    type hint;			:hint根域
	    file "named.ca";	:根域对应的文件,相对上面定义的路径
	};
	
	include "/etc/named.rfc1912.zones";	:建议自定义的DNS服务写在此文件中,里面有示例,可对照书写

acl

bind中有四个内置的acl
	none:没有一个主机
	any:任意主机
	localhost:本机IP
	localnet:网段
注意:只能先定义后使用,因此一般定义在配置文件中,处于options前面

访问控制的指令:
	allow-query {};	:允许查询的主机,白名单
	allow-transfer {};	:允许传送的主机,白名单
	allow-recursion {};	:允许递归的主机,建议全局适用
	allow-update {};	:允许更新区域数据库中的内容

view

CDN:内容分发网络,和DNS类似的技术
	服务商:蓝汛,网宿,帝联等
只能DNS
	dnspod
	dns.la
view:视图,实现只能DNS
	一个bind服务器可定义多个view,每个view中可定义一个zone
	每个view用来匹配一组客户端
	多个view内可能需要同一个区域进行解析,但是用不同的解析库文件
注意:
	一旦启用了view,所有的zone都只能定义在view中
	仅在允许递归请求的客户端所在view中定义根区域
	客户端请求到达时,是自上而下检查每个view所服务的客户端列表
格式:
	view view_name {
		match-clients { acl_name;};
		zone "shen.com" {
			type master;
			file "shen.com.zone.bj"
		};
		include "/etc/named.rfc1912.zones"
	};

rndc

rndc --> rndc (953/tcp)
rndc command
	reload	:重新加载配置文件和区域解析库文件
	flush	:清空DNS服务器的所有缓存记录
	querylog:开启或关闭查询日志文件/var/log/messages
	reconfig:重新加载主配置文件
	trace [N]:不指定数字是递增一个debug日志记录级别,也可指定递增几个级别
	notrace	:将调试级别重置为0
	reload zonename	:重新加载解析库文件
	notify zonename	:重新对区域传送发送通知

实验

1. 创建正向解析主DNS服务

修改主配置文件:
	vim /etc/named.conf		
	options {
		listen-on port 53 { localhost; };	:本机所有IP都可使用DNS
		allow-query     { any; };			:为所有IP提供DNS转发
		 allow-transfer  { 192.168.27.135; };	:仅允许定义的IP从本机拉取区域文件,拒绝其他服务器
	}
修改/etc/named.rfc1912.zones
	vim /etc/named.rfc1912.zones	
	zone "cheng.com" IN {
    type master;
    file "shen.com.zone";
    allow-update { none; };	
	};
创建/var/named/shen.com.zone
	vim /var/named/shen.com.zone
	$TTL 86400
	@       IN      SOA     dns1    admin.shen.com. (
									0
									10H
									1H	
									2D	
									3H )	
			IN      NS      dns1.shen.com.
	dns1    IN      A       192.168.27.136
	www     IN      CNAME   webser
	webser  IN      A       192.168.27.135
	@       IN      A      192.168.27.135
	*       IN      A       192.168.27.135
	shen.com. IN   MX  10  mail
	mail    IN      A       192.168.27.135
修改属性:
	chgrp named shen.com.zone
	chmod o-r shen.com.zone
重启服务:建议使用rndc
	rndc reload
	systemctl restart named
检查:
	named-checkconf /etc/named.rfc1912.zones	
	named-checkzone shen.com /var/named/cheng.com.zone		
测试:将另一台主机的DNS地址设为上面定义的本机IP,然后ping www.baidu.com,查看是否能解析,能解析就说明配置没问题,通不通是网络的事,DNS只负责解析
	接着使用dig命令测试
		dig www.shen.com
		dig -t NS shen.com
		dig -t MX shen.com

2. 创建反向解析主DNS服务

修改主配置文件:
	vim /etc/named.conf
	options {
		listen-on port 53 { localhost; };	
		allow-query     { any; };			
		allow-transfer  { 192.168.27.136; };	
编辑区域文件/etc/named.rfc1912.zones
	zone "27.168.192.in-addr.arpa" IN {  #注意反向		
    type master;
    file "192.168.27.zone";
    allow-update { none; };
	
	};
创建/var/named/192.168.27.zone
	$TTL 86400
	@       IN      SOA     dnsser  admin.shen.com. ( 0 10H 30M 1D 3H )
			IN      NS      dnsser
	dnsser  IN      A       192.168.27.135
	5       IN      PTR     dnsser.shen.com.
	5       IN      PTR     www.shen.com.
	10      IN      PTR     study.shen.com.
修改属性:
	chgrp named 192.168.27.zone
	chmod o-r 192.168.27.zone
重启服务:建议使用rndc
	rndc reload
	systemctl restart named
检查:
	named-checkconf /etc/named.rfc1912.zones	:检查配置文件语法,格式
	named-checkzone 27.168.192.in-addr.arpa /var/named/192.168.27.zone

3. 创建从DNS服务器

修改主配置文件:
	vim /etc/named.conf
	options {
		listen-on port 53 { localhost; };	
		allow-query     { any; };	
		allow-transfer	{ none; };	
	}
编辑/etc/named.rfc1912.zones
	zone "shen.com" IN {		
    type slave;					
    masters { 192.168.27.135; };	
    file "slaves/shen.com.zone";	
	};
接着在主DNS服务器27.135中数据文件内添加从服务器的NS记录和对应的A记录
	@		IN	NS	dns2	
	dns2	IN	A	192.168.27.137	
要在客户端网卡配置文件中添加DNS记录
 cat ifcfg-eth0
	IPADDR=192.168.27.137
	PREFIX=24
	GATEWAY=192.168.27.1
	DNS1=192.168.40.135
	DNS2=192.168.40.137	:添加从服务器地址
测试:将主DNS服务器的网卡全部断开,使用dig命令测试是否会切换到从服务器
UDP53端口是用来提供查询数据的,UDP端口必须开放
TCP53端口是用来从服务器拉取主服务器区域文件的,主从复制

4. 子域创建

在主NDS服务器主域文件中添加NS记录。主域IP=192.168.27.135
vim /var/named/shen.com.zone
	beijing  IN      NS      dns3.shen.com.		:前面的beijingi就是beijing.shen.com.的子域名称
	dns3    IN      A       192.168.27.138		:定义哪台主机是子域,写上子域主机的IP
重启服务:
	rndc reload
	systemctl restart named
	
在子域DNS服务器上
修改主配置文件:
	vim /etc/named.conf	
	options {
		listen-on port 53 { localhost; };	
		allow-query     { any; };		
	};
编辑/etc/named.rfc1912.zones
	zone "beijing.shen.com" IN {
    type master;
    file "beijing,shen.com.zone";
	};
编辑数据库文件
	vim beijing.shen.com.zone 
	$TTL 86400
	@       IN      SOA     dns1    admin ( 0 1D 2H 2D 3H )
			IN      NS      dns1
	dns1    IN      A       192.168.27.136
	www     IN      A       192.168.27.137
在其他服务器上做测试
	dig www.shanxi.cheng.com @192.168.27.135	

5. 建立转发服务器

规划:27.135服务器shen.com主服务器也为转发服务器
	  27.136服务器wang.com主服务器为被转发服务器
	  27.137位客户端,通过shen.com访问wang.com
编辑27.135配置文件:
	vim /etc/named.conf
	options {
		listen-on port 53 { localhost; };
		allow-query     { any; };
		forward only;
		forwarders      { 192.168.27.137;};
		
		dnssec-enable no;
		dnssec-validation no;
	};
	区域数据库文件
		$TTL 86400
		@       IN      SOA     dns1    admin.shen.com. (
										8
										10H
										1H
										2D
										3H )
				IN      NS      dns1.shen.com.
		dns1    IN      A       192.168.27.135
编辑27.136配置文件
	vim /etc/named.conf
		options {
			listen-on port 53 { localhost; };
			allow-query     { any; };
		};
	vim /etc/named.rfc1912	
		zone "wang.com" {
		type master;
		file "wang.com.zone";
		};
	区域数据文件:
		$TTL 86400
		@       IN      SOA     dns1    admin   ( 0 1D 1H 2D 3H )
				IN      NS      dns1
		dns1    IN      A       192.168.27.136
		www     IN      A       192.168.27.136
在27.137上测试,要确保27.136上的/etc/resolve文件中没有23.136的地址,要不没什么意义
	dig www.wang.com	:返回信息是27.136的地址就对了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值