域名解析,BIND:Berkeley Internet Name Domain
DNS:Domain Name Service,名称解析(转换)Name Resolving(背后有查询过程,这就需要用到"数据库")
域名:.com域名是一级一级的,一个完全限定域名是由很多域名一层一层类加而成的
www.baidu.com(主机名FQDN(完全限定域名):full qualified domain name)
DNS出现的原因:人类容易记住主机名,计算机只能识别IP,所以需要将主机名和IP一一对应起来,这样都方便。即:
FQDN <------> IP
172.25.254.1 www.fsx.com
nsswitch:提供名称解析平台
解决域名和IP对应起来方案
第一个解决方案:file:/etc/hosts
IPADDR FQDN Ailases
172.25.254.1 www.fsx.com www
第二个解决方案:
IANA(互联网地址名称分配机构,有政府背景)
ICANN(这是一个民间组织,管理最顶级的集合)
周期性任务:每一定周期让客户端更新一次hosts,不过仍不能保持域名解析是最新的
SERVER:IANA提供一个SERVER,每次客户端要访问,直接向SERVER发起请求,SERVER帮助解析;随着业务增多SERVER不堪重负
分布式数据库,把DNS从一个集中的数据库,转化为一个分布式的数据库。只管理自己下级域名(下级不知道上级信息,只知道根域)
dns:DNS
stub resolver:名称解析器
ping www.baidu.coom
ping先利用stub resolver去/etc/hosts寻找www.baidu.com的域名解析,如果没有再向DNS服务器查找域名解析
域名解析
www.fsx.com. //注意:最后有一个'.',这是根域,.com是顶级域,以此类推。
根域: 就是一个"."
TLD:top level domain 成为顶级域/一级域。如:
组织域:.com、.org、.net等
国家域:.cn、.jp等
反向域:将IP转换成域名
查询域名的IP
递归查询
只发出一次请求,然后等待回应
请求:A-->B-->C
响应:C-->B-->A
整个过程A只发出一次请求
迭代查询
发出多次请求
请求:A-->B B-->A (A向B请求,B返回C的信息让A去向C请求)
A再次请求:A-->C C-->A (A向C发出请求,C响应)
整个过程A多次发出请求
解析方式
正向:FQDN-->IP
反向:IP-->FQDN
两段式:互联网上的IP查询,需要同时用到递归,迭代查询,客户端向DNS服务器查询是递归查询,DNS服务器向别的服务器查询是迭代查询。
DNS服务器:
接受本地客户查询请求(递归)。
来自外部客户端请求:请求权威答案
肯定答案(有):TTL
否定答案(没有):TTL
外部客户端请求:非权威答案
DNS服务器
根节点服务器
全球总共由十三个,a.root-server.net ----- m.root-server.net
这十三个根节点应该保持完全一致(时时同步)。
DNS服务器主从结构
为了避免一个DNS服务器的单点故障,应该设置主从结构的DNS服务器架构;当然这就要求主从服务器的数据必须时时同步;主DNS提示更新,辅助DNS定期去请求(如果有更新)拉取数据
主DNS服务器:数据修改
辅助DNS服务器:请求数据同步
如果主DNSdown机,辅助DNS服务器在有效期内会一致请求数据拉取,超过有效期仍没有响应,辅助DNS自杀。集群进行投票选举出新的主DNS
serial number:版本号(序列号)
refresh:检查的时间周期
retry:重试时间(当发现版本号不一样,就retry时间内再次查看)
expire:过期时间(retry次数达到一定时间,不再查看)
nagative answer ttl:否定答案
缓存DNS服务器
转发器
不缓存,只转发请求
数据库中,每一个条目称为一个资源记录(resource record)
资源记录
资源记录的格式:
NAME TTL值(可以省略) IN RRT(资源记录类型) 数据(value)
TTL 600s;
www.fsx.com. IN A 172.25.254.1 //正向解析
1.1.1.1 IN PTR www.fsx.com. //反向解析
";"号是注释
资源记录类型:
NS(name server):Domain Name --> FQDN
SOA(Start Of Authority):起始授权记录,用于标明一个区域内部,主从DNS服务器之间,如何同步数据,以及起始授权对象是谁。
ZONE NAME 600 IN SOA FQDN ADMINISTRATOR_MAILBOX(邮箱地址,具体格式:fsx@qq.com(这里不能使用@,@有特殊意义) --> fsx.qq.com) (serial number/refresh/retry/expire/NA(可以使用单位:M/H/D/W,默认是秒) ttl)
fsx.com. 600 IN SOA ns1.fsx.com. fsx.qq.com. (20180327 1H 5M 1W 1D)
fsx.com. 600 IN NS ns1.fsx.com.
fsx.com. 600 IN NS ns2.fsx.com.
ns1.fsx.com 600 IN A 172.25.254.3
ns2.fsx.com 600 IN A 172.25.254.4
A记录(Address):FQDN-->IPv4
ns.fsx.com. 600 IN A 172.25.254.1
AAAA记录:FQDN-->IPv6
MX(Mail eXchanger):ZONE NAME --> FQDN
邮件服务器格式:zone name TTL IN MX pri VALUE
fsx.com. 600 IN MX 10(优先级) mail.fsx.com.
mail.fsx.com. 600 IN A 172.25.254.2
优先级:从0-99,数字越小,级别越高
PTR(指针记录):IP-->FQDN
CNAME(canonical name:别名记录):FQDN-->FQDN
www2.fsx.com. IN CNAME www.fsx.com.
www2是www的别名,www是www2的正式名称
域:Domain,在DNS角度,域是个逻辑概念
区域:ZONE,是一个物理概念
fsx.com. 172.25.254.0/24
在.com授权:
正向区域文件:
fsx.com. IN SOA
www.fsx.com. IN A 172.25.254.1 //全写一定要加.
www IN A 172.25.254.1 //简写不加.
反向区域文件:
254.25..172.in-addr.arpa. IN SOA ...
1.254.25.172.in-addr.arpa. IN PTR www.fsx.com. //全写,注意IP是反着写,而且后缀".in-addr-arpa."
1 IN PTR www.fsx.com. //简写
区域传送类型
完全区域传送(axfr)
增量区域传送(ixfr):只传送改变/增加的内容
区域类型基本包括四种:
主区域:master
从区域:slave
提示区域:hint (定义根域在什么地方)
转发区域:forward
DNS服务器建立
ISC
官方网址:www.isc.org,提供DNS(bind)和DHCP服务
BIND
bind相关rpm包介绍:
bind-utils.x86_64 提供很多dns客户端(命令行)工具
bind-libs.x86_64 提供支持bind的库文件
bind.x86_64 主包,(服务器包)
bind-chroot.x86_64 默认bind在/下,切换/,保证安全(伪装/)
类似于:本来在/etc/named/
迁移到
/var/named/chroot/etc/named
即将/var/named/chroot作为/
bind的主配置文件:
/etc/named.cond
BIND进程的工作属性
区域的定义
/etc/rndc.key
rndc:remote name domain controller,密钥文件
配置信息:/etc/rndc.conf
/var/named/
区域数据文件
/etc/rc.d/init.d/named
(start/stop/restart/reload/status/configtest:测试配置文件是否有语法错误)
而进制程序:named
安装
安装bind包
yum install bind bind-libs.x86_64 bind-utils.x86_64
rpm -ql bind //可以查看所有生成的文件
查看/var/named/中的文件 //区域文件数据
named.ca 存放根域信息
named.localhost 本地主机名解析成127.0.0.1;正向解析
name.loopback 将127.0.0.1解析成本地主机名;反向解析
配置文件解析
查看/etc/named.conf配置文件,该配置文件由四个部分组成:
options 全局选项
logging 日志
zone 定义区域
include 分片文件(将很多定义剥离到另一个文件,用include链接进来)
options {
listen-on port 53 { 127.0.0.1; }; //监听IPV4端口 listen-on-v6 port 53 { ::1; }; //监听IPV6端口 directory "/var/named"; //数据文件目录 allow-query { localhost; }; //允许递归};
zone "zone name" IN{
type {master/slave/hint/forward};
//如果是根域
file "named.ca"
//如果是master,还要定义file
file "区域数据文件路径(向对路径,向对/var/named/)"
//如果是slave,
file "区域数据文件";
master { master1_ip;master2_ip ...};
} ;
eg:
/etc/named.conf
options {
directory "/var/named";
};
zone "." IN{
type hint;
file "named.ca";
};
zone "localhost" IN{
type master;
file "named.localhost";
};
zone "0.25.172.in-addr.arpa" IN{
type master;
file "named.loopback";
};
zone "fsx.com" IN{
type master;
file "fsx.com.zone";
};
vim /var/named/fsx.com.zone
$TTL 600 ;全局定义TTL=600(秒)@ IN SOA ns1.fsx.com. admin.fsx.com. (2017032701
1H 5M 2D 6H )fsx.com. IN NS ns1.fsx.com.
IN MX 10 mail ;可以省略域名,表示和上一层域相同
ns1 IN A 172.25.254.2mail IN A 172.25.254.2www IN A 172.25.254.111www IN A 172.25.254.2ftp IN CNAME 172.25.254.111
/etc/init.d/named configtest
查看配置文件是否有语法错误
/etc/init.d/name start
开启DNS服务
DNS监听的协议及端口: |
---|
53/udp: |
53/tcp:从主传数据,保证数据完整性,使用 |
953/tcp,rndc(远程域名服务器控制器) |
netstat -anple | grep named
查看named端口(udp/53;tcp/53;tcp/953)
测试
dig命令
DIG:domain information groper 常用的域名查询工具,可以用来测试域名系统工作是否正常。
@<服务器地址>:指定进行域名解析的域名服务器; -b<ip地址>:当主机具有多个IP地址,指定使用本机的哪个IP地址向域名服务器发送域名查询请求; -f<文件名称>:指定dig以批处理的方式运行,指定的文件中保存着需要批处理查询的DNS任务信息; -P:指定域名服务器所使用端口号; -t<类型>:指定要查询的DNS数据类型; -x<IP地址>:执行逆向域名查询; -4:使用IPv4; -6:使用IPv6; -h:显示指令帮助信息。
dig -t NS .
查找根域的所有DNS服务器
dig -t NS www.fsx.com
;; QUESTION SECTION:;www.fsx.com. IN NS
;; AUTHORITY SECTION:fsx.com. 600 IN SOA ns1.fsx.com. admin.fsx.com. 2017032701 3600 300 172800 21600
dig www.fsx.com
;; QUESTION SECTION:;www.fsx.com. IN A
;; ANSWER SECTION:www.fsx.com. 600 IN A 172.25.254.2www.fsx.com. 600 IN A 172.25.254.111
;; AUTHORITY SECTION:fsx.com. 600 IN NS ns1.fsx.com.
;; ADDITIONAL SECTION:ns1.fsx.com. 600 IN A 172.25.254.2
host命令
host -t RT NAME:查询名称的解析结果
nslookup命令
nslookup可以使用交互式模式,即:
nslookup>
server IP
set q=RT
NAME
反向区域配置
配置1:在主配置文件中添加(/etc/named.conf)
zone "254.25.172.in-addr.arpa" IN{
type master; file "172.25.254.zone";};
配置2:在/var/named/添加文件“172.25.254.zone”,内容如下:
$TTL 600
;254.25.172.@ IN SOA www.qpy.com. root.localhost (2018032701
1H 5M 2D 6H ) IN NS www.qpy.com.2 IN PTR www.fsx.com.2 IN PTR mail.qpy.com.111 IN PTR www.qpy.com.2 IN PTR ftp.qpy.com.111 IN PTR ftp.qpy.com.
测试
此处使用nslookup测试
[root@localhost named]# nslookup
server 172.25.254.111Default server: 172.25.254.111Address: 172.25.254.111#53set q=PTR172.25.254.111Server: 172.25.254.111Address: 172.25.254.111#53
111.254.25.172.in-addr.arpa name = ftp.qpy.com.111.254.25.172.in-addr.arpa name = www.qpy.com.
172.25.254.2 Server: 172.25.254.111Address: 172.25.254.111#53
2.254.25.172.in-addr.arpa name = www.fsx.com.2.254.25.172.in-addr.arpa name = mail.qpy.com.2.254.25.172.in-addr.arpa name = ftp.qpy.com.