有没有做英语题的网站,网站空间和域名,wordpress 产品列表,俱乐部网站 模板1.named.conf的配置项
该文件的三种注释方式#xff1a;
//这是注释
/这是注释/
#这是注释
directory “/var/named/”; 表示存放zone文件的目录
rrset-order { order cyclic; }; 指定一个名字有多条记录时#xff08;例如www.test.com有3个A记录#x…1.named.conf的配置项
该文件的三种注释方式
//这是注释
/这是注释/
#这是注释
directory “/var/named/”; 表示存放zone文件的目录
rrset-order { order cyclic; }; 指定一个名字有多条记录时例如www.test.com有3个A记录这些记录的调度策略。cyclic是轮询调度random是随机调度默认是random。 auth-nxdomain yes; 表示NXDOMAIN的应答中总是带AA标记。这个有什么用
query-source address 10.0.120.36 port 10000;
dns服务器默认使用随机的地址和端口到权威服务器进行查询或者到主服务器下载zone。这个就是配置查询时的源地址端口只限于UDP。
sortlist
sortlist{10.0.3.0/24;{192.168.0.0/24;192.168.1.0/24;}};
表示对位于10.0.3.0/24网段的客户端的应答进行排序后面的就是排序方式。例如域名www.test.com当前有三条A记录192.168.0.100,192.168.1.100,192.168.2.100则应答报文里面的顺序为
192.168.0.100
192.168.1.100
192.168.2.100
如果不指定后面的顺序即sortlist{10.0.3.0/24;};则应答时把和客户端网段近的地址排在前面。
还可以指定对多个网段的客户端的应答进行排序例如sortlist{10.0.3.0/24;10.0.2.0/24};。
allow-recursion
allow-recursion{10.0.3.0/24}
表示对10.0.3.0/24地址段的请求允许递归查询其他地址不进行递归查询。
blackhole:
blackhole {10.0.3.0/24;};
表示不处理这个网段发来的请求也不向这个网段的服务器发送查询这个是很有用的例如知道了某个dns服务器是个诈骗服务器则可以把那个地址配置到这个列表里面这样本地服务器就不会向这个服务器进行查询。
recursive-clients
recursive-clients 1000;
表示同时处理1000个递归查询转发查询请求。也就是说例如当前服务器正在向外递归1000个请求第1001个请求没有在zone和缓存中找到则此时客户端会查询失败。
tcp-clients
tcp-clients 100;
表示同时处理100个TCP查询请求。
cleaning-interval
cleaning-interval 100;
表示每个100分钟清理dns服务器缓存中的过期内容根据记录的ttl判断是否过期如果配置为0则永不清除。注意这个单位是分钟。
interface-interval
interface-interval 60;
表示每个60分钟检查一次当前设备的网络接口例如接口down掉了或者变为up则程序检查到会进行相应处理。注意这个单位是分钟。
max-ncache-ttl
max-ncache-ttl 10800;
表示否定缓存的最大ttl这个只对服务器缓存中的记录有效如果当前服务器是某个域的权威服务器则对这个域的否定缓存用的是zone里面的值。
max-cache-ttl
max-cache-ttl 604800;
表示正常缓存的最大ttl也是只对缓存中的记录有效。
lame-ttl
lame-ttl 600;
lame服务器的缓存时间即如果一个server被标记为lame后在600秒内不会对这个服务器进行查询。设置为0表示不缓存lame服务器最大值为1800秒不对这个服务器进行查询。
首先dns服务器迭代得到了都是权威服务器所以lame服务器肯定也是一个权威服务器。所谓lame服务器就是收到了这个权威服务器的错误响应。
所谓的错误响应就是这个服务器回复的权威部分填的有问题例如这个服务器是test.com域的权威服务器但是响应的权威部分写了abc.other.com IN ns ns.abc.other.com这种错误响应。 allow-transfer {any;}; 表示允许任何地址从主ns下载zone文件主从dns上都可以配置因为从服务器也可以作为另一个从服务器的主服务器。
allow-update {any;}; 表示允许任何地址向主ns提交动态更新因为是通过命令行更新的所以发送命令的服务器不需要运行dns服务器只能在主dns服务器配置。
allow-notify {none;}; 表示允许除了master之外的服务器向该从服务器发送notify消息注意是master之外slave肯定是允许接收master的notify消息的只能配置到从服务器上。
also-notify {none;}; 如果某个权威服务器没有写到主服务器的zone文件中则可以在此处指定其他的从权威服务器给这些服务器发送notify消息。
另外就是bind 8的从服务器更新完zone之后不会向zone里面的其他权威服务器发送notify所以需要使用这个命令配置需要接收从服务器notify消息的服务器地址。
allow-update-forwarding {192.168.0.1;}; 在从服务器上配置表示把192.168.0.1发来的动态更新转发给主服务器这时候主服务器要把。
ixfr-from-differences yes; 默认为no表示手动编辑zone文件后进行rndc reload test.com后主服务器会给从服务器发送全量文件而配置为yes则主服务器给从服务发送增量文件。
forward first; first表示首先进行转发查询如果短时间没有收到响应则进行迭代查询。only表示只进行转发查询就算没响应也不进行迭代。 2.zone配置项
$TTL表示没有明确指定的记录的默认的TTL值。
符号就时named.conf中配置的zone的名称。例如在named.conf中配置了zone “test.com”则就等于test.com.。
CNAME记录
例如www.test.com. IN CNAME ccc.test.com.
此时www.test.com.被称作别名ccc.test.com.被称作规范名。zone文件中别名不能出现在记录的右侧例如aaa.test.com IN CNAME www.test.com 这样就是错误的。
同域内的CNAME记录例如www.test.com. IN CNAME www.test1.com.这种属于跨域CNAME意义好像不是很大。
SOA
复制代码 $ORIGIN . T T L 86400 ; 指 定 该 语 句 之 后 下 一 个 TTL 86400 ;指定该语句之后下一个 TTL86400;指定该语句之后下一个TTL语句之前所有未明确指定TTL值的记录的默认TTL值
;以下是SOA记录注意当前的ORIGIN是.所以下面的test.com就等于test.com. test.com IN SOA ns.test.com. admin.test.com. ( ;ns.test.com.是主权威服务器admin.test.com.是邮箱地址第一个.表示 104 ; serial ;序列号每次更改zone文件时要增加序列号 50000 ; refresh (13 hours 53 minutes 20 seconds) ;从服务器检查本地zone是否有更新向主服务器发送SOA请求的间隔时间 2 ; retry (2 seconds) ;检查的重试时间就是发送SOA后没有收到响应再次发送的时间间隔 5d ; expire (5 days) ;过期时间意思是如果在这个时间内没有联系到主服务器则这个zone就过期了过期后则不再响应对这个zone的查询。这个项和上面两个项没有任何关系。 1 ; minimum (1 second) ;否定缓存的TTL上面的$TTL是正常的TTL这里是否定TTL。 ) ;SOA记录结尾 NS ns.test.com. ;test.com区域的ns在主机ns.test.com.上NS ns1.test.com. ;test.com区域的ns在主机ns1.test.com.上$ORIGIN test.com. a A 1.1.1.1 b A 1.1.1.6
ns A 10.0.120.192 ns1 A 10.0.110.134 other NS ns.other
$ORIGIN other.test.com. ns A 10.10.10.10
$ORIGIN test.com. w A 3.3.3.1 A 3.3.3.2 A 3.3.3.3 复制代码
3.hint文件named.ca文件
首先hint是“提示”的意思这个文件也就是root提示文件。bind9启动后把这个文件读到内存称作root提示一定要注意这个root提示并不是普通的缓存数据而是存到内存中作为固定不变的数据。这个文件的记录有TTL值但是程序在TTL超时后并不会删除这些记录所以TTL值没什么用。
root提示的作用程序向root提示里面的某个ns服务器请求根的ns列表收到响应后把得到的根ns列表存到缓存中这个才是普通的缓存信息当程序启动后解析第一个域名时可以抓包看到向某个nshint列表里面的ns请求根的ns列表。
理论该提示文件写的就是根的ns列表啊直接复制到缓存中不行了为什么还要再请求一次这是因为该文件可能已经过时毕竟是本地文件肯定不如立刻获取得到的新但是从root提示里面的ns服务器得到的根ns列表肯定是最新的。
总结hint文件这个名字起的很精确。
3.基本概念
[1]域和区域除去已经授权出去的子域所包含的域名一个区域所包含的域名和同名域所包含的域名一样因此区域也包含了未被授权出去的子域的域名和数据。
例如对于test.com
test.com域就等于包括所有的以test.com结尾的数据。
test.com区域就是test.com权威服务器zone文件里面的内容该区域不包括已经授权出去的子域数据例如子域abc里面的数据。
abc.test.com域就等于包括所有的以abc.test.com结尾的数据。
abc.test.com区域就是abc.test.com权威服务器zone文件里面的内容该区域不包括已经授权出去的子域。
总结test.com域、abc.test.com域表示一个递归范围区域就是权威服务器zone文件里面的内容数据。
[2]顶级域、二级域顶级域也就是一级域顶级域是root的子域也就是说com、cn等域是顶级域test.com、test.cn是二级域。
[3]区域zone传输主权威服务器从本地文件读取区域数据从权威服务器从主权威服务器下载区域数据这个就是区域传输。
3.解析
解析分为递归解析和迭代解析迭代解析也就是非递归解析目前local DNS向外面发送的查询都是迭代请求即请求报文中没有设置递归标记。
另外local DNS发送的查询域名和请求的域名是一样的例如客户端向local DNS请求www.test.com.则local DNS向外面已知的最接近的ns发送查询时的请求域名也是www.test.com。理论上local DNS发送的是迭代查询应该是先向根请求com域的ns地址再向com域请求test.com域的ns地址最后向test.com域请求www.test.com的A记录才对。但是并没有这样因为test.com并不一定有ns或者com的ns直接就知道原请求域名的结果例如直接在com的ns的zone配置一条记录www.test.com IN A 1.1.1.1。
另外local DNS会有很多可选的权威服务器例如当前服务器知道根服务器有13个地址test.com域的ns有4个地址则向哪个服务器发送请求这个是根据上一次查询往返时间来判断的向上一次往返时间最小的ns发送查询。 3.DNS notify消息
notify表示zone变更通知正常情况下从服务器每隔refresh时间向主服务器发送SOA请求之后主服务器回给从服务器SOA响应从服务器比较SOA响应里面的序列号来判断是否进行本地zone更新。但是这种方式当主服务器变更时只能等待间隔时间到了从服务器才能根据下载到的SOA数据序列号大于本地序列号更新自己的zone文件。因此有了notify消息工作流程如下
主服务器发现自己的zone的序列号发生改变时包括重启进程、rndc reload test.com、收到动态更新便向zone里面的所有的从服务器zone文件中的所有的ns记录发送一条notify消息从服务收到后会给主服务器发送一个响应相当于ack。随后从服务器便启动正常的SOA查询流程这个notify消息相当于立刻达到refresh间隔一样。
另外从服务器完成了zone传输时候还会向zone中其他的从权威服务器发送notify消息注意不给自己的主服务器发送这么做的目的是某些从服务器可能无法和主服务器直接通信。这个流程8.2.3之后的版本才有之前的版本需要额外配置。
要注意的是只有收到了主服务器或者allow-notify配置的地址的notify消息才会信任其他地方发来的会打印refused notify from non-master: 10.0.120.192#62278。因此从服务器收到了其他从服务器发来的notify消息会忽略掉。
以下是修改了主服务器zone序列号后执行rndc reload test.com命令后的传输报文主10.0.120.192从10.0.110.134 3.DNS动态更新
动态更新是更新主权威服务器zone里面的记录所以不属于权威zone的域名是不会更新的。
动态更新的流程客户端向权威服务器发送消息让权威服务器更新zone文件内容例如增加删除修改某条记录。这里的权威服务器可以是主的也可以是从的如果是从服务器则从服务器会转发给自己的主服务器最后由主权威服务器完成更新。更新完后主服务器notify给自己的从服务器及后面的流程上面说明的。
主服务器收到动态更新数据后当前序列号加1并且会在目录新加一个.jnl文件当前的zone文件并不会改变里面的序列号也不会变。这个意思就是说当前的zone有两个文件程序加载时会顺序加载这两个文件所以直接修改原来的文件内容可能会导致zone加载失败例如修改原文件的序列号。
动态更新可以使用bind自带的客户端工具来完成以下是在命令行执行的步骤
[rootlocalhost ~]# nsupdate server 10.0.120.192 update add dy.test.com 86400 A 3.3.3.3 send send 另外一个zone配置了动态更新地址时使用allow-update 配置则此时手动编辑zone文件后执行rndc reload test.com则会报错rndc: ‘reload’ failed: dynamic zone所以手动编辑完zone后可以如下操作 [rootlocalhost named]# rndc freeze test.com [rootlocalhost named]# rndc reload test.com zone reload queued [rootlocalhost named]# rndc thaw test.com The zone reload and thaw was successful. 4.IXFR
从服务器向主服务器发送SOA请求这个SOA请求和普通的请求报文一样只不过请求类型是SOA收到响应后比较里面的序列号是否大于本地的序列号如果大于则向主服务器发送IXFR请求主服务器收到请求后检查本地是否有两个序列号的变更的记录如果有则发送两个序列号之间的差异部分如果没有则发送完整的zone数据。
进行动态更新的数据主服务器会有序列号更新的记录信息发送增量传送数据。
而手动编辑zone文件后执行rndc reload test.com则主服务器会发送完整的zone信息此时主服务器会打印日志AXFR-style IXFR started如果此时也想让主服务器发送增量数据则需要配置选项ixfr-from-differences yes;。
另外说一下AXFR从服务器启动的时候如果本地没有zone文件则会向主服务器发送AXFR请求。
5.转发器
forward only和forward first在配置项已经说明。
forward会转发以配置的域名结尾的所有请求例如
zone “test.com” { //表示对test.com结尾的所有域名进行转发查询 type forward; forward only; forwarders {192.168.0.1;}; }; 如果在options里面配置了转发则会转发所有的域名请求而如果此时想对某个域不进行转发则配置如下
复制代码 options { forward only; forwarders {192.168.0.1;}; //对所有的域名进行转发查询 };
zone “test.com” { type master; file test.com.zone; forwarders {}; //表示对test.com不进行转发查询 }; 复制代码 如果转发器里面配置了多个地址则会选择向上一次往返时间最小的地址发送查询所以和地址里面的配置顺序无关如果配置了某个地址两次也不会向这个地址查询两次。
最后要注意的是在named.conf使用zone “test.com”{ }配置了某个域的转发此时当前服务器并不是该域的权威服务器只是表示对以这个域名结尾的域名进行转发查询。
6.视图
视图比较简单只是有一点注意视图在named.conf中是有先后顺序的匹配上某个view之后便停止后面的view匹配。例如最前面的view接收所有用户的请求则后面的view相当于就不生效了。
7.rndc配置
首先使用rndc-confgen /etc/rndc.key生成key文件如下之后把里面的部分内容复制到named.conf文件中则就可以使用rndc命令了。
rndc命令可以在另外一台客户端使用方法就是把服务器的rndc.key文件复制到客户端然后在客户端执行rndc -s 10.0.120.192 -p 953 -k rndc.key status
复制代码
以下表示key数据这个数据是给rndc命令使用的
Start of rndc.conf
key “rndc-key” { algorithm hmac-md5; secret “xskrjwyK0MzW0UHQdqoiKg”; };
options { default-key “rndc-key”; default-server 127.0.0.1; default-port 953; };
End of rndc.conf
以下内容需要手动复制到named.conf文件中供named程序使用如果不复制则named程序也会使用下面的默认配置key则默认使用/etc/rndc.key
Use with the following in named.conf, adjusting the allow list as needed:
key “rndc-key” {
algorithm hmac-md5;
secret “xskrjwyK0MzW0UHQdqoiKg”;
}; controls {
inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { “rndc-key”; };
};
End of named.conf
复制代码 几个说明的地方
[1]secret 后面的字符串就是明文密码执行rndc命令时客户端和服务器之间的通信需要使用这个密码对消息进行加密处理hmac-md5。
[2]algorithm 表示rndc命令消息传输时的加密算法。
[3]rndc.key中的options语句因为是给rndc命令使用的所以配置了option则执行rndc命令时可以省略-s -p参数。
[4]平时使用的时候只要执行了rndc-confgen /etc/rndc.key之后便可以在本机使用rndc命令了这是因为不配置controls和keys语句的时候named程序会默认配置。 3.配置示例
[1]主从服务器配置
主ns域名ns1.test.com
从ns域名ns2.test.com和ns.abc.com
sub1.test.com子域的ns域名ns1.sub1.test.com
sub2.test.com子域的ns域名ns.abc.com
ns1.test.com的地址192.168.0.1
ns2.test.com的地址192.168.0.2、192.168.0.3
下面配置test.com的主ns的named.conf和zone文件
复制代码 zone “test.com” IN { type master; file “com.zone”; allow-transfer {any;}; //表示允许任何地址从主ns下载zone文件 allow-update {any;}; //表示允许任何地址向主ns提交动态更新这个地址不一定需要运行dns服务器 };
$ORIGIN test.com. //$ORIGIN表示域的起始表示以下的主机都是该域的记录ns就表示ns.test.com.
$TTL 1DIN SOA ns1.test.com. admin.test.com. ( //ns1.sample.com.表示该域的主ns服务器admin.sample2.com.就是一个邮箱地址等价于adminsample2.com.2017072812 ; serial1D ; refresh1H ; retry1W ; expire3H ) ; minimum IN NS ns1 IN NS ns2 IN NS ns.abc.com. //这个ns.abc.com不属于当前域所以不能指定这个ns的A记录ns1 IN A 192.168.0.1 //ns1和ns2必须列出它们的A记录
ns2 IN A 192.168.0.2
ns2 IN A 192.168.0.3 //一个ns域名对应多个A记录big IN A 6.6.6.6$ORIGIN sub1.test.com. //$ORIGIN表示域的起始表示以下的主机都是该域的记录ns就表示ns.sub1.test.com.IN NS ns1 //ns1即ns1.sub1.test.com.此处也就是子域授权配置方式
ns1 IN A 10.10.10.10 //必须指定该ns的A记录这条记录也叫做GLUE记录
ns1 IN A 11.11.11.11 //多个A记录也是可以的sub2 IN NS ns.sub2.abc.com. //跨域授权不能指定该ns的A记录此时ns.sub2.abc.com.应该配置一个sub2.test.com.的zone文件。复制代码
8.主从服务器
主服务器从本地文件读取区域数据从服务器从服务器下载区域数据这个是区域传输。
从服务器启动时首先加载本地的zone文件这些文件正常应该是从主服务器下载得到的然后再向主服务器请求SOA比较本地zone是否是最新的如果不是则向主服务器下载最新的zone数据。
9.相关问题
[1]invalid command from 10.0.120.35#56644: expired
这表示两台设备的系统时间不一致在另外一台设备执行rndc -s 10.0.120.192 -p 956 -k /etc/rndc.key status时可能会遇到这种情况。
1.主域名服务器、辅域名服务器、子域授权
每个zone可以有一个primary server和多个slave server。所有的这些ns服务器(主ns和辅ns)都应该注册到上级域的ns服务器中同时这些ns服务器也要列到本地的zone文件中当然也可以写列出没有在上级注册的ns服务器。所有列出的ns服务器都是这个域的权威服务器在local DNS看来并没有主辅之分。另外一般情况只要配置主ns服务器就可以然后辅ns从主ns自动下载zone文件。
子域授权是DNS的最基础的配置流程LOCAL DNS解析的流程就是根据子域授权迭代解析的流程在com域注册test.com的意思就是让com域把test.com域授权给自己解析。
所谓子域授权就是把当前域的子域添加一条ns记录意思是让指定的ns作为子域的权威服务器。 2.一些问题
[1]响应标记中什么时候设置AA标记
当前服务器是请求域名的权威服务器时设置AA标记。如果域名为当前域的子域时响应子域授权信息这个响应是不带AA标记的因为子域才是该域名的权威服务器。
但是看到有些服务器响应的子域授权信息时也会带AA标记可能是不同服务器的原因不过对于local DNS来说这些授权信息都是可信的因为当前的ns是从上级ns得到的。
[2]如何理解ANSWER SECTION、AUTHORITY SECTION、ADDITIONAL SECTION
ANSWER SECTION就是对请求的应答这个应答有可能不完整这时候填入已知的最精确的应答。例如向test.com的权威域请求www.test.com但是可能回复一个www.test.com IN CNAME www.test.com.cdn.com这个应答是带AA标记的。
AUTHORITY SECTION表示请求的域名的权威信息。
ADDITIONAL SECTION表示附加信息保存glue记录这个glue记录很重要。
[3]各个部分的应答记录local DNS是否信任
不管哪个部分的应答local DNS只信任属于该域的记录不属于该域的记录则忽略。例如 [4]glue记录
sub1.test.com. IN NS ns.sub1.test.com.
ns.sub1.test.com. IN A 10.10.10.10 //这行就是glue记录是必须指定的
sub2.test.com. IN NS ns.test1.com.
;ns.test1.com. IN A 20.20.20.20 //这行不能指定因为这行的记录需要在com域中指定
glue记录位于应答报文的ADDITIONAL SECTION中。
一个域的子域的glue记录是必须要指定的因为ns是它的子域里面的域名不配置glue记录的话解析过程便会陷入死循环。
[5]zone里面的当前域的ns记录有什么用local DNS迭代解析时ns记录和ns记录的A记录都是从上级域得到的位于应答的权威部分那当前zone里面还要写一堆ns记录和ns记录的A记录干什么
虽然权威ns里面的ns记录才是local DNS迭代时最可信的但是这些ns记录和ns记录的A记录只能通过从上级的授权应答中获取只有注册到上级域中的ns记录才能让local DNS得到。所以zone里面的ns记录在普通的local DNS迭代过程中用不到。
所以这些ns记录只用作其他用途例如就是用来说明当前域的ns信息。
不过根的ns里面的ns记录是有用的因为程序启动时会向根的ns请求根的ns记录来更新本地的根ns记录。
[6]named.ca文件有什么用
bind9程序启动时首先便要获取根的ns记录是一个域名和该ns记录的A记录但是根已经是最顶了所以只能从根的ns主机中获取根的ns记录这便死锁了因此在named.conf应该指定hint zone不指定时程序中有固定的字符串和name.ca内容一样。
另外还可以看到程序迭代解析时向根的ns这个是从本地文件获取的请求了根的ns记录这一步只是用来更新程序中的根ns记录因为本地文件或者固定字符串的记录可能已经过期。
[7]如何更准确地理解ns记录
对比普通域名例如www.test.com这个域名的功能是从这个域名对应n个主机获取内容因此得到这个域名的A记录的目的就是从这个域名获取数据内容。
ns记录也是一个域名例如ns.test.com只不过这个域名对应n个主机的功能是解析其他的域名因此得到这个域名的A记录的目的就是从这个域名解析其他的域名。
不过ns的域名通常一个域名对应一个主机其实一个ns域名对应多个主机也是可以的。理解了ns记录是一个域名后也就是明白了ns记录可以跨域上面的例子已经提到只是跨域时不能指定该ns记录的A记录了。
一般注册某个域名时把NS记录设置为某个网站的域名这意思就是让这个网站的域名ns域名来解析自己的域名。 [8]是否可以把当前域授权出去
当前域的基本信息在SOA中说明SOA中记录了该域的主ns域名其他的ns都是辅助ns所以当前域的多个权威ns之间是主辅关系不存在授权这一说。另外只有在上级ns中注册的ns才能被local DNS得到。
也就是说在zone文件中写入的 IN NS ns1.test.com.等这些记录只是说明在local DNS迭代的过程中用不到了该域的ns记录。
[9]CDN需要有自己的域名吗
所谓的CNAME就是说当前域名的实际名字是CNAME记录需要让local DNS重新解析这个CNAME记录从而让local DNS从头迭代到去另一个权威ns也就是cdn的ns中请求。所以当然要自己注册一个域名。
如果是子域授权的方式就是指定了一个ns记录cdn的ns域名这时候local DNS得到这个ns记录后也要从头迭代得到这个ns的A记录所以也需要有自己注册的域名。
3.CDN配置方式
例如权威域为test.comcdn的权威域为cdn.com。
首先可以使用子域授权方式例如解析sub.test.com域名具体流程就是
1.local DNS通过迭代给test.com的ns发送sub.test.com请求test.com的ns响应一个授权的NS记录sub.test.com IN NS ns.cdn.com这时候并没有这个NS记录的A记录。
2.local DNS继续向com域请求ns.cdn.com的A记录com域给local DNS响应cdn.com的ns记录cdn.com IN NS ns.cdn.com和这个NS的A记录位于ADDITIONAL SECTION。
3.local DNS向ns.cdn.com请求sub.test.com最终收到该权威ns发送的最终结果带AA标记。
这里有一个注意的地方第2步向com域请求ns.cdn.com的A记录理论得到cd.com的ns后向这个ns请求ns.cdn.com的A记录但是com域返回的授权信息中已经有了这个ns的A记录。
更多的是使用CNAME方式例如解析www.test.com域名具体流程就是
1.local DNS通过迭代给test.com的ns发送www.test.com请求test.com的ns响应一个CNAME记录这个时候test.com可能缓存了这个cname之后的A记录而一并回给local DNS但是local DNS发现cname后的域名www.test.com.cdn.com不属于当前的test.com域因此会忽略这些记录这个时候响应里面也带AA标记因为响应的CNAME记录确实是权威域的记录。
2.local DNS继续向com域请求cdn.com的A记录com域给local DNS响应这个域名的A记录即cdn.com的ns记录的A记录。
3.local DNS向cdn.com的ns请求www.test.com.cdn.com最终收到该权威ns发送的最终结果带AA标记。 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DNS文档https://www.isc.org/community/rfcs/dns/ recursion yes|no; 开关关闭时只能响应本地zone记录如果需要从外部查询则会返回失败。即关闭此开关表示dns服务器不提供迭代或者递归forward查询。
view
视图语句的顺序是很重要的一位用户的请求将会在它所匹配的第一个视图中被解答 。
如果在配置文件中没有 view 语句在 IN 类中就会自动产生一个默认视图匹配于任何用户任何指定在配置文件的最高级的 zone 语句被看作是此默认视图的一部分。如果存在外部 view 语句所有的域视图必须会在 view 语句内部产生。
这就说明如果配置了view语句则此时不会生成默认view此时如果客户端没有匹配到任何view则会收到refuse响应。
常规的named.conf中会配置hint类型的zone如果没有配置时会使用程序中默认的配置。因此如果配置了view每个view中也可以选择配置或者不配置这个zone。
zone “.” IN { type hint; file “named.ca”; }; 转自https://www.cnblogs.com/iamwho/p/11422244.html