笔记日期20180503
目录
专业名词解释
DNS and Bind
主DNS名称服务器
反向区域
主从复制
Bind 高级
定义转发服务器
DNS中基础的安全相关的配置
View功能
bind性能测试
专业名词解释
DNS (Domain Name Server)
tld Top Leven Domain
DNS查询类型
递归查询
迭代查询
名称服务器:域内负责解析本域内的名称主机
根服务器:全世界只有13组
解析类型
Name --> IP
IP --> Name
注意:正反向解析是两个不同的名称空间,是两棵不同的解析树
DNS服务器的类型
主DNS服务器
辅助DNS服务器
缓存DNS服务器
转发器
主DNS服务器:维护所负责的域内解析库服务器,解析库由管理员维护
从DNS服务器:从主DNS服务器或其它的从服务器那里“复制”(区域传递)一份解析库
序列号:解析库的版本号;前提;主服务器解析库内容发生变化,其序列递增。
刷新时间间隔:从服务器从主服务器请求同步解析库的时间间隔;
重试时间间隔:从服务器从主服务器请求同步解析库失败时,再次尝试的时间间隔;
过期时长:从服务器始终联系不到主服务器时,多久之后放弃从服务器角色,停止提供服务;
"通知"机制:
区域传递
全量传送:传送整个解析库
增量传送:传递解析库变化的那部分内容
DNS
Domain
正向: FQDN --> IP
反向: IP --> FQDN
各需要一个解析库来分别负责本地域名的正向和反向解析
正向区域
反向区域
FQDN: Full Qualified Domain Name
www.winthcloud.com.
一次完整的查询请求经过流程
Client --> hosts文件 -->(递归) DNS Service
Local Cache --> DNS Server --> Server Cache --> iteration(迭代)
区域解析库: 由众多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
MS: Name Server, 专用于标明当前区域的DNS服务器
CNAME: Canonical Name, 别名记录
MX: Mail eXchanger, 邮件交换器
资源记录定义格式
语法 name [TTL] IN rr_type value
注意
1. TTL可从全局继承
2. @可用于引用当前区域的名字
3. 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应
4. 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义
SOA
name 当前区域的名字,例如"winthcloud.com"
value 有多部分组成
1. 当前区域的主DNS服务器FQDN,也可以使用当前区域的名字
2. 录前区域管理员的邮箱地址:但地址中不能使用@符号,一般用.来替换
如Mini.winthcloud.com
3. 主从服务协调属性的定义以及否定的答案的统一的TTL
例如:
winthcloud.com 86400 IN SOA ns.winthcloud.com. mini.winthcloud.com. (
2018041301 ; 序列号
2H ; 刷新时间
10M ; 重试时间
1W ; 过期时间
1D ; 否定答案的TTL值
)
NS
name 当前区域的名字
value 当前区域的某DNS服务器的名字,例如ns.winthcloud.com.;
注意:一个区域可以有多个NS记录
例如
winthcloud.com. IN NS ns1.winthcloud.com.
winthcloud.com. IN NS ns2.winthcloud.com.
注意:
相邻的两个资源记录的name相同时,后续的可省略
对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录
MX
name 当前区域的名字
value 当前区域的某邮件服务器(smtp服务器)的主机名;
一个区域内,MX记录可有多个:但每个记录的value之前应该有一个数字(0-99),
表示此服务器的优先级;数字越小优先级越高;
例如
winthcloud.com. IN MX 10 mx1.winthcloud.com.
IN MX 20 mx2.winthcloud.com.
注意
对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录
A
name 某主机的FQDN 例如 www.winthcloud.com
value 主机名对应主机的IP地址
例如
www.winthcloud.com. IN A 1.1.1.1
www.winthcloud.com. IN A 1.1.1.2
mx1.winthcloud.com. IN A 1.1.1.3
mx2.winthcloud.com. IN A 1.1.1.3
注意
*.winthcloud.com. IN A 1.1.1.4
避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址;
AAAA
name FQDN
value IPv6
PTR
name IP, 有特定格式,把IP地址反过来写,IP 1.2.3.4 要写成 4.3.2.1;
in-addr.arpa. 因此完整写法为 4.3.2.1.in-addra.arpa.
value FQDN
例如
4.3.2.1.in-addra.arpa. IN PTR www.winthcloud.com.
简写成
4 IN PTR www.winthcloud.com.
注意:网络地址及后缀可省略;主机地址依然需要反着写;
CNAME
name 别名的FQDN
value 正式名字的FQDN
例如
web.winthcloud.com. IN CNAME www.winthcloud.com.
DNS and BIND
子域授权:每个域的名称服务器,都是通过其上级名称服务器在解析库进行授权
类似根域授权tld
.com. IN NS ns1.com.
.com. IN NS ns2.com.
ns1.com. IN A 1.1.1.1
ns2.com. IN A 2.2.2.2
winthcloud.com 在.com的名称服务器上,解析库中加添资源记录
winthcloud.com. IN NS ns1.winthcloud.com.
winthcloud.com. IN NS ns2.winthcloud.com.
ns1.winthcloud.com. IN A 4.4.4.4
ns2.winthcloud.com. IN A 5.5.5.5
gjue record 粘合记录
域名注册
这个是要收费的如果想在互联网上注册一个域名,下方所提供几个供应域名的提供商
代理商:万网,新网,godaddy
注册完成后 进入管理后台:把NS记录指向的服务器名称,和A记录指向的服务器地址
BIND (Berkeley Internet Name Domain)
dns服务,程序包名bind, 程序名named
程序包
bind
bind-libs
bind-utils
bind-chroot /var/named/chroot
bind 配置文件(centos 7)
服务脚本 /usr/lib/systemd/system/named.service
主配置文件 /etc/named.conf
/etc/named.iscdlv.key
/etc/named.rfc1912.zones
/etc/named.root.key
/etc/rndc.conf
/etc/rndc.key
解析库文件 /var/named/ZONE_NAME.ZONE
注意
一台物理服务器可同时为多个区域提供解析
必须要有根区域文件 named.ca
应该有两个(如果包括ipv6的应该更多)实现localhost和本地回环地址的解析库
rndc (remote name domain controller),默认与bind安装在同一主机,且只能通过
127.0.0.1来连接named进程;提供辅助性的管理功能; 935/tcp
主配置文件内容解析
全局配置 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 定义区域解析库文件
$TTL 86400
$ORIGIN winthcloud.com.
@ IN SOA ns1.winthcloud.com. admin.winthcloud.com (
2018041701
1H
5M
7D
1D )
IN NS ns1
IN NS ns2
IN MX 10 mx1
IN MX 20 mx2
ns1 IN A 10.10.100.142
ns2 IN A 10.10.100.148
mx1 IN A 10.10.100.142
mx2 IN A 10.10.100.143
www IN A 10.10.100.142
ftp IN CNAME www
注意
区域文件创建后需要修改属组和文件权限,不然无法访问
因为named的进程属主是named的用户运行的,如果你是以root编辑的文件
named会无法访问,区域文件建议权限为640,区域文件属组改为named
named的错误检查命令
named-checkconf 检查/etc/named.conf和关联的配置文件语法问题
named-checkzone 检查zone名称以及其配置文件是否存在语法问题
状态命令
rndc status 检查当前dns服务状态
测试命令
dig [-t type] name [@server]
dig用于测试dns服务,因此,不会查询hosts文件进行解析
测试反向解析
dig -x IP @SERVER
模拟区域传送
dig -t axfr ZONE_NAME @SERVER
dig -t axfr winthcloud.com
反向区域
区域名称 网络地址反写.in-addr.arpa.
172.16.100. --> 100.16.172.in-addr.arpa.
定义区域
zone "ZONE_NAME" IN {
type {master|slave|forward};
file "网络地址.zone";
};
定义区域解析库文件
$TTL 86400
$ORIGIN 128.10.10.in-addr.arpa.
@ IN SOA ns1.winthcloud.com. admin.winthcloud.com. (
2018042201
1H
5M
7D
1D )
IN NS ns1.winthcloud.com.
IN NS ns2.winthcloud.com.
142 IN PTR ns1.winthcloud.com.
143 IN PTR ns2.winthcloud.com.
142 IN PTR www.winthcloud.com.
143 IN PTR mx1.winthcluod.com.
注意:不需要MX和A,以及AAAA记录
主从复制:
DNS从服务器作用
减轻主DNS负责名称解析的任务
注意
1. 应该为一台独立的名称服务器
2. 主服务器的区域解析库文件中必须有一条NS记录指向从服务器
3. 从服务器只须定义区域,而无须提供解析库文件,它会自动从主服务器同步生成
解析库文件应放置于/var/named/slaves目录中
4. 主服务器得允许从服务器作区域传送
5. 主从服务器时间应该同步,可通过ntp进行
6. bind程序的版本应该保持一致;如有差异,从服务器版本理应比主版本要高
从服务器配置解析库文件放在刚刚那个目录是因为这个目录已经定义了相应的权限
定义从服务器区域的方法
zone "winthcloud.com" IN {
type slave;
masters { MASTER_IP; };
file "slaves/ZONE_NAME.zone";
};
rndc 命令使用
rndc --> rndc (953/tcp)
rndc command:
reload
reload zone
retransfer zone
freeze zone
notify zone
reconfig
status
trace level
querylog
Bind 高级
子域授权: 分布式数据库
正向解析区域添加子域
ops.winthcloud.com IN NS ns1.ops.winthcloud.com.
ops.winthcloud.com IN NS ns2.ops.winthcloud.com.
ns1.ops.winthcloud.com. IN A 10.10.10.200
ns1.ops.winthcloud.com. IN A 10.10.10.201
定义转发服务器
注意:被转发的服务器需要能够为请求者做递归,否则,转发请求不予进行
1. 全部转发:凡是对非本机所有负责解析的区域的请求,统统转发给指定的服务器
Options {
forward {first|only};
fowarders { ip; };
};
first 首一次转发,如果没有回信就找根
only 一直转发,如果查询不到,不会去找根迭代
2. 区域转发:仅转发对特定的区域请求至某服务器
zone "ZONE_NAME" IN {
type forward;
forward {first|only};
forwarders { IP; };
};
注意: 关闭options段中的 dnssec功能
dnssec-enable no;
dnssec-validation no;
DNS中基础的安全相关的配置
acl 把一个或多个地址归并为一个集合,并通过一个统一的名称调用
acl ACL_name {
ip;
ip;
network/mask;
}
示例
acl mynet {
10.10.10.0/24;
192.168.1.1;
};
bind 有四个内置的acl
none 没有一个主机
any 任意主机
local 本机
localnet 本机的IP同掩码运算后得到的网络地址
注意:只能先定义,后使用,因此,其一般定义在配置文件中的options的前面
访问控制的指令
allow-query {}; 允许查询的主机:白名单;
allow-transfer {}; 允许区域传送的主机:
allow-recursion {}; 允许递归的主机
allow-update {}; 允许更新区域数据库中的内容
View功能
可以将不同的客户端发来的同样的域名解析成为不同的IP地址
一个bind服务器可定义多个view,每个view中定义一个或多个zone
每个view用来匹配一组客户端
多个view内可能需要对同一个区域进行解析,但使用不同的区域解析库文件
view VIEW_NAME {
match-clients { ip|acl };
};
注意
1. 一旦启用了view,所有的zone都只能定义在view之中
2. 仅有必要在匹配到允许递归请求的客户所在view中定义根区域
3. 客户端请求到达时,是自上而下检查每个view所服务的客户端列表
CDN Content Delivery Network
编译安装bind
isc.org
1. 解压源码文件
2. 添加用户组和用户named
3. 配置bind安装初始化
4. make | make install
bind性能测试
在源码文件中有一个文件夹queryperf此文件夹里有测试bind解析性能
./configure | make
会产生一个queryperf执行文件
执行文件
queryperf -d /path/somefile -s Server-IP
文件内容
网址 A
网址 NS
网址 max
测试时如果打开查询追踪和不打开,性能有差别很大,查询追踪就是在日志里记录哪个客户端来
服务器这里请求解析,由于写日志需要i/o所以会导入bind性能
原文地址:http://blog.51cto.com/winthcloud/2112325