生命之中的最大错误在于:终日担心犯错误。— 爱尔伯特·哈伯德 (Elbert Hubbard 1856-1915),《笔记》
一般而言,随便找个合适的dns服务器作为自己的dns解析服务器即可,但如果选择不当,可能就会导致网络选择并不是最优的。
这个情况一般发生在电信网通优化的域名上。

检查方法(域名有所替换):

[root@aslibra ~]# dig cdl.cdn.aslibra.com
...(省略)
;; ANSWER SECTION:
cdl.cdn.aslibra.com.     683     IN      A       218.25.68.145
cdl.cdn.aslibra.com.     683     IN      A       218.25.68.192
cdl.cdn.aslibra.com.     683     IN      A       218.25.11.105

;; Query time: 6 msec
;; SERVER: 202.106.0.20#53(202.106.0.20)
;; WHEN: Wed Jun 10 16:40:07 2009
;; MSG SIZE  rcvd: 84

[root@aslibra ~]# dig cdl.cdn.aslibra.com +trace
...(省略)
cdl.cdn.aslibra.com.     900     IN      A       60.191.185.162
cdl.cdn.aslibra.com.     900     IN      A       60.191.187.8
...(省略)
;; Received 282 bytes from 61.160.207.67#53(ns1.dnspod.net) in 0 ms


第一个是目前自己的网络,dig +trace是用自己本身取获取解析
我们看到,第一次和第二次是不一样的,原因比较简单,这个是网通和电信的不同路线
第一个是从202.106.0.20(自己设定的dns服务器)返回的,以它访问目标域名服务器所取得的数据为准,也就是如果它是网通IP,则返回的就是网通的解析方案,而trace则直接咨询目标域名服务器,目标服务器根据你的IP来返回解析方案。

如果你是电信线路,而设定的是网通线路的dns服务器,这个时候就容易取得网通解析方案了。

也给我们引发一些注意的地方:
1 自己架设本地dns缓存服务器是最合适的解析方案
2 找到自己线路的dns服务器才有最优的访问效果
Tags: ,
bind有一项功能是forward,也就是只是做dns缓存。

适用以下情况:

1 做临时测试,不想向上级申请修改ns记录
2 不想向上级申请修改ns记录但希望交给另外的服务器处理
3 只有有限的公网IP,可以在把dns请求交给局域网

设置很简单:

zone "aslibra.com" {
  type forward;
  forward only;
  forwarders {218.241.231.189;};
};


也就是我把域名解析权交给了某个IP,这个服务器只是做cache。
forward only是可选,不设置则该 DNS Server 无法联系到转发器,那么 BIND 会自己尝试解析。
如果你要禁止 BIND 在无法联系到转发器时不做任何操作,那么你还可以使用 forward only 命令,这样 BIND 只能使用区的权威数据和缓存来响应查询了( 在连接不到转发器的情况下 )。
forwarders可以添加多个dns服务器。

我们先做一个测试环境:

三台ns解析服务器,有ns、ns2和ns3
ns和ns2是权威的解析服务器,ns改为bind的forward,后端是ns3。
我们用dig检查一下:

[root@localhost view]# dig www.aslibra.com @ns.aslibra.com
...(省略)
;; ANSWER SECTION:
www.aslibra.com.        300     IN      A       222.76.215.25

;; Query time: 9 msec
;; SERVER: 219.232.241.83#53(219.232.241.83)
;; WHEN: Sun May 31 00:14:15 2009
;; MSG SIZE  rcvd: 49

[root@localhost view]# dig www.aslibra.com @ns.aslibra.com
...(省略)
;; ANSWER SECTION:
www.aslibra.com.        295     IN      A       222.76.215.25

;; Query time: 0 msec
;; SERVER: 219.232.241.83#53(219.232.241.83)
;; WHEN: Sun May 31 00:14:20 2009
;; MSG SIZE  rcvd: 49


看出来区别了吧,300和295是有效性,300是默认的有效时间,也就是说,刚开始就新缓存了这个记录,5秒后查询已经是从缓存取的记录,这个过了300秒后会重新从后端服务器取值。

而我们看看ns2:

[root@localhost view]# dig www.aslibra.com @ns2.aslibra.com
...(省略)
;; ANSWER SECTION:
www.aslibra.com.        300     IN      A       222.76.215.25

;; AUTHORITY SECTION:
aslibra.com.            300     IN      NS      ns.aslibra.com.
aslibra.com.            300     IN      NS      ns2.aslibra.com.
aslibra.com.            300     IN      NS      ns3.aslibra.com.

;; ADDITIONAL SECTION:
ns.aslibra.com.         300     IN      A       219.232.241.83
ns2.aslibra.com.        300     IN      A       219.232.241.84
ns3.aslibra.com.        300     IN      A       218.241.231.189

;; Query time: 0 msec
;; SERVER: 219.232.241.84#53(219.232.241.84)
;; WHEN: Sun May 31 00:15:25 2009
;; MSG SIZE  rcvd: 150


这个是一直都是一样的,这个说明是直接提供的服务,不是forward。
就这么简单,have fun!!
Tags: , , ,
dns的解析一般都授权两个以上,防止单点故障。

比如阿权的书房的域名 www.aslibra.com,授权两台
ns.aslibra.com 和 ns2.aslibra.com,如果单点故障会怎么样呢?

trace检查一下域名:

[root@aslibra ~]# dig www.aslibra.com. +trace
....(省略部分查询)
aslibra.com.            172800  IN      NS      ns.aslibra.com.
aslibra.com.            172800  IN      NS      ns2.aslibra.com.
;; Received 100 bytes from 192.48.79.30#53(J.GTLD-SERVERS.NET) in 199 ms

www.aslibra.com.        300     IN      A       222.76.215.25
aslibra.com.            300     IN      NS      ns.aslibra.com.
aslibra.com.            300     IN      NS      ns2.aslibra.com.
;; Received 116 bytes from 219.232.241.83#53(ns.aslibra.com) in 8 ms


也就是83的服务器返回信息了。关闭83的服务,我们再查询:

[root@aslibra ~]# dig www.aslibra.com. +trace
....(省略部分一样的查询)
www.aslibra.com.        300     IN      A       222.76.215.25
aslibra.com.            300     IN      NS      ns.aslibra.com.
aslibra.com.            300     IN      NS      ns2.aslibra.com.
;; Received 124 bytes from 219.232.241.84#53(ns2.aslibra.com) in 7 ms


这回是84处理了此请求了。
这个说明了单个无法响应还会交给下一个处理的,要增加ns的授权需要在上级申请,也就是在 com. 申请多一个ns记录,自己指定似乎没用,因为上级就授权了两个,两个官方授权的服务器都挂掉是再也查询不到的了。

我们来做个实验:

增加ns3的授权:

[root@aslibra ~]# dig www.aslibra.com +trace
....(省略部分一样的查询)
www.aslibra.com.        300     IN      A       222.76.215.25
aslibra.com.            300     IN      NS      ns.aslibra.com.
aslibra.com.            300     IN      NS      ns2.aslibra.com.
aslibra.com.            300     IN      NS      ns3.aslibra.com.
;; Received 150 bytes from 219.232.241.83#53(ns.aslibra.com) in 2 ms


关闭ns和ns2之后,ns3其实是没用的:

[root@gx ~]# dig www.aslibra.com. +trace
....(省略部分一样的查询)
aslibra.com.            172800  IN      NS      ns.aslibra.com.
aslibra.com.            172800  IN      NS      ns2.aslibra.com.
;; Received 100 bytes from 192.31.80.30#53(D.GTLD-SERVERS.NET) in 252 ms

;; connection timed out; no servers could be reached


目前我还不知道部分域名提供多个ns记录有什么用,可能是备用的比较多,或者是针对大需求订制的。
比如提供很多域名服务,那提供 ns1-ns6 你挑两个就可以了,但服务器架构是有六个的,如果你跟上级服务提供商申请多个,那可以都填上的,防止域名解析服务死机的情况是无效的,可能对查询的压力分布有帮助。
Tags: , ,
关于DNS的常识,可以阅读附录的一些参考资料。
本文旨在尝试举例用dig命令理解这个过程,并非权威知识,仅供参考.
测试域名为阿权的书房的域名 www.aslibra.com 和 www.163.com。

[root@localhost ~]# dig www.aslibra.com

; <<>> DiG 9.2.4 <<>> www.aslibra.com
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25746
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 6, ADDITIONAL: 6

;; QUESTION SECTION:
;www.aslibra.com.               IN      A

;; ANSWER SECTION:
www.aslibra.com.        900     IN      A       222.76.215.25

;; AUTHORITY SECTION:
aslibra.com.            33024   IN      NS      k8.hkidc.com.
aslibra.com.            33024   IN      NS      b.hkidc.com.
aslibra.com.            33024   IN      NS      j6.hkidc.com.
aslibra.com.            33024   IN      NS      ns8.hkidc.com.
aslibra.com.            33024   IN      NS      ns5.hkidc.com.
aslibra.com.            33024   IN      NS      a.hkidc.com.

;; ADDITIONAL SECTION:
k8.hkidc.com.           55596   IN      A       125.65.112.32
b.hkidc.com.            53594   IN      A       221.122.64.81
j6.hkidc.com.           54375   IN      A       222.76.219.74
ns8.hkidc.com.          53598   IN      A       221.122.64.81
ns5.hkidc.com.          55596   IN      A       222.76.219.81
a.hkidc.com.            53594   IN      A       125.65.112.32

;; Query time: 71 msec
;; SERVER: 211.99.25.1#53(211.99.25.1)
;; WHEN: Mon Jun  1 12:05:17 2009
;; MSG SIZE  rcvd: 268


如何理解上面的意思?

QUESTION SECTION:查询的内容
ANSWER SECTION:相应的内容,一般会得到至少一条A记录,否则就还没定义
AUTHORITY SECTION:授权信息
ADDITIONAL SECTION:每个授权服务器的IP地址
SERVER:查询的dns服务器,可能会被缓存

过程大体是:
1 从SERVER查询www.aslibra.com,如果有有效缓存就返回了
2 如果没有,则找到aslibra.com的授权服务器,下面有例子介绍
3 从其中一个查询到结果(A记录)
Tags: ,
在 unix 和 linux 下,建议大家使用 dig 命令来代替 nslookup。 dig 命令的功能比 nslookup 强大很多,不像 nslookkup 还得 set 来 set 去的,怪麻烦的。

下面是 dig 的一些比较常用的命令:

# dig 最基本的用法
dig @server qianlong.com
# 用 dig 查看 zone 数据传输
dig @server qianlong.com AXFR
# 用 dig 查看 zone 数据的增量传输
dig @server qianlong.com IXFR=N
# 用 dig 查看反向解析
dig -x 124.42.102.203 @server
# 查找一个域的授权 dns 服务器
dig   qianlong.com +nssearch
# 从根服务器开始追踪一个域名的解析过程
dig   qianlong.com +trace
# 查看您使用的是哪个 F root dns server
dig +norec @F.ROOT-SERVERS.NET HOSTNAME.BIND CHAOS TXT
# 查看 bind 的版本号
dig @bind_dns_server CHAOS TXT version.bind
Tags: ,
分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]

阅读推荐

服务器相关推荐

开发相关推荐

应用软件推荐