DNS服务、BIND

DNS:domain name service,协议(C/S,udp53,tcp53)

BIND:bekerley internat name domain

注意:named程序的启动用户是named用户,非root用户,因此需要注意权限和属主。

本地名称解析配置文件:hosts

linux:/etc/hosts

windows:%WINDOWS%/system32/dirvers/etc/hosts

 

dns查询类型:

递归查询:一次请求取得最终结果;

迭代查询:多次请求取得最终结果;

 

名称服务器:域内负责解析本域内名称的主机;

根服务器:13组服务器

 

解析类型:FQDN:完全限定域名

正向解析:FQDN   –>>   IP

反向解析:IP   –>>   FQDN

 

DNS服务器的类型:

主DNS服务器

辅助DNS服务器

缓存DNS服务器

转发器

 

主DNS服务器:维护所负责解析的域内解析库的服务器;解析库文件由管理员维护;

从DNS服务器:解析库文件从主DNS服务器或者其他的从DNS服务器“复制”(区域传送)过来;

序列号:解析库的版本号;前提:主dns服务器解析库内容发生变化,其序列号递增;

刷新时间间隔:从服务器从主服务器请求同步解析库的时间间隔;

重试时间间隔:同步解析库失败时,再次尝试的时间间隔;小于刷新时间间隔;

过期时长:从服务器始终联系不到主服务器时,多久后放弃从服务器角度,停止提供服务;

“通知”机制:

区域传送:

全量传送:传送整个解析库;

增量传送:传送解析库变化的那部分内容;

 

一次完整的查询请求经过的流程:

client–>hosts文件–>local cache–>dns server(递归)–>server cache–>迭代

解析答案:肯定回答、否定回答、权威答案、非权威答案

 

区域解析库:由众多资源记录RR组成;

资源记录:resource record,RR

记录类型:A,AAAA,PTR,SOA,NS,CNAME,MX

SOA:start of author,起始授权记录:一个区域解析库有且仅能有一个SOA记录,而且必须为解析库的第一条记录;

A:internet address,作用:FQDN–>IP;

AAAA:FQDN–>IPv6;

PTR:poinTeR,IP–>FQDN;

NS:name server,专用于标明当前区域的dns服务器

CNAME:canonical name,别名记录

MX:mail exchanger,邮件交换器

 

资源记录定义的格式:

语法:name    [TTL]     IN    rr_type     value

注意:(1)TTL可从全局继承;

(2)@可用于引用当前区域的名字;

(3)相邻的两个或多个资源记录的name相同时,后续可省略;

(4)对NS、MX记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录;

(5)同一个名字可以通过多条记录定义多个不同的值;此时dns服务器会以轮询方式响应;

(6)同一个值也可能有多个不同定义名字,通过多个不同名字指向同一个值定义;

(7)避免用户写错名称时给错误答案,通过*泛域名解析至特定地址;例如*.magedu.com.   IN    A    1.1.1.3

 

SOA:一个区域解析库内有且只有一个SOA记录

name:当前区域的名字,例如“magedu.com.”

value:由多部分组成:(1)当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字;

(2)当前区域管理员的邮箱地址,但地址中不能使用@符号,一般用.替换;例如linuxedu.magedu.com.;

(3)主从服务协调属性的定义以及否定的答案的统一的TTL;

例如:magedu.com.     86400  IN  SOA       ns.magedu.com.    nsadmin.magedu.com.     (

2018041901    ;序列号

2H                     ;刷新时间

10M                  ;重试时长

1W                    ;过期时间

1D                     ;否定答案的TTL

 

NS:

name:当前区域的名字

value:当前区域的某DNS服务器的名字,例如ns.magedu.com.;一个区域可以有多条NS记录;

例如:

magedu.com.       IN    NS   ns1.magedu.com.

IN    NS   ns2.magedu.com.

 

MX:

name:当前区域的名字

value:当前区域的某邮件服务器的主机名;注意,value之前应该有一个数字(0-99),表示此邮件服务器的优先级;

例如:

magedu.com.     IN    MX  10 mx1.magedu.com.

IN    MX  20 mx2.magedu.com.

 

A:

name:某主机的FQDN,例如www.magedu.com.

value:主机名对应的主机的IP地址;

例如:

www.magedu.com.        IN       A     1.1.1.1

www.magedu.com.        IN       A     2.2.2.2

 

AAAA:

name:FQDN

value:IPv6

 

PTR:

name:IP;有特定格式,把IP地址反过来写,有特定后缀:.in-addr.arpa.,例如1.2.3.4,要写成4.3.2.1.in-addr.arpa.

value:IPv6FQDN

例如:

4.3.2.1.in-addr.arpa.          IN     PTR    www.magedu.com.

也可以简写成:

4      IN     PTR    www.magedu.com.

注意:网络地址及后缀可省略;主机ip地址依然需要反过来写;

 

CNAME:

name:别名的FQDN

value:正式名字的FQDN

例如:

web.magedu.com.      IN   CNAME     www.magedu.com.

 

域名注册:代理商:万网、新网、godaddy

注册完成以后,想自己用专用服务器来解析步骤:进入域名管理后台:把NS记录指向自己的服务器名称,和A记录指向的服务器地址;

 

主要程序包:

bind:server包

bind-libs:依赖库

bind-utils:工具

 

bind-chroot:将/var/named/chroot/设置为根;

 

rfc:Request For Comments 请求注解

rndc:Remote Name Domain Controllerr;BIND安装包提供的一种控制域名服务运行的工具

 

主配置文件:

/etc/named.conf、/etc/named.rfc1912.zones、/etc/rndc.key

全局配置:options {}

日志子系统配置:logging {}

区域定义:本机需要定义的zone解析;zone  “ZONE_NAME”    IN   {}

 

解析库文件:/var/named/ZONE_NAME.ZONE

注意:(1)一台物理服务器可同时为多个区域提供服务;

(2)必须要有根区域文件;/var/named/named.ca

(3)应该有两个(如果包括ipv6的,应该更多)实现localhost和本地回环地址的解析库文件;/var/named/named.localhost、/var/named/named.loopback

注意:任何服务程序如果期望其能够通过网络被其他主机访问,至少应该监听在一个能够与外部主机通讯的IP地址上;

 

1、在主配置文件中/etc/named.rfc1912.zones定义zone区域

zone  “ZONE_NAME”    IN  {

type {master|slave|hint|forward};

file    “ZONE_NAME.zone”;

};

2、定义区域解析库文件

# vim /var/named/lshaol.com.zone

出现的内容:宏定义、资源记录;

例如:

1

(3)修改对应的属组及权限

# chmod 640  /var/name/lshaol.com.zone

# chown :named /var/name/lshaol.com.zone

(4)检查配置文件语法

# named-checkconf

# named-checkzone “lshaol.com” /var/named/lshaol.com.zone

 

测试命令:

dig [-t type] name [@server] [query options]

query options:查询选项

+[no]trace:是否跟踪解析过程

+[no]recurse:是否递归解析

dig用于测试dns,因此,不会查询hosts文件;

测试反向解析:

dig -x IP @SERVER

模拟区域传送:

dig -t axfr 区域名字|IP  @SERVER

 

host [-t type] name [server]

 

nslookup命令:支持交互式

nslookup [-option] [name | -] [server]

支持交互式nslookup>

server ip:指定使用哪个dns server进行查询;

set q=rr_type:指明查询的资源记录类型;

NAME:要查询的名称;

 

反向区域的定义:

区域名称:网络地址反写.in-addr.arpa.

1、在主配置文件中/etc/named.rfc1912.zones定义zone区域

zone  “ZONE_NAME”    IN  {

type {master|slave|hint|forward};

file    “网络地址.zone”;

};

2、定义区域解析库文件;注意:不需要MX、A、AAAA记录;以PTR记录为主;

出现的内容:宏定义、资源记录;

常用宏:$TTL   有效时长

$ORIGIN   区域名

例如:

# vim      /var/named/172.20.120.zone

2

(3)修改对应的属组及权限

# chmod 640  /var/name/172.20.120.zone

# chown :named /var/name/172.20.120.zone

(4)检查配置文件语法

# named-checkconf

# named-checkzone “120.20.172.in-addr.arpa” /var/named/172.20.120.zone

 

主从复制:

1、应该为一台独立的名称服务器;

2、主服务器的区域解析库文件中必须有一条NS记录是指向从服务器;

3、从服务器只需要定义区域,而无须提供解析库文件,解析库文件应该放置于/var/named/slaves目录;

4、主服务器得允许从服务器做区域传送;

5、主从服务器时间应该同步,可通过ntp进行;

6、bind程序的版本应该保持一致;否则,应该从高,主低;

 

定义从区域的方法:

zone “ZONE_NAME”  IN {

type slave;

masters {  MASTER_IP  };

file “slaves/ZONE_NAME.zone”;

};

 

rndc命令:rndc command

常用command:

reload:重新载入配置文件和区域解析库文件;

reload zone:重新载入区域解析库文件;

reconfig:重新载入配置文件;

retransfer  zone:手动启动区域传送过程,而不管序列号是否增加;

notify zone:重新对区域传送发通知;

querylog:开启或关闭查询日志;在定义错误的时候管用;

trace LEVEL:指定调试debug级别;

 

正向解析区域子域方法:在父域中的区域定义子域的NS记录而非A记录;

 

定义转发服务器:注意:被转发的服务器需要能为转发请求者做递归,否则,转发不给进行;

(1)全部转发:凡是非本机所负责解析的区域的请求,统统转发给指定的服务器;

options  {

forward   {first(先递归后迭代)|only(仅递归)};

forwarder  {  NS_SERVER_IP  };

};

(2)区域转发:仅转发对特定区域的请求至某一服务器;

zone  “ZONE_NAME”   IN   {

type forward;

forward   {first|only};

forwarder  {  NS_SERVER_IP  };

};

注意:关闭dnssec功能:

dnssec-enable no;
dnssec-validation no;
dns(bind)中基础安全的相关配置:
(1)acl:访问控制列表,把一个或多个主机归并成一个集合,并通过一个统一的名称调用;只能先定义后使用,因此,其一般定义在配置文件中options的前面;
acl   ACL_NAME   {
ip;
hostname;
net/prelen;
};
内置acl:
none:没有一个主机
any:任意主机
local:本机
localnet:本机的IP同掩码运算后得到的网络地址
示例:
acl   mynet    {
172.20.120.0/24;
};
(2)访问控制的参数
allow-query {}:允许查询的主机;
allow-transfer {}:允许区域传送的主机;
allow-recursion {}:允许递归的主机;
allow-update {}:允许更新区域数据库的内容;
bind view:视图
1、一个bind服务器可定义多个view,每个view中可定义一个或多个zone;
2、每个view用来匹配一组客户端;
3、多个view内可能需要对同一个区域进行解析,但使用不同的区域解析库文件;
view  VIEW_NAME  {
match_clients   {    };
};
注意:
(1)一旦启用了view,所有的zone都只能定义在view中;
(2)仅有必要在匹配到的允许递归请求的客户端所在的view中定义根区域;
(3)客户端请求到达时,是自上而下检查每个view所服务的客户端列表;
CDN:content   delivery   network:内容分发网络
智能DNS:dnspod、dns.la
编译安装bind:官网https://www.isc.org/downloads/
# group -r -g 53 named
# useradd -r -u 53 -g 53 named
# ./configure   –prefix=/usr/local/bind9  –sysconfdir=/etc/named/    –disable-ipv6    –disable-chroot   –enable-threads
# make
# make install
后续库文件、PATH、头文件、man文件等处理;
另外配置rndc,使用rndc-confgen生成rndc.conf等
# dig -t NS . > /var/named/named.ca   #生成根解析库文件
DNS测试:queryperf
配置解析一个正向区域:
以magedu.com域为例:
(1) 定义区域
在主配置文件中或主配置文件辅助配置文件中实现;
zone  “ZONE_NAME”  IN  {
type  {master|slave|hint|forward};
file  “ZONE_NAME.zone”;
};
注意:区域名字即为域名;
(2) 建立区域数据文件(主要记录为A或AAAA记录)
在/var/named目录下建立区域数据文件;
文件为:/var/named/magedu.com.zone
$TTL 3600
$ORIGIN magedu.com.
@       IN      SOA     ns1.magedu.com.   dnsadmin.magedu.com. (
2017010801
1H
10M
3D
1D )
IN      NS      ns1
IN      MX   10 mx1
IN      MX   20 mx2
ns1     IN      A       172.16.100.67
mx1     IN      A       172.16.100.68
mx2     IN      A       172.16.100.69
www     IN      A       172.16.100.67
web     IN      CNAME   www
bbs     IN      A       172.16.100.70
bbs     IN      A       172.16.100.71
权限及属组修改:
# chgrp  named  /var/named/magedu.com.zone
# chmod  o=  /var/named/magedu.com.zone
检查语法错误:
# named-checkzone  ZONE_NAME   ZONE_FILE
# named-checkconf
(3) 让服务器重载配置文件和区域数据文件
# rndc  reload 或
# systemctl  reload  named.service
配置解析一个反向区域
(1) 定义区域
在主配置文件中或主配置文件辅助配置文件中实现;
zone  “ZONE_NAME”  IN  {
type  {master|slave|hint|forward};
file  “ZONE_NAME.zone”;
};
注意:反向区域的名字
反写的网段地址.in-addr.arpa
100.16.172.in-addr.arpa
(2) 定义区域解析库文件(主要记录为PTR)
示例,区域名称为100.16.172.in-addr.arpa;
$TTL 3600
$ORIGIN 100.16.172.in-addr.arpa.
@       IN      SOA     ns1.magedu.com.  nsadmin.magedu.com. (
2017010801
1H
10M
3D
12H )
IN      NS      ns1.magedu.com.
67      IN      PTR     ns1.magedu.com.
68      IN      PTR     mx1.magedu.com.
69      IN      PTR     mx2.magedu.com.
70      IN      PTR     bbs.magedu.com.
71      IN      PTR     bbs.magedu.com.
67      IN      PTR     www.magedu.com.
权限及属组修改:
# chgrp  named  /var/named/172.16.100.zone
# chmod  o=  /var/named/172.16.100.zone
检查语法错误:
# named-checkzone  ZONE_NAME   ZONE_FILE
# named-checkconf
(3) 让服务器重载配置文件和区域数据文件
# rndc  reload 或
# systemctl  reload  named.service
主从服务器:
注意:从服务器是区域级别的概念;
配置一个从区域:
On Slave
(1) 定义区域
定义一个从区域;
zone “ZONE_NAME”  IN {
type  slave;
file  “slaves/ZONE_NAME.zone”;
masters  { MASTER_IP; };
};
配置文件语法检查:named-checkconf
(2) 重载配置
rndc  reload
systemctl  reload  named.service
On Master
(1) 确保区域数据文件中为每个从服务配置NS记录,并且在正向区域文件需要每个从服务器的NS记录的主机名配置一个A记录,且此A后面的地址为真正的从服务器的IP地址;
注意:时间要同步;
ntpdate命令;
子域授权:
正向解析区域授权子域的方法:
ops.magedu.com. IN NS  ns1.ops.magedu.com.
ops.magedu.com. IN NS  ns2.ops.magedu.com.
ns1.ops.magedu.com. IN A IP.AD.DR.ESS
ns2.ops.magedu.com. IN A IP.AD.DR.ESS
定义转发:
注意:被转发的服务器必须允许为当前服务做递归;
(1) 区域转发:仅转发对某特定区域的解析请求;
zone  “ZONE_NAME”  IN {
type  forward;
forward  {first|only};
forwarders  { SERVER_IP; };
};
first:首先转发;转发器不响应时,自行去迭代查询;
only:只转发;
(2) 全局转发:针对凡本地没有通过zone定义的区域查询请求,通通转给某转发器;
options {
… …
forward  {only|first};
forwarders  { SERVER_IP; };
.. …
};
bind中的安全相关的配置:
acl:访问控制列表;把一个或多个地址归并一个命名的集合,随后通过此名称即可对此集合内的所有主机实现统一调用;
acl  acl_name  {
ip;
net/prelen;
};
示例:
acl  mynet {
172.16.0.0/16;
127.0.0.0/8;
};
bind有四个内置的acl
none:没有一个主机;
any:任意主机;
local:本机;
localnet:本机所在的IP所属的网络;
访问控制指令:
allow-query  {};  允许查询的主机;白名单;
allow-transfer {};  允许向哪些主机做区域传送;默认为向所有主机;应该配置仅允许从服务器;
allow-recursion {}; 允许哪此主机向当前DNS服务器发起递归查询请求;
allow-update {}; DDNS,允许动态更新区域数据库文件中内容;
bind view:
视图:
view  VIEW_NAME {
zone
zone
zone
}
view internal  {
match-clients { 172.16.0.0/8; };
zone “magedu.com”  IN {
type master;
file  “magedu.com/internal”;
};
};
view external {
match-clients { any; };
zone “magecdu.com” IN {
type master;
file magedu.com/external”;
};
};

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/92886

(0)
N26-深圳-城市蜗牛N26-深圳-城市蜗牛
上一篇 2018-03-26
下一篇 2018-03-26

相关推荐