DNS : Domain Name Service : 应用层协议
DNS查询类型 :
递归查询 :发出一次请求就可以获得最佳的结果
迭代查询 :服务器获取的结果不一定是需要的,需要多次发送查询请求。
解析类型 :
Name --> IP
IP --- >Name
注意 :正向解析是两个不同的名称空间,是两棵不同的解析树
本地名称解析配置文件 : /etc/hosts/
DNS服务器作用 :
接收本地客户查询请求(递归)
外部客户端请求 : 请求权威答案
肯定答案 : TTL
否定答案 : TTL
外部客户端请求 : 非权威答案
DNS 服务器的类型 :
主DNS服务器
辅助DNS服务器
缓存DNS服务器
转发器
主DNS服务器 :维护所负责解析的城内解析库服务器 :解析库由管理员维护
从DNS服务器 :从主DNS服务器或其他的从DNS服务器那里”复制(区域传送)一份解析库“;
序列号 :解析库的版本号:前提 : 主服务器解析库内容发生变化,其序列号递增
刷新时间间隔 :从服务器从主服务器请求同步解析库的时间间隔;
重试时长间隔 :从服务器从主服务器请求同步解析库失败时,再次尝试的时间间隔;
过期时长 :从服务器始终联系不上到主服务器时,多久后放弃从服务器角度,停止提供服务。。。
区域传送的类型 :
全量传送 : 传送整个解析库
增量传送 :传递解析库变化的那部分内容
区域类型 :
主区域 : master
从区域 : slave
提示区域 :hint
转发区域 : forward
两种DNS转发模式 :
forward-only
forward-first
一次完整的查询请求经过的流程
Client ---> hosts文件 --> DNS Service Local Cache (本地缓存) --->DNS Server (recursion(递归)) --> Server Cache --> iteration (迭代)
解析答案
肯定答案 :
否定答案 : 请求的条目不存在等原因导致无法返回结果;
权威答案 :
菲权威答案 :
区域解析库 :由众多RR组成 ;
资源记录 : Resource Record , RR
记录类型 : A ,AAAA ,PTR ,SOA ,NS , CNAME , MX
A : internet Address , 作用 ,解析FQDN --IP
AAAA : 解析FQDN -->IPv6
PTR : PoinTeR ,解析 IP -->FQDN
SOA : Start Of Authority, 起始授权记录 : 一个区域解析库仅能有一个SOA记录,而必须为解析库的第一条记录 :
NS : Name Server , 专用于标明当前区域的DNS服务器
CNAME : Canonical Name ,别名记录
MX :Mail eXchanger , 邮件交换器
注意 :br/>(1)TTL可从全局继承
(2)@可用于引用当前区域的名字
(3)同一个名字可以通过多条记录定义多个不同的值:此时DNS服务器会以轮询方式响应;
(4)同一个值也可能有多个不同的定义名字,通过多个不同的名字指向同一个值进行定义 ,此仅表示通过多个
SOA :
name : 当前区域的名字,例如 : “liming.com”
value : 有多部分组成
(1)当前区域的主DNS
(2) 录前区域管理员的邮箱地址 :但地址中不能使用@符号,一般用.替换, 例如 linuxedu.liming.com
(3) (主从服务协调属性的定义以及否定的答案的统一的TTL)
NS :
name : 当前区域的名字
value : 当前区域的某DNS服务器的名字 ,例如ns.liming.com
注意 : 一个区域可以有多个NS记录
例如:
ming.com. IN NS ns1.ming.com.
ming.com. IN NS ns2.ming.com.
注意 :
(1)相邻的两个资源记录的name相同时,后续的可省略;
(2) 对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录;
MX
name : 当前区域的名字
value :当前区域的某邮件服务器(smtp服务器的主机名) :
一个区域内,MX记录可有多个 : 但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级 ,数字越小优先级越高;
例如 :
ming.com IN MX 10 mx1.ming.com.
注意 :
(1)对MX记录而已 ,任意一个MX记录后面的服务器名字,都应该在后续有一个A记录 。
A :
name : 某主机的FQDN , 例如www.ming.com
value : 主机名对应的IP地址;
例如 :
www.ming.com IN A 1.1.1.1
www.ming.com IN A 1.1.1.2
mx1.ming.com IN A 1.1.1.3
mx2.ming.com IN A 1.1.1.4
注意 :
*.ming.com IN A 1.1.1.4
ming.com IN A 1.1.1.4
避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址;
AAAAA :
name : FQDN
value :IPv6
PIR :
name : IP ,有特定格式,把IP地址反过来写,1.2.3.4要写成4.3.2.1 ,而有特定后缀;in-addr.arpa,所以完整写法为:4.3.2.1 in-addr.arpa
value :FQDN
例如:
4.3.2.1 in-addr.arpa IN PIR wwww.ming.com
简写成 :
4 IN PIR wwww.ming.com
注意 :网络地址以及后缀可省略,主机地址依然需要反着写;
CNAME :
name :别名的FQDN;
value : 正工名字的FQDN
例如 :
web.ming.com. IN CNAME www.ming.com
定义转发服务器 :
注意 : 被转发的服务器需要要能够为请求者做递归,否则,转发请求不予进行;
(1)全部转发 :凡是对非本机所有负责解析的区域的请求,统统转发给指定的服务器;
Options {
forward {first|only}
fowarders
}
(2)区域转发 :仅转发对特定的区域的请求至某服务器
zone “ZONE_NAME” IN {
type forward;
forward {first|only}
forwarders
}
BIND 的安装配置 :
dns服务,程序包名bind,程序名named
程序包 :
bind
bind-libs
bind-utils
bind-chroot : /var/named/chroot/
bind :
服务脚本 : /etc/rc.d/init.d/named
主配置文件 :/etc/named.conf , /etc/named.rfc1912.zones ,/etc/rndc.key
解析库文件 :/var/named/ZONE.NAME.ZONE
注意 :
(1)一台物理服务器可同时为多个区域提供解析
(2)必须要有根区域文件
(3)应该有两个(如果包括ipv6的,应该更多)实现localhost和本地回环地址的解析库
rndc : remote domain controller ,默认与bind安装在同一主机,且只能通过127.0.0.1来连接named进程:提供辅助性的管理功能
主配置文件:
全局配置 :options {}
日志子系统配置 :logging {}
区域定义 :本机能够为哪些zone进行解析,就要定义哪些zone
zone "ZONE_NAME" IN {}
注意 :任意服务程序如果期望其能够通过网络被 其他主机访问,至少应该监听在一个能与外部主机通信的IP地址上
缓存名称服务器的配置 :
监听外部地址即可 :
dnssec :
建议测试时关闭dnssec ;
主DNS名称服务器 :
(1)在主配置文件中定义区域
zone "ZONE_NAME" IN {
type {master|slave|hint|forward};
file "ZONE_NAME.zone";
};
(2)定义区域解析库文件
出现的内容:
宏定义;
资源记录;
测试命令 :dig的使用
dig [ -t type] name [@SERVER [query options]|
dig 用于测试dns系统,因此,不会查询host文件进行解析;
查询选项 :
+[no] trace : 跟踪解析过程
+[no] recurse : 进行递归解析
测试反向解析 :
dig -x IP@SERVER
模拟区域传递 :
dig -t axfr ZONE_NAME @SERVER
例如 :dig -t axfr ming.com @172.1.1.1
host命令 :
host [-t type] name SERVER
nslookup(交互式查询工具)命令 :
nslookup [-option] [name | -] [server]
交互式模式 :
nslookup>
server IP : 指明使用哪个DNS server进行查询 ;
set q=RR_TYPE :指明查询的资源记录类型;
NAME : 要查询的名称;
反向区域 :
区域名称 :网络地址反写 . in -addr.arpa
172.16.100. --> 100.16.172.in-addr.arpa;
(1)定义区域
zone "ZONE_NAME" IN {
type {master|slave|forward};
file "网络地址.zone"
};
(2) 区域解析库文件
注意 :不需要MX和A,以及AAAA记录,以PIR记录为主;
主从复制 :
1、应该为一台独立的名服务器;
2、主服务器的区域解析库文件中必须有一条NS记录是指向从服务器;
3、从服务器只需要定义区域,而无须提供库文件:解析库文件应该放置于/var/named/slaves/目录中;
4、主服务器得允许从服务器作区域传递;
5、主从服务器时间应该同步,可通过ntp进行;
6、bind程序的版本应该保持一致:否则,应该从高,主低;
定义从区域的方法 :
zoen "ZONE_NAME" IN {
type slave;
masters {MASTER_IP;};
file "slave/ZONE_NAME.zone";
};
rndc :
rndc --> rndc (953/tcp)
rndc COMMAND
COMMAND
reload : 重载主配置文件和区域解析库文件
reload zone: 重载区域解析库文件
retransfer zone : 手动启动区域传送过程,而不管序列号是否增加;
notify zone : 重新对区域传送发通知;
reconfig : 重载主配置文件;
querylog : 开启或关闭查询日志;
trace : 递增debug级别;
trace LEVEL : 指定使用的级别;
bind 中基础的安全相关的配置
acl : 把一个或多个地址归并为一个集合,并通过一个统一的名称调用;
示例 :
acl mynet {
172.16.0.0/16
}
bind 有四个内置的acl :
none : 没有一个主机
any : 任意主机
local : 本机
localnet :本机的IP同掩码运算后得到的网络地址;
注意 : 只能先定义,后使用,因此,其一般定义在配置文件中options的前面;
访问控制指令:
allow-query {} : 允许查询的主机:白名单
allow-transfer {} : 允许区域传送的主机 :白名单;
allow-recursion {} : 允许递归的主机;
allow-update {} : 允许更新区域数据库中的内容;
bind view :
视图:
一个bind服务器可定义多个view,每一view中可定义一个或多个zone;
每个view用一来匹配一组客户端;
多个view内可能需要对同一个区域进行解析,但使用不同的区域解析库文件
例子:
view VIEW_NAME {
match-clients { };
}
注意 :
(1)一旦启用了view,所有的zone都只能定义在view;
(2)仅有必要在匹配到允许递归请求的客户所在view中定义根区域
(3)客户端请求到达时,是自上而下检查每个view所服务的客户端列表;
智能DNS :
dnspod :
dns.la
转载于:https://blog.51cto.com/13649226/2314167