DNS & Bind


DNS: Domain Name Service (System)


网络:MAC(Media Access Control), IP



1、海量客户端请求

2、完成局部名称配置


迭代查询

递归查询


缓存生存时间:ttl: time to live



原始服务器:权威答案

缓存:非权威答案


DNS服务器的类型:

缓存DNS服务器

主DNS服务器(master): 数据库更新由管理员手动完成

辅助DNS服务器(slave):数据库更新从主服务器或其它辅助DNS服务器那里完成


顶级域:

顶级域:.net, .com, .org, .mil, .edu, .gov, .cc, .mobi

国家域:.jp, .tw, .hk, .iq, .ir, .cn, .uk, .us

反向域:FQDN <--> IP


DNS解析类型:

正向解析:FQDN-->IP

反向解析: IP --> FQDN



名称解析库:/var/named/

文本文件(只能包含资源记录和宏定义): 每一行称作一个资源记录


资源记录有类型:

FQDN-->IPv4: A (Address)

FQDN-->IPv6: AAAA

Domain-->DNS Server:NS (Name Server)

Domain-->Master DNS: SOA (Start Of Authority), 起始授权记录

FQDN-->FQDN: CNAME (Canonical Name)

IP-->FQDN: PTR (pointer)

Domain-->Mail Server: MX (Mail eXchanger), 有优先级:0-99


DNS: FQDN --> IP

根:.

IP --> FQDN:

根:.in-addr.arpa.


域:domain

正向解析:名称解析库

区域:zone

反向解析:名称解析库

区域:zone


资源记录的格式:

name [ttl]IN 资源记录类型 value


例如:www.163.com.86400IN A  1.1.1.1


各资源记录类型其“名称”有要求:

SOA: zone

NS: zone

A, AAAA: FQDN

CNAME: FQDN

PTR: ReverseIP.in-addr.arpa.

MX: zone


各资源记录类型其“value”有要求:

SOA: 主DNS服务器的FQDN

NS: 对应DNS服务器的FQDN

A,AAAA:IP

CNAME:FQDN

PTR:FQDN

MX: Mail Server FQDN



SOA:

@[TTL] IN  FQDN  admin_mailbox  (

2013081201   ;序列号, serial number

2h           ;刷新时间, refresh time, 通知(notify): 只通知给本区域解析库文件中定义NS记录的所有主机;

5m ;重试时间, retry time

7d ;过期时间, expire time

1d ;否定答案的ttl

)

IN NS  ns1.163.com.


@  nsadmin@163.com: nsadmin.163.com.



X --> Y


slave --> master

完全区域传送:AXFR

增量区域传送:IXFR


解析类型:

正向

反向


查询类型:

递归

迭代


资源记录类型:

A     ipv4 主机记录

AAAA    ipv6 主机记录

PTR     ip到主机名的解析

MX      邮件交换记录

NS      权威名称服务器  

SOA     起始授权服务器

CNAME    别名记录


DNS: SOA


@ ttl   IN  SOA  主DNS服务器FQDN  管理员邮箱  (

序列号

刷新时长

重试时长

过期时长

否定回答的TTL

)


DNS:服务程序

bind:Berkeley Internet Name Daemon

ISC:www.isc.org

powerdns


版本:bind4, bind8, bind9, bind10


DNS服务器类型:

缓存服务器

主DNS服务器

从DNS服务器

bind:

主配置文件:named.conf,每个语句都要使用分号结尾;

定义区域;

定义各区域的全局配置;

定义视图;

定义日志;

程序文件:/usr/sbin/named



dig命令:

dig -t 资源记录类型  名称 @server-ip

/etc/resolv.conf

nameserver IP

dig -x IP @server-ip

dig +trace

dig -t axfr zone


host命令:

host -t 资源记录类型 名称



主配置文件/etc/named.conf的修改:注释掉options段中如下选项,也可以修改

//listen-on port 53 { 127.0.0.1; };

//listen-on-v6 port 53 { ::1; };

//allow-query     { localhost; };


启动named服务:缓存DNS服务器;



在区域配置文件/etc/named.rfc1912.zones新建一个区域:

zone "区域名称" IN {

type master|slave|forward;

file "ZONE_NAME.zone";

};


检测主配置文件语法错误:named-checkconf


在/var/named下建立“ZONE_NAME.zone”文件,通常只包含宏定义和资源记录,而第一个记录必须是SOA记录;

$TTL 600;

name  [TTL]IN RR_Type value


1、一个FQDN可对应同多个IP;(负载均衡)

2、多个FQDN可对应一个IP:(一台主机有多个名称)


检测区域文件语法错误:named-checkzone


确保主配置文件和各区域解析库文件的权限为640,属主为root,属组为named;






反向区域的区域名称:网络地址反过来.in-addr.arpa.


100.16.172.in-addr.arpa.





rndc:Remote Name Domain Contoller



如何创建从DNS服务器?

如果有多台DNS服务器,必须为每个DNS服务器建立NS记录,否则主DNS将不向发送通知;


区域定义:

zone "区域名称" IN {

type slave;

file "slaves/ZONE_NAME.zone";

masters {

MASTER_DNS_IP;

MASTER_DNS2_IP;

};

}



allow-transfer { IP; };

rndc: 953/tcp


调试:显示程序运行中的详细信息;

调试级别:0,1,2,3


rndc trace

rndc trace LEVEL

rndc notrace


rndc flush


rndc reconfig

rndc reload



dig: flags aa

authority answer



magelinux.com



allow-transfer {};

allow-query {};

allow-recursion {};

allow-update {};

ddns



bind访问控制列表:

acl string { address_match_element; ... };



any, none, local, localnet


如何实现将请求转发出去:


转发类型:


转发所有针对非本机负责解析的区域的请求;

options {};

仅转发对特定区域的请求;

zone {

type forward;


};


转发的前提:接收转发请求的服务器必须能够为请求者做递归查询;


forwarders { IP; };

forward only|first;




子域授权、acl、view、安全相关功能、转发域、日志子系统;


DNS子域授权:

域内:划分出小域即为子域

授权:委派


划分子域

完成授权


bind view: 视图

brain split




view "" {

match-clients { 172.16.0.0/16; };

zone "163.com" IN {

type master;

file "internal"

}


}



view VIEW_NAME {

match-clients { any; }

zone "163.com" IN {

type master;

file "external";

}


}


bind:

channel categroy

categroy: 记录哪个功能产生的日志信息,一共内置有15种category;

channel: 日志信息记录到何处,一般有两种形式,一种为file,另一种为syslog;同时,还需要指定日志级别;


一个category产生的日志可以发往多个channel;而一个channel只能为一个category记录日志;


channel CHANNEL_NAME {

file /path/to/somefile|syslog facility;

severity LEVEL;

};


category CATEGORY { CHEANNEL; };