1、名字解析介绍和DNS
1.1、背景
当前TCP/IP网络中的设备之间进行通信,是利用和依赖于IP地址实现的。但数字形式的IP地址是很难记忆的。当网络设备众多,想要记住每个设备的IP地址,可以说是“不可能完成的任务”。那么如何解决这一难题呢?
我们可以给每个网络设备起一个友好的名称,如:www.magedu.org,这种由文字组成的名称,显而易见要更容易记忆。但是计算机不会理解这种名称的,我们可以利用一种名字解析服务将名称转化成(解析)成IP地址。从而我们就可以利用名称来直接访问网络中设备了;
除此之外还有一个重要功能,利用名称解析服务可以实现主机和IP的解耦,即:当主机IP变化时,只需要修改名称服务即可,用户仍可以通过原有的名称进行访问而不受影响。
DNS:Domain Name System 域名系统,应用层协议,是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网
基于C/S架构,服务器端:53/udp, 53/tcp
BIND:Bekerley Internet Name Domain,由 ISC (www.isc.org)提供的DNS软件实现DNS域名结构
根域
一级域名:Top Level Domain: tld ,com, edu, mil, gov, net, org, int,arpa
三类:组织域、国家域(.cn, .ca, .hk, .tw)、反向域
二级域名:magedu.com
三级域名:study.magedu.com
最多可达到127级域名
CANN(The Internet Corporation for Assigned Names and Numbers)互联网名称数字地址分配机构,负责在全球范围内对互联网通用顶级域名(gTLD)以及国家和地区顶级域名(ccTLD)系统的管
理、以及根服务器系统的管理
例如,马哥教育www.magedu.com
FQDN 全称域名=主机名(名)+域名(姓)
域名=子域名+父域名
1.2、DNS服务工作原理
DNS查询类型
递归查询:最终结果,负责到底
迭代查询:最好结果,不负责到底
名称服务器
Name Server,域内负责解析本域内的名称的DNS服务器
IPv4的根名称服务器:全球共13个负责解析根域的DNS服务器,美国10个,荷兰1,瑞典1,日本1
IPv6的根名称服务器:全球共25个,中国1主3从,美国1主2从
解析类型
FQDN --> IP 正向解析
IP --> FQDN 反向解析
注意:正反向解析是两个不同的名称空间,是两棵不同的解析树
完整的查询请求经过的流程
Client -->hosts文件 --> Client DNS Service Local Cache --> DNS Server (recursion
递归) --> DNS Server Cache -->DNS iteration(迭代) --> 根--> 顶级域名DNS-->二级域名DNS...
2、DNS 服务相关概念和技术
DNS服务器的类型
主DNS服务器
从DNS服务器
缓存DNS服务器(转发器)
主DNS服务器:管理和维护所负责解析的域内解析库的服务器
从DNS服务器:
从主服务器或从服务器“复制”(区域传输)解析库副本
序列号:解析库版本号,主服务器解析库变化时,其序列递增
(判断主备同步推或者拉得是依据主得序列号,而非主备数据)
刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
过期时长:从服务器联系不到主服务器时,多久后停止服务
通知机制:主服务器解析库发生变化时,会主动通知从服务器
区域传输
完全传输:传送整个解析库
增量传输:传递解析库变化的那部分内容
解析形式
正向:FQDN( Fully Qualified Domain Name) --> IP( 域名->ip)
反向: IP --> FQDN -->(ip->域名,配置文件里ip也需倒序写)
负责本地域名的正向和反向解析库
正向区域
反向区域
解析答案
肯定答案:存在对应的查询结果
否定答案:请求的条目不存在等原因导致无法返回结果
权威答案:直接由存有此查询结果的DNS服务器(权威服务器)返回的答案
非权威答案:由其它非权威服务器返回的查询答案
2.1、各种资源记录
区域解析库:由众多RR组成:
资源记录:Resource Record, RR
记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX
SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录
A:internet Address,作用,FQDN --> IP
AAAA:FQDN --> IPv6
PTR:PoinTeR,IP --> FQDN
NS:Name Server,专用于标明当前区域的DNS服务器
CNAME : Canonical Name,别名记录
MX:Mail eXchanger,邮件交换器
TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如:SPF(反垃圾邮件)记录,https验证等,如下示例:
_dnsauth TXT 2012011200000051qgs69bwoh4h6nht4n1h0lr038x
2.1.1、资源记录定义的格式
name [TTL] IN rr_type value
注意:
1. TTL可从全局继承
2. 使用 “@” 符号可用于引用当前区域的名字,在DNS里此符号具有特殊含义,所以在后面场景下需要添写邮件时,将@符号代替为.
3. 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应
4. 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通
过多个不同的名字可以找到同一个主机
2.1.2、SOA记录
name: 当前区域的名字,例如“magedu.org.”
value: 有多部分组成
注意:
1. 当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字
2. 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换
例如:admin.magedu.org
3. 主从服务区域传输相关定义以及否定的答案的统一的TTL
例子:
2.1.3、NS记录
name: 当前区域的名字
value: 当前区域的某DNS服务器的名字,例如ns.magedu.org.
注意:
1. 相邻的两个资源记录的name相同时,后续的可省略
2. 对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录
3. 一个区域可以有多个NS记录
例子:
2.1.4、MX记录
name: 当前区域的名字
value: 当前区域的某邮件服务器(smtp服务器)的主机名
注意:
1. 一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的
优先级;数字越小优先级越高
2. 对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录
例子:
2.1.5、A记录
name: 某主机的FQDN,例如:www.magedu.org.
value: 主机名对应主机的IP地址
避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址
例子:
2.1.6、AAAA记录(ipv6解析)
name: FQDN
value: IPv6
注意:网络地址及后缀可省略;主机地址依然需要反着写
例子:
2.1.7、子域授权
每个域的名称服务器,都是通过其上级名称服务器在解析库进行授权,类似根域授权tld glue record:粘合记录,父域授权子域的记录
例子:
2.1.8、互联网域名
1. 域名注册
代理商:万网, 新网, godaddy
2. 注册完成以后,想自己用专用服务来解析
管理后台:把NS记录指向的服务器名称,和A记录指向的服务器地址
3、DNS软件bind
DNS服务器软件:bind,powerdns,unbound,coredns
3.1 BIND相关程序包
yum list all bind*
bind:服务器
bind-libs:相关库
bind-utils: 客户端
bind-chroot: 安全包,将dns相关文件放至 /var/named/chroot/
3.2 BIND包相关文件
BIND主程序:/usr/sbin/named
服务脚本和Unit名称:/etc/rc.d/init.d/named,/usr/lib/systemd/system/named.servic
主配置文件:/etc/named.conf, /etc/named.rfc1912.zones, /etc/rndc.key
管理工具:/usr/sbin/rndc:remote name domain controller,默认与bind安装在同一主机,且只能通过127.0.0.1连接named进程,提供辅助性的管理功能;953/tcp
解析库文件:/var/named/ZONE_NAME.ZONE
注意:
(1) 一台物理服务器可同时为多个区域提供解析
(2) 必须要有根区域文件;named.ca
(3) 应该有两个(如果包括ipv6的,应该更多)实现localhost和本地回环地址的解析库
3.3、主配置文件
全局配置:options {};
日志子系统配置:logging {};
区域定义:本机能够为哪些zone进行解析,就要定义哪些zone
zone "ZONE_NAME" IN {};
注意:
任何服务程序如果期望其能够通过网络被其它主机访问,至少应该监听在一个能与外部主机通信的IP地址上;
缓存名称服务器的配置:监听外部地址即可;
dnssec: 建议关闭dnssec,设为no;
4、实现主DNS服务器
4.1 主DNS服务器配置
1. 在主配置文件中定义区域
2. 定义区域解析库文件
出现的内容
宏定义
资源记录
例子:区域数据库
例子:
4.2、主配置文件语法检查
named-checkconf
4.3、解析库文件语法检查
named-checkzone "magedu.org" /var/named/magedu.org.zone
4.4 配置生效
不重启生效的方式
rndc reload
systemctl reload named
service named reload
4.5 测试和管理工具
4.5.1 dig 命令
dig只用于测试dns系统,不会查询hosts文件进行解析
命令格式:
例子:
查看邮件服务dig -t mx kingbase.com.cn
4.5.2 host命令
命令格式:
例子:
host可以查看dns相关内容
4.5.3 nslookup命令
nslookup 可以支持交互和非交互式两种方式执行
命令格式:
交互式模式:
nslookup>
server IP: 指明使用哪个DNS server进行查询
set q=RR_TYPE: 指明查询的资源记录类型
NAME: 要查询的名称
4.5.4、rndc 命令
利用rndc工具可以实现管理DNS功能
rndc 监听端口: 953/tcp
命令格式:
4.6 实现简单的DNS服务
修改配置/etc/named.conf
windows查看dns方法;
从节点
在主节点上指定某个节点作为从节点
在从节点上设置策略,不让别的机器上同步
设置转发