第一部分:DNS概述
1、概含
DNS(domain name system)用于解决通信转换问题
IP地址与名称
1)DNS域名称空间:它指定用于组织名称的域的层次结构
2)资源记录(RR-resource record):它将DNS域名映射到特定类型的资源信息,
以供在名称空间中注册或解析名称时使用。在Linux系统中,通常“名称解析库(文本
文件,位于/var/named/)”中的每一行称作一个资源记录
3)DNS服务器:它存储和应答资源记录的名称查询
4)DNS客户端(解析程序):它查询从服务器来的搜索及将名称解析为查询中
指定的资源记录类型。
2、DNS作用
1)DNS作用
ü正向解析:根据主机名称(域名)查找对应的IP地址
ü反向解析:根据IP地址查找对应的主机域名
示例:magedu.com 这里为域名
FQDN www.magedu.com 主机名
101.200.188.230--->www.magedu.com(地址至名称反向解析)
3、DNS结构
顶级域:由两三个字母组成的名称,用于指示国家(地区)或使用名称的单位的类型。
组织域:.net, .com, .org, .mil, .edu, .gov, .cc, .mobi
国家域:.jp, .tw, .hk, .iq, .ir, .cn, .uk, .us
1)DNS分布式数据结构- 是一个倒置的树结构
用”.”代表根服务器(提供信息服务,全球13台)
顶级域包括组织域、国家域。200个左右
个人申请的是一级域(新网,万网)
下面的为二级域
2)DNS查询方式
AA:递归查询:客户端向DNS解析域名的方式
客户端向域名请求,这里域名服务器负责提供查询服务,
不需要客户端参与。由域名服务器解析完成后提供给客户端
结果。(不关心过程,只注重结果)
BB:迭代查询:DNS服务向基它DNS解析域名的方式(默认)
解析过程中,只根的地址,客户端参与。这时域名服务器压力比较小。
客户端分别与根 一级域名 进行通信。运营商常用!
@1:正向 FQDN->IP
@2: 反向:IP—>FQDN
3)DNS解析过程
@1:访问过程中本机/etc/hosts文件条目优先,可通过文件/etc/nsswitch.conf
进行配置:修改优先级
@2:本地DNS文件 /etc/resolv.conf,指定域名解析服务器
正常选择第一个,如果第一个不down机不会访问第二个,一般
由运行商提供通常是缓存域名服务器。
其中区域zone(例如北京的海淀区)
Domin(例如北京一个大区域)
示例:以 www.magedu.com为例,采用倒置方式查找。
@1:先找本地是否有记录,有的直接返回。没有的话找全球13台
根服务器的其中的一台。即”. “
@2:然后根服务器提供”.com ”,再发请求到.com服务器,这里
返回”".magedu.com”
@3:再找www,提供地址
4、DNS类型
1)定义
AA:主域名服务器(权威)
- 特定DNS区域的官方服务器,具有唯一性
- 负责维护该区域内所有域名->IP地址的映射记录
- 对区域的所有更新都通过此服务器进行;
BB:从域名服务器
- 也称为 辅助域名服务器
- 其维护的 域名->IP地址记录 来源于主域名服务器
- 只从同一个区域的主服务器或其它从服务器同步区域数据文件
只有主故障后,从才能够有效
CC:缓存域名服务器(非权威)【一般运营商提供】
- 也称为 唯高速缓存服务器
- 通过向其他域名服务器查询获得域名->IP地址记录
- 将域名查询结果缓存到本地,提高重复查询时的速度
2)主从协调过程
AA:DNS主从协调?
- 区域数据文件有版本号(序列号): serial(同步第一条记录)
- 刷新时间(检查周期):refresh(第二条记录)
- 重试时间(重试周期): retry(第三条记录)
- 过期时间(失效时长): expire (第四条记录主DNS故障后从DNS提供
多长时间失效)
- 否定应答的TTL值:针对应答提供否定应答
以上五个值需要在配置主DNS时指定,为起止授权记录SOA
BB:协调过程:
从服务器在间隔达到refresh指定的时长后发起同步请求至主服务器;
主服务器响应serial,从服务器与本地的serial进行比较;如果主服务
器serial大于本地,意味主服务器区域数据文件更新了,因此请求同步
3)区域解析数据库
资源记录:resource record(rr),每个DNS域名解析需要区域解析文件,
这个文件称为区域解析数据库,记录相应的资源记录
AA:资源记录类型(resource record type
- SOA: Start Of Authority,起始授权记录;一个区域文件有且只能一
个SOA记录;SOA还必须是第一条资源记录;(主从协调从本记录)
- NS:Name Server,标名名称服务器
- MX:Mail eXchanger,邮件交换器
- Address,FQDN-->IPv4(正向解析)
- AAAA: Address, FQDN-->IPv6
- PTR: Pointer,指针,IP-->FQDN(反解)
- CNAME: Cononical NAME,正式名称(别名CDN)
按照别名解析,例如web别名www;这里通过www.magedu.com访问
BB:SOA配置实例
PowerDNS(新网)
定义格式:name [ttl] IN rr_type value
TTL为缓存时间:缓存时间未到,客户端DNS解析不会更新,
只能够手工刷新。
IN固定主法 rr_type(上述7中类型之一)
SOA后面的值,指向名称,管理员邮箱 . 后为必须标记为区域。
算是一个解析。FQDN
dns.magedu.com 代替[email protected],
@表示作用域,是单独变量,区域名称。可代替作一个简写。
示例:语法结构:类型C语言
magedu.com 60 IN SOA magedu.com. dns.magedu.com.(
2014120901 #版本号序列号 ;serial number
1H #更新时间
5M #重试时间无次数限制
7D #失效时间(主故障,从能够提供多久服务)
1D ) #没有内容,后续TTL否定应答时间,
CC:NS配置语法(Name Server)
用于指定一个域名用于解析,需要单独定义
NS: 一个区域数据文件可以有多个NS记录;
name: 区域名称,可使用@替换;(这个区域的变量替换)
value:dns服务的FQDN格式,FQDN后面需要加点
格式:
名称 IN 类型 值 (IN为固定,类型为 NS)
示例:
magedu.com. IN NS dns1.magedu.com.
IN NS dns2.magedu.com.
备注:
v1、相邻的资源记录name相同时,后面的可省略;(如第二条)
v2、任何一个value中指定的FQDN,在其域的正向
解析文件中应该有A记录(域名和IP的对应关系)
DD:MX记录
针对邮件,区别在于指定优先级
格式:名称 IN 类型 Vaule(值-优先级)
- MX:一个区域数据文件可以有多个MX记录;
- name: 区域名称,可使用@表示;
- value: 邮件服务器的FQDN
- value之前需要一个数字表示其优先级(0-99, 数字越小优先级越高)
示例:
@ IN MX 10 mx1.magedu.com.
IN MX 20 mx2.magedu.com.
EE:A记录解析
重要功能实现正向解析,域名至IP地址
A, AAAA: 应用于正向区域文件
格式:
name IN 类型 value
name=FQDN Value=IP
当ip V4时值为A IPV6 值为AAAA
示例:
www.magedu.com. IN A 1.1.1.1
www.magedu.com. IN A 2.2.2.2
(以上方法实现轮巡负载均衡方案1个名称多个IP,第一用户
1.1.1.1,第二个用户为2.2.2.2,轮巡调用。DNS内有计数)
mx1.magedu.comm IN A 1.1.1.1
pop3.magedu.com IN A 1.1.1.1
FF:PTR反向地址解析
实现IP地址至FQDN
格式:
name IN 类型
- name: IP地址的逆向格式,并附加in-addr.arpa.后缀
- value: FQDN
示例:
6.100.16.172.in-addr.arpa. IN PTR
GG:CNAME记录类型
别名后需要再做A记录,通过内置转换机置,用于第三方
CDN服务。
格式: name IN Value
name:别名FQDN
value正名FQDN
示例:
web.magedu.com. IN CNAME
第二部分:Bind域名服务基础
Bind默认启动缓存服务功能 90%互联网公司使用。在红帽当中。
另外一种是PowerDNS(新网)
1、Bind安装与服务管理
@1 Bind域名服务基础
AA:定义:Bind (berkeley Internet Name Daemon)
伯克利Internet域名服务
官方站点:https://www.isc.org #ISC 互联网系统联盟
BB:相关软件包
- bind-9.9.4-18.el7_1.5.x86._64 #主程序和相关文件
- bind-utils-9.8.2-0.30.rc1.el6.x86_64 #DNS测试工具nslookup、dig
- bind-chroot-9.3.3-7.el6 #bind提供伪装的根目录增强安全性
(将“/var/named/chroot/”文件夹作为BIND的根目录)
nslookup解析示例:
CC:安装过程
步骤1:yum install bind
步骤2:查看安装包rpm –ql bind (-ql 表示查询并显示)
步骤3:查看ss –tnl 查看端口(53、953端口)
CC:Bind服务器端程序
- 主要执行程序:/usr/sbin/named
- 服务脚本:/etc/init.d/named # service named start|stop|restart
centos 7 systemctl restart named
- 默认监听端口:53#TCP、UDP以及TCP 953
#其中UDP 53端口一般对所有客户机开放,以提供解析服务;
#TCP 53端口一般只对特定从域名服务器开放,提高解析记录传
输通道;
#TCP 953端口默认只对本机(127.0.0.1)开放,用于为rndc远程
管理工具提供控制通道
- 主配置文件: /etc/named.conf #C语言格式
- 主工具目录:/var/named
- 远程域名控制:/etc/rhdc.conf #配置工具
- Bind管理工具:/usr/sbin/rndc
- 配置检测工具/usr/sbin/named-checkconf #检查主配置
- 配置检测工具: /usr/sbin/named-checkzone #检查区域
- 保存DNS解析记录的数据文件位于: /var/named/
- 启动文件 /etc//init.d/named (centos 6所在目录)
2、Bind配置
以下配置包括主配置文件named.conf和区域数据配置文件二个章节组成
第一章:主配置文件
全局配置是以“options {};”的形式出现的
主配置文件named.conf #配置格式”配置关键字 值”形式
主配置文件由Options,logging,zone三部分组成。zone区域部分是
说明那些有域进行管理。一个zone配置代表一个区域。另外include代表
额外的配置文件(第一个用于为自己的解释,第二个用于key)
@1:Options部分
- 设置DNS服务器的全局参数
- 包括监听地址/端口、数据文件的默认位置等
- 使用 options { …… }; 的配置段
红色目录:必选项,其它可省略
IP地址可对外服务地址
53端口(TCP 53 用来区域传送,主从同步| UDP53用查询)
allow-query(可修改为any,那个可以使用dns)
/var/named目录访问进行相应的处理
recursion yes:是否可以递归:YES时说明是缓存服务器
下为centos 7
@2:login部分
日志级别为debug级别(包括重启、reload等)
file为日志路径(相对路径),对options中directory参数值为基准
serverity dynamic实现动态打印
@3:Zone区域
由“zone “DNS域” IN {};”的形式出现的,有多少个区域就设置
多少个zone配置
- 设置本服务器提供域名解析的特定DNS区域
- 包括域名、服务器角色、数据文件名等
- 使用 zone “区域名” IN { …… }; 的配置段
?每个zone区域都是可选的(包括根域、回环域、反向域),具体根据实际
需要而定,zone配置部分的“IN”关键字表示“Internet”的意思,通常
可以省略
?type关键字用于设置该区域的类型,可设置为以下值:hint表示根域、
master表示主域、slave表示从域等
?file关键字用于指定该区域对应的数据文件名,如果没有指定绝对路径,
则该文件默认位于全局配置中“directory”关键字指定的目录中,文件
名由管理员自行定义。named.ca为根域的解析文件
@4:zone区域反向部分
倒序网络地址.in-addr.arpa 的形式表示反向区域
?正向区域、反向区域的zone配置段,其中type、file是必须有的,
allow-transfer、allow-update等是可选配置
?区域设置中的部分配置内容(如allow-transfer、allow-update等)
也可以放在全局配置里
示例:
步骤1:查看named进程 ps –ef|grep named
步骤2:查看端口ss –tln 或者netstat –tunlp
(t—tcp u—>udp n—>数字形式 l—>listen p—>进程)
第二章:区域数据配置文件
@1:全局TTL配置项及SOA记录
- $TTL(Time To Live,生存时间)记录
- SOA(Start Of Authority,授权信息开始)记录
- 分号“;”开始的部分表示注释信息
注意:?在区域数据文件中,表示DNS域名或者完整的主机名(FQDN)地址时,
最后必须加上“.”号,例如“magedu.com.”
@2:域名解析记录
- NS域名服务器(Name Server)记录:可配置多行
- MX邮件交换(Mail Exchange)记录
- A地址(Address)记录,只用在正向解析的区域数据文件中
- CNAME别名(Canonical Name)记录:多个域名一个IP地址
注意:NS、MX记录行首的“@”符号可以省略(默认继承SOA记录行首的@信息),
但是必须保留一个空格或者制表位
@3:域名解析记录
- PTR指针(Point)记录,只用在反向解析的区域数据文件中
- 配置反向解析记录时,只需要指定IP地址中的主机地址部分即可,网络地址部分不用写
@4:区域数据文件的特殊应用
- 基于域名解析的负载均衡: 同一域名对应到多个IP地址
- 泛域名解析:找不到精确对应的A记录时,使用“*”进行匹配
- 子域授权:将DNS子区域内主机地址的解析记录,授权给子域的域
名服务器进行维护和解析
3、配置文件语法检查
@1:named-checkconf工具
语法:named-checkconf [主配置文件]
@2:named-checkzone工具
语法:named-checkzone <域名> <区域数据文件>
第三部分:Bind应用实例
1、构建缓存域名服务器
@1:默认情况下启用recursion yes情况下自动配置为缓存域名服务器
@2:配置过程
- 建立named.conf主配置文件:通过根域或者转发机制指定解析源
- 确认建立named.ca根区域数据文件: 若使用转发机制则无需此步骤
- 启动named服务
- 验证缓存域名服务器: nslookup命令(Windows环境)
示例:
步骤1:备份/etc/named.conf文件为/etc/named.conf.bak
步骤2:编辑新文件/etc/named.com
all-recursion { 172.16.16.0/24; } 允许给谁递归
步骤3:修改文件属主、属组和权限
步骤4:利用named-checkconf以及named-checkzone查看配置
步骤5:修改本机DNS服务器,指向本机/etc/resolv.conf
步骤6:重新启动服务systemctl restart named
这里同时查看/var/log/message日志,同时关于/etc/selinux目录
下的config修改selinux=Permissive,或者setenforce 0(临时生效)
步骤7:查看端口netstat –tunlp 查看tcp/udp53端口
步骤8:验证 nslookup或者dig、host命令查看,
axfr 完全区域传送(对方区域的所有数据):主从结构时
ixfr 增量区域传送
host –t 类型 名称 #查询名称的解析结果
host –t A www.magedu.com
host –t NX www.magedu.com
host –t SOA magedu.com
nslookup>交互式
server IP
set q=RT
NAME
示例:
nslookup www.baidu.com
左侧为缓存服务器解析,右则为通过219.233.241.164这个DNS解析
dig –t NS “.” 查询根记录
dig –t A www.baidu.com @172.16.16.104
表示通过172.16.16.104 主机找baiduA记录
2、构建主域名服务器
@1:配置过程
- 1.在named.conf配置文件中添加“magedu.com”主区域
注意: @这里可代替magedu.com
- 2.建立“magedu.com”区域的数据文件,以/var/named/
注意: /var/named为特殊文件权限750
创建magedu目录与named.conf中file文件相同,再创建解释文件
magedu.com.zone
vim编辑magedu.com.zone
第一行为区域起始授权记录
第七行:指定nsserver。不指定会继承上一级目录。
第八行开始:添加A记录等内容
这里要注意2015100206版本要小于10位数字。
当增加ns服务器时,需要增加到本地的数据文件当中。
IN NS dns.magedu.com.
IN NS dns2.magedu.com. 新增
dns IN A 172.16.16.104
dns2 IN A 172.16.16.109 #新增
编辑完成magedu.com.zone文件后,进行检查
named-checkconf
named-checkzone zone名称进行检查
- 3.启动或者重新加载named服务程序
systemctl restart named
4.验证主域名服务器
工具包查询rpm –ql bind-utils
dig –t NS . @ 主机 查找根域所有DNS -t代表类型
dig –t A www.magedu.com @172.16.16.104
dig –t A mail.magedu.com @172;.16.16.104
dig –t A mail.magedu.com +trace #演示整个寻址过程
套接字socket
IP: Port 让客户端通过这种机制,让不同主机之间的进程通信。
服务端进行监控
补充:创建反向解析:严格按照x.x.x.in-addr.arpa”形式定义
/etc/named.conf文件配置
/var/named/magedu/16.16.172.zone文件配置
IN NS ns1.magedu.com. 后面必须为FQDN
验证 :dig –x 172.16.16.104 @172.16.16.104
3、构建从域名服务器
注意:在named.conf可定义全局TTL值:$表示宏
示例 $TTL 200
allow-transfer 允许那台过来更新,从主域服务器更新
配置过程:
- 在从服务器named.conf配置文件中添加“magedu.com”辅助区域
- .启动从服务器中的named服务程序
- .验证从域名服务器
在客户机中将DNS服务器设为从域名服务器
使用nslookup测试域名解析是否正常
示例:
@1:只需要在从域名服务器配置name.conf文件即可
将类型修改为slave 文件保存到slaves目录下,
同时指向master。同步完成后会在slaves目录下创建相应的文件
这里注意named文件的权限(为named组)
@2:从服务器DNS指向自己,查询域指向magedu.com。
从服务器启动服务前关于主服务器的防火墙iptables –F,
同时利用dig –t axfr magedu.com @172.16.16.104验证传送
正常。
再启动从服务器端服务。
@3:查看主DNS端:/var/log/messages
查看从DNS端
4、构建分离解析的域名服务器
用于来自不同地址的客户机请求解析同一域名时,为其提供不同的解析结果
通过在named.conf文件配置不同的view
配置过程:
- 在named.conf主配置文件中为不同的客户机地址启用不同的zone区域设置,
各自使用独立的数据文件
- 分别建立不同的区域数据文件
- 启动或重新加载named服务程序
- 验证分离解析的域名服务器
示例1:
示例2:类型创建视图,不同视图不同客户端。
5、子域授权
父域授权给子域,子域可管理自身。
子域有几个名称记录,在父域建几条记录
@1:父域授权子域
父域为magedu.cm,后台NS1、NS2定义映射本地,同时指向内部的
IP地址。(二个实现主从)
子域名称(sub_zone_name) IN NS NSserver_SUB_Zone_Name
NSserver_SUB_Zone_Name IN A IP
示例:
.com
magedu.com. IN NS NS1.magedu.com.
IN NS NS2.magedu.com.
NS1.magedu.com. IN A 172.16.16.104
NS2.magedu.com. IN A 172.16.16.109
这样.com能够发现有二个nds服务器,从中找一个。
@2:子域实现自我管理
子域可以与父域不太一个网段当中
magedu.com
fin.magedu.com. IN NS ns1.fin.magedu.com.
fin.magedu.com. IN NS ns2.fin.magedu.com.
ns1.fin.magedu.com. IN A 172.16.10.104
ns2.fin.magedu.com. IN A 172.16.10.105
mk.magedu.com. IN NS ns1.mk.magedu.com.
ns1.mk.magedu.com. IN A 172.16.10.105
@3:主DNS,数据文件配置补充
参考格式
@ IN SOA magedu.com admin.magedu.com {
@ NS Dns1.magedu.com 自已
@ NS dns1.tech.magedu.com 子域
A 二个dns相应a记录
A 二个dns相应的a记录
@4:配置示例:
步骤1:配置父域数据文件
步骤2:配置子域named.conf文件以及数据文件
从服务器find.magedu.com数据文件
这里可配置转发 forward 包括only与first二个值,如果将forward放到options
表示全局,也可以指定相应的区域当中。如fin.magedu.com当中。
转发域
zone “zone Name” IN {
type forward;
}
步骤 3:利用dig –t NX fin.maged.com @172.16.16.104
6:rndc:remote name daemon control
rndc是bind管理工具,可以通过实现本地或远程了解当前运行。
rndc一般禁用,与dns连接时,需要使用数字证书进行验证。用
rndc-confgen生成后,导入到named.conf文件中。在初始安装时
系统会自己生成/etc/rndc.key文件。
语法:rndc --help
Usage: rndc [-b address] [-c config] [-s server] [-p port]
[-k key-file ] [-y key] [-V] command
运行rndc-config > /etc/rndc.conf
rndc status #显示DNS运行状态
rndc reload #重新加载配置文件
rndc reconfig #重新加载named.conf和新的域配置文件
rndc dumpdb #导出缓存到文件
rndc flush #清空缓存
rndc-confgen 为rndc key生成工具
示例:
rndc –c rndc.conf status #查看状态
第三部分:CDN技术
CDN(内容分发网络):由第三方运营商(主流为网宿、帝联、蓝汛
阿里、腾讯、百度等)
三个核心技术 :
CDN加速指静态资源
1、智能DNS: bind-zld 支持mysql
里面含有IP库等信息
cip cport sip sport
源地址和源端口 | 目标地址和目标端口
2、全局负载均衡:
3、缓存服务:
针对静态资源具有单独的域名例如image.xxxx.com,
将其镜像到CDN网络中。
例如阿里,右键--》审查元素--》网络,选择相应的静态
文件即可(例如jpg等)