bind9是个DNS服务器软件
DNS服务概述
DNS ( Domain Name System ) 域名系统,在TCP/IP 网络中有非常重要的地位,能够提供域名与IP地址的解析服务
DNS 是一个分布式数据库,命名系统采用层次的逻辑结构,如同一棵倒置的树,这个逻辑的树形结构称为域名空间,由于DNS 划分了域名空间,所以各机构可以使用自己的域名空间创建DNS信息。
注:DNS 域名空间中,树的最大深度不得超过127 层,树中每个节点最长可以存储63 个字符。
顶级域、分类:组织域(.com,.net,org,…)。国家域(.cn,.hk,.tw,.jp)。
举例: .com顶级域 。solo90.com二级域名。www.solo90.com三级域名
例如,google为com域的子域,其表示方法为google.com,而www为google域中的子域,可以使用www.google.com表示
由最顶层到下层,可以分成:根域、顶级域、二级域、子域。
网络购买的域名就是FQDN域名(Full Qualified Domain Name 完全限定域名) 例如:blog.solo90.com
正向解析与反向解析
正向解析是指域名到IP 地址的解析过程。
反向解析是从IP地址到域名的解析过程。反向解析的作用为服务器的身份验证
反查IP的网站:https://site.ip138.com/121.42.148.69/
反向解析非常困难、因为DNS服务器是分布式的。反向解析在邮件服务器领域中是验证IP地址是不是垃圾服务器。来验证是否接受邮件的重要手段。
注意:正反向解析是两个不同的名称空间,是两棵不同的解析树。可以放在不同的服务器上。
DNS服务器的类型
DNS服务器一般而言、一般都有主从。DNS服务器的类型:1、主DNS服务器。2、辅(从)DNS服务器。3、缓存DNS服务器。4、转发器。
主DNS服务器:维护所负责解析的域内解析库服务器;解析库由管理维护;
从DNS服务器:从主DNS服务器或其它的从DNS服务器哪里赋值“复制”(区域传递)一份解析库;因为解析库分为正向和反向的解析。所以叫区域传送
- 序列号:解析库的版本号;主服务器解析库内容发生变化;其序列递增
- 刷新时间间隔:从服务器从主服务器请求同步解析库的时间间隔
- 重试时间间隔:从服务器从主服务器请求同步解析库失败时,再次尝试的时间间隔;
- 过期时长:从服务器始终联系不到主服务器时,多久后放弃从服务器角色、停止提供服务。
注:正常解析成功后在电脑主机上会有改域名的IP地址记录、也就是缓存。所以web程序员常常更新自己的缓存。
如果单独做一个DNS服务器不做任何解析、那么可以做缓存服务器。这样同局域网的机器都可以使用缓存。
域和区域
站在DNS的角度,域是逻辑概念,区域是一个物理概念
区域解析库
区域解析库。也就是解析域名的数据库文件、数据库文件中,每一个条目都称作一个资源记录(Resource Record,RR
)
资源记录的类型(RR_TYPE)
分为:A、AAAA、PTR、SOA、NS、CNAME、MX
SOA:Start Of Authority,起始授权记录:一个区域解析库有且仅能有一个SOA记录,而必须为解析库的第一条记录。
A:internet Address ,作用FQDN(域名)–>IPv4
AAAA:域名–>IPv6
PTR:IP–>FQDN
NS:Name Server,专用于表明当前区域的DNS服务器
CNAME:Canonical Name,别名记录
MX:Mail eXchanger,邮件交换器
资源记录定义的格式
通用语法:name [TTL] IN rr_type(A,AAAA,CNAME…..) value
注意:
- TTL可以从全局集成:
- @可以用于当前区域的名字;
- 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式相应;
- 同一个值也可能有多个不同的定义名字;通过多个不同的名字定义同一个值
SOA:
SOA:
name:当前区域的名字,例如"solo90.com"
value:有多部分组成;
(1)当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字;
(2)当前区域管理员的邮箱;但不能使用@符号,一般用.替换
例如email.solo90.com;
(3)(主从服务协调属性的定义以及否定的答案的统一的TTL)
下面 email.solo90.com. 为邮箱地址 、在DNS服务器一定不能忽略. 这个代表根
例如:
solo90.com. 86400 IN SOA ns.solo90.com. email.solo90.com. {
2018080822 ;序列号
2H ;刷新时间
10M ;重试时间
1W ;过期时间
1D ;否定答案的TTL值
}
NS:
NS:
name:当前区域的名字
value:当前区域的某DNS服务器的名字,例如ns.solo90.com.;
注意:一个区域可有多个NS记录
例如:
solo90.com. IN NS ns1.solo90.com.
solo90.com. IN NS ns2.solo90.com.
IN NS ns3.solo90.com.
注意:
(1)相邻的两个资源记录的name相同时,后续的可省略
(2)对NS记录而言,任何一个NS记录后面的服务器名字,都应该在后续有一个A记录
MX:
MX:
name:当前区域的名字
value:当前区域的某邮件服务器(smtp服务器)的主机名;
一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),
表示此服务器的优先级;数字越小优先级越高
例如:
solo90.com. IN MX 10 mx1.solo90.com.
IN MX 20 mx2.solo90.com.
注意:
(1)对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录
A:
A:
name:某主机的FQDN,例如:blog.solo90.com.
value:主机名对应主机的IP地址:
例如:
blog.solo90.com. IN A 1.1.1.1
blog.solo90.com. IN A 1.1.1.2
www.solo90.com. IN A 1.1.1.3
api.solo90.com. IN A 1.1.1.3
注意:
泛域名解析
*.solo90.com. IN A 1.1.1.4
避免用户写错名称时给错误答案,可通过泛域名解析进行解析制名特定地址;
AAAA:
AAAA: 于A记录一样、就是IPV6
name:FQDN
value:IPv6
PTR:
PTR:
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 PTR blog.solo90.com.
CNAME:
CNAME:
name:别的FQDN
value:正式名字的FQDN;
例如:
web.solo90.com. IN CNAME blog.solo90.com.
子域授权
子域授权:每个域的名称服务器,都是通过其上级服务器的解析库进行授权:
类似根域授权
.com IN NS ns1.com.
.com IN NS ns2.com.
ns1.com. IN A 2.2.2.1
ns2.com. IN A 2.2.2.2
solo90.com. 在.com的名称服务器上;解析库中添加资源记录;
solo90.com. IN NS ns1.solo90.com.
solo90.com. IN NS ns2.solo90.com.
ns1.solo90.com. IN A 3.3.3.1
ns2.solo90.com. IN A 3.3.3.2
BIND的安装配置
dns服务,程序包名bind、程序名named。
安装的程序包:bind bind-libs bind-utils bind-chroot
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和本地
回环地址的解析库.
rdnc:remote name domain controller,默认与bind安装在同一主机,
且只能通过127.0.0.1来链接named远程,提供辅助性的管理功能;953/tcp
主配置文件:
全局配置:options{}
日志子系统配置:loggin{}
区域定义:本机能够为那些zooe进行解析,就要定义那些zone;
zone
options {
listen-on port 53 {
127.0.0.1;
192.168.205.10;
// 为局域网其它机器提供Named服务,必须监听向本机IP发出的请求
};
// listen-on-v6 port 53 { ::1; };
directory "/var/named";
allow-query { any }; //改为any 这样任何主机可以查询
dessec:它是DNS服务器的安全扩展、配置起来非常复杂,自己配置关闭较好。
// dnssec-enable yes;
// dnssec-validation yes;
// bindkeys-file "/etc/named.iscdlv.key";
// managed-keys-directory "/var/named/dynamic";
把options 里面的这几个配置项关掉;
上述的全部做完、就可以最为一个DNS缓存服务器。
主DNS服务器
在缓存服务器上加“zone”的定义就可以了。
1、在主配置文件中定义区域
zone "zone_name" IN {
type {master|slave|hint|forward};
file "ZONE_NAME.zone";
}
master: 主要伺服器,在網域中負責名稱解析。
slave: 為了避免master發生故障時影響網路上的名稱解析工作,可以安裝其他的DNS伺服器,並且會定期複製master中的資料。
stub: 與slave類似,但只會複製master的NS紀錄,而非所有區域(zone)資訊。
hint: 表示為root伺服器。
forward: 可將來自用戶端的名稱解析要求代為轉送至其他伺服器。
2、定义区域解析库文件
文件内容就是资源记录。正向解析一个域名
$TTL 86400
@ IN SOA ns.solo90.com. 893797758.qq.com (
20180808
1H
5M
7D
1D
)
@ IN NS ns.solo90.com.
bs.solo90.com. IN A 192.168.205.10
ns.solo90.com. IN A 127.0.0.1