Ø DNS查询。工作流程如下图
n 客户端的DNS:8.8.8.8 /etc/hosts 14.215.177.38 www.baidu.com
n 客户端访问www.baidu.com 不用向DSN服务器发生查询,只需要查询本地的 /etc/hosts 文件即可
n 客户端访问www.sina.com.cn 先查询/etc/hosts 文件,由于此文件没有相关的记录,需要向IP地址为:8.8.8.8 这台主机(取名为DNS)发生查询请求,DNS没有 www.sina.com.cn 相关的A记录,会向root根域发生查询,而root根域也没有www.sina.com.cn 相关的A记录,但是有.cn 域相关的A记录,会将cn主机的IP 地址返回给DNS,让它向cn这台主机发起查询请求,cn也没有www.sina.com.cn 相关的记录,,但有.sina 域的A记录,返回sina.com.cn主机的IP地址,最后DNS主机将向sina.com.cn主机发送查询,这台主机有www.sina.com.cn 相关的A记录,将IP地址返回DNS主机。DNS主机将此记录进行缓存一段时间(当缓存过期之前客户端再次发起对www.sina.com.cn查询请求,DNS主机直接返回客户端)并将www.sina.com.cn对应的IP地址返回给客户端。
使用下面的命令可以验证上图
[root@node2 ~]# dig +trace www.sina.com.cn
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> +trace www.sina.com.cn
;; global options: +cmd
. 5 IN NS a.root-servers.net.
. 5 IN NS l.root-servers.net.
. 5 IN NS j.root-servers.net.
. 5 IN NS k.root-servers.net.
. 5 IN NS b.root-servers.net.
. 5 IN NS e.root-servers.net.
. 5 IN NS d.root-servers.net.
. 5 IN NS c.root-servers.net.
. 5 IN NS i.root-servers.net.
. 5 IN NS f.root-servers.net.
. 5 IN NS g.root-servers.net.
. 5 IN NS m.root-servers.net.
. 5 IN NS h.root-servers.net.
';; Received 508 bytes from 192.168.91.2#53(192.168.91.2) in 7148 ms
#查找根服务器从a-m
cn. 172800 IN NS a.dns.cn.
cn. 172800 IN NS b.dns.cn.
cn. 172800 IN NS d.dns.cn.
cn. 172800 IN NS ns.cernet.net.
cn. 172800 IN NS c.dns.cn.
cn. 172800 IN NS e.dns.cn.
#查找cn. 域的服务器,只有6个
;; Received 296 bytes from 192.5.5.241#53(192.5.5.241) in 13400 ms
sina.com.cn. 86400 IN NS ns4.sina.com.cn.
sina.com.cn. 86400 IN NS ns2.sina.com.cn.
sina.com.cn. 86400 IN NS ns3.sina.com.cn.
sina.com.cn. 86400 IN NS ns1.sina.com.cn.
;; Received 169 bytes from 203.119.25.1#53(203.119.25.1) in 13134 ms
www.sina.com.cn. 3600 IN CNAME jupiter.sina.com.cn.
jupiter.sina.com.cn. 60 IN CNAME ara.sina.com.cn.
ara.sina.com.cn. 60 IN A 121.14.1.190
ara.sina.com.cn. 60 IN A 58.63.236.248
ara.sina.com.cn. 60 IN A 121.14.1.189
sina.com.cn. 86400 IN NS ns2.sina.com.cn.
sina.com.cn. 86400 IN NS ns4.sina.com.cn.
sina.com.cn. 86400 IN NS ns1.sina.com.cn.
sina.com.cn. 86400 IN NS ns3.sina.com.cn.
;; Received 257 bytes from 121.14.1.22#53(121.14.1.22) in 6 ms
www.sina.com.cn 最终的结果为121.14.1.22。可以看到新浪有4个NS
n 验证了上述描述的过程
Ø DNS 正解:从主机名到IP地址的解析过程
Ø DNS 反解:从IP地址到主机名的解析过程
Ø 无论正解还是反解每个领域的记录就是一个区域(zone)。有一个正向解析文件和一个反向解析文件
Ø 正解域名需要符合INTERNIC 已经定义的gTLD以及ccTLD,而且没有人使用
Ø 正解文件通常有以下几种标志
n SOA(Start of Authority)开始验证
n NS(NameServer) 名称服务器的缩写
n A(Address) 就是地址
Ø 一部简单的正解DNS服务器,一般最小包含两个zone,一个是hint(根域),一个是关于自己领域的正解zone。如果有主从还有Master和Slave这两种数据类型
Ø 能够设定反向解析的人一般只有ISP才有权限,除非你已经获得整个class C 以上等级的IP网段,ISP才能给你IP反解需求,否则需要向你的直属上层ISP申请
n NS
n SOA
n PRT(PoinTeR)
Ø 一般情况下只有mail服务器才需要正反解成对需求。很多反解都是ISP实现
Ø 主从DNS可以起到冗余的作用,由于DNS查询是随机的,所以两部DNS服务器需要完全一样
Ø Master DNS,需要管理员手动配置,Slave DNS 可以通过自动同步Master DNS的方式获得同Master DNS 完全一样的配置
Ø 主从同步的方式
n Master主动告知:Master数据库的内容发生变化后,加大数据库序号,并重启DNS服务,那么Master会主动告知slave未更新的数据库,此时能够实现数据同步
n 由Slave主动提出同步请求:Slave会定期查看Master的数据库序列号,如果比自己大就表示数据库发生了更新,那么Slave就开始更新,如果序号不变,就表示数据库没有发生更新,不会更新
Ø 客户端设定:
n /etc/hosts:本地host对应IP地址的文件
n /etc/resolv.conf:ISP提供的DNS服务器的IP地址
u nameserver 192.168.91.2 只有在192.168.91.2这部服务器出现问题才会使用下面的备用服务器
u nameserver 8.8.8.8
u 这个文件默认使用DHCP自动获取DNS服务器的IP地址,如果想手动指定其他的IP地址,需要修改网卡配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0
PEERDNS=no #(新增这一行)
NM_CONTROLLED=no 是否使用NetworkManager服务管理。此服务与桥相冲突,建议关闭。如果不使用NetworkManager服务最好将此服务也停止,并关闭开机自动启动
然后重启网络
n /etc/nsswitch.conf:此文件决定先使用那个文件的设定。即/etc/hosts还是/etc/resolv.conf。
u vim /etc/nsswitch.conf
hosts: files dns 表示先使用file(即/etc/hosts)在使用dns(即/etc/resolv.conf)
n 客户端相关命令
u host [-a] FQDN [server]
-a:代表列出该主机所有相关的信息,包括IP,TTL及排错信息,等同于dig命令。有些主机不支持-a操作,例如www.baidu.com就不支持-a
-l:若后面接的那个domain设定允许allow-transfer,则列出该domain所管理的所有主机名对应的数据。一般情况下都是不允许使用此命令的,只有DNS主机管理员可以使用该命令
server:可以省略,当想使用非/etc/resolv.conf 内的DNS主机,来进行DNS解析的时候使用该参数
u nslookup FQDN|IP [server]
set type=any:列出所有的信息(正解方面的配置文件)。有些FQDN 不支持此项
set type=mx:列出与mx相关的信息
后面不跟任何内容,直接进入nslookup查询画面
> set type=mx。百度不支持type=any
> exit
u dig [options] FQDN [@server]
server:可以省略,当想使用非/etc/resolv.conf 内的DNS主机,来进行DNS解析的时候使用该参数
options
ü +trace 从. 开始追踪一直到最终目标
ü -t type:查询的数据主要有mx,ns,soa等类型
ü -x: 查询反解信息
[root@node1 ~]# dig www.sina.com.cn
… 省略
jupiter.SINA.COM.CN.
jupiter.SINA.COM.CN. 5 IN CNAME ara.SINA.COM.CN.
ara.SINA.COM.CN. 5 IN A 121.14.1.190
ara.SINA.COM.CN. 5 IN A 58.63.236.248
# [domain] [ttl] IN [资源类型] [资源内容]
ara.SINA.COM.CN. 5 IN A 121.14.1.189
;; Query time: 7 msec
;; SERVER: 192.168.91.2#53(192.168.91.2)
;; WHEN: Wed Aug 3 18:03:30 2016
;; MSG SIZE rcvd: 121
ü domain 尽量使用FQDN。后面有个小数点
ü A IP地址
ü IN 是固定的
ü ttl:time to live 这条记录缓存多少秒钟,一般由特定的参数设定,所以正向解析文件中一般不设置
ü RR:resource record 正解文件资源记录格式
[domain] IN [RR type] [RR data]
RR type:A|AAAA|NS|SOA|MX|CNAME
RR date:IPV4|IPV6|FQDN(DNS服务器主机名或邮件服务器主机名)
u whois [domain]
由于该命令显示的信息太详细,为了防止不被黑客所利用,有些信息可能不正确,或者直接拒绝使用该命令查询相关的域名。百度不支持此命令。新浪支持
[root@node1 ~]# whois sina.com.cn
[Querying whois.cnnic.cn]
[whois.cnnic.cn]
Domain Name: sina.com.cn
ROID: 20021209s10011s00082127-cn
Domain Status: clientDeleteProhibited
Domain Status: serverDeleteProhibited
Domain Status: clientUpdateProhibited
Domain Status: serverUpdateProhibited
Domain Status: clientTransferProhibited
Domain Status: serverTransferProhibited
Registrant ID: sinacomcn2
Registrant: 北京新浪互联信息服务有限公司
Registrant Contact Email: domainname@staff.sina.com.cn
Sponsoring Registrar: 北京新网数码信息技术有限公司
Name Server: ns1.sina.com.cn
Name Server: ns2.sina.com.cn
Name Server: ns3.sina.com.cn
Name Server: ns4.sina.com.cn
Registration Time: 1998-11-20 00:00:00
Expiration Time: 2019-12-04 09:32:35 #过期时间
DNSSEC: unsigned
Ø DNS 软件:bind rpm –qa | grep bind
n bind-libs ç bind及与之相关的指令所使用的函式库
n bind ç bind主程序
n bind-utils ç 客户端搜寻主机名的相关指令
n bind-chroot ç 将bind程序固定在指定的目录下,不能离开此目录。当bind的程序有漏洞只对某一个目录有危害,而无法危害到整个系统。bind-chroot就是起这个作用的。centos 6.x 默认将bind锁在/var/named/chroot 目录中
Ø bind 主配置文件/etc/named.conf:设定主机名、zone file 存放的路径,权限等
Ø zone file:正反解配置文件,记录主机名与IP地址的对应关系等
Ø centos 6 中默认目录:
n /etc/named.conf 主配置文件
n /etc/sysconfig/named 程序的配置文件,设置是否启动chroot及其他额外的参数
u ROOTDIR=/var/named/chroot 安装好bind-chroot后此配置文件自动配置这样。此配置文件默认只有这一行生效
u 启用chroot后bind 相关的数据文件真实的目录都在/var/named/chroot。在centos 6.x 已经将所需要使用到的目录,通过mount –bind /var/named /var/named/chroot/var/named 进行目录绑定。参考/etc/init.d/named 内容。所以无需切换至/var/named/chroot这个目录,使用正规目录即可
/var/named/chroot/etc/named.conf
/var/named/chroot/var/named/zone_file*
/var/named/chroot/var/run/named/named.pid
n /var/named 数据库档案默认存放的目录
n /var/run/named named程序运行时对应的PID文件存放的路径
Ø DNS 服务器类型
n cache-only DNS
n forwarding DNS
n master/slave
n subdomain
Ø cache-only 没有正反解数据库文件,只有. 这个zone file。没有公开的缓存DNS服务器,自身没有主机名和IP地址的对应关系,完全由对外查询来提供它的数据源。
n 一般情况和forwarding DNS 结合使用。
n 当公司对互联网进行严格的控制,关闭了tcp/udp 53端口,可以在防火墙主机上架设DNS服务,来完成公司上互联网的需求,这样主要是为了安全需要
Ø forwarding 连. zone file 也没有,只是指定了一个上层的DNS。任何DNS的查询都交由上层DNS进行相关的解析工作
Ø forwarding 和 cache-only 结合使用的实例
n vim /etc/named.conf 注意不要动/var/named/chroot目录下的内容
options {
listen-on port 53 { any; };
#DNS 默认监听的端口。默认是监听在localhost上,只有本机才能对#此DNS服务进行查询。any 表示所有都能对此DNS服务进行查询
directory "/var/named"; #zone file 存放的目录
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
#dump-file statistics-file memstatistics-file 一些named程序
#的统计信息
allow-query { any; };
#设定那些客户端能够对此DNS服务器进行查询请求
recursion yes;#将自己视为客户端的一种查询模式
forward only;#即使有.zone file 也不向根发起查询而是想上层DNS
#服务器发起查询。cache-only 的常见配置
forwarders { 202.96.134.133; };
#设置上层DNS服务器。注意不要少了分号,花括号前后有空格
};
n bind 程序监听的端口
[root@node1 ~]# ss -tnlup | grep named
udp UNCONN 0 0 192.168.91.67:53 *:* users:(("named",3006,513))
udp UNCONN 0 0 127.0.0.1:53 *:* users:(("named",3006,512))
udp UNCONN 0 0 ::1:53 :::* users:(("named",3006,514))
tcp LISTEN 0 3 ::1:53 :::* users:(("named",3006,22))
tcp LISTEN 0 3 192.168.91.67:53 *:* users:(("named",3006,21))
tcp LISTEN 0 3 127.0.0.1:53 *:* users:(("named",3006,20))
tcp LISTEN 0 128 ::1:953 :::* users:(("named",3006,24))
tcp LISTEN 0 128 127.0.0.1:953 *:* users:(("named",3006,23))
UDP/TCP 53
127.0.0.1:953:远程名称解析服务控制功能(remote name daemon control,rndc) 预设只有本机可以针对rndc来控制
n 日志/var/log/message
[root@node1 ~]# cat /var/log/messages | grep named | grep start
Aug 3 14:39:19 node1 named[2617]: starting BIND 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 -u named -t /var/named/chroot
表示启用chroot,并指定其目录
n 测试forwarding DNS
[root@node1 ~]# dig www.baidu.com @127.0.0.1
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> www.baidu.com @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34703
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 445 IN CNAME www.a.shifen.com.
www.a.shifen.com. 445 IN A 14.215.177.37
www.a.shifen.com. 445 IN A 14.215.177.38
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Aug 3 16:39:04 2016
;; MSG SIZE rcvd: 90
n 性能由于forwarding DNS有缓存功能,所以对于下层的DNS服务器查询是很快的,整体的性能要看上层DNS服务器的性能,如果上层DNS服务器的性能好,带宽高可以增加整体的性能
Ø SOA 7个参数的意义按顺序
n Master DNS 服务器主机名
n 管理员Email
n 序号:代表数据库档案的新旧,序号越大代表越新,slave凭序列号判断master是否发生了更新。一般使用日期2016080311 表示2016/8/3 第11次更新。此序号不能大于2^32即必须小于4294967296
n 更新频率(Refresh):定义slave多久向master请求更新一次
n 失败重新尝试的时间(Retry):slave联机master失败,等多久再此联机master。
n 失效时间(Expire):slave 在这段时间内无法联机master,将不再继续尝试联机master,并删除这份下载的zone file信息
n 缓存时间(Minumum TTL):如果zone file中每笔RR记录都没有写到TTL 缓存时间,那么就以这个SOA的设定值为主、
n Refresh >= Retry*2
Refresh + Retry < Expire
Expire >= Rrtry * 10
Expire >= 7Days
Ø view 视图功能,针对不同的客户端IP地址,取得自己的zone。例如:内/外网都能够访问www服务器。内网访问www服务器解析的地址为内网的地址,外网访问www服务器的地址解析的是公网的地址
n 内网:192.168.91.0/24
n 外网:10.0.1.0/24 (模拟外网,实际环境中应该是公网IP地址)
n cat /etc/named.conf
options {
listen-on port 53 { any; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; };
recursion yes;
allow-transfer { none; };
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
acl intranet { 192.168.91.0/24; };
acl internet { 10.0.1.0/24; };
view "lan" {
match-clients { "intranet"; };
zone "." IN {
type hint;
file "named.ca";
};
zone "centos6.cn" IN {
type master;
file "named.centos.cn";
allow-transfer { 192.168.91.68; };
};
zone "91.168.192.in-addr.arpa" IN {
type master;
file "named.192.168.91";
allow-transfer { 192.168.91.68; };
};
};
view "wlan" {
match-clients { "internet"; };
zone "." IN {
type hint;
file "named.ca";
};
zone "centos6.cn" IN {
type master;
file "named.centos.cn.intel";
};#外网不需要反向解析文件,由ISP提供
};
n cat /var/named/named.centos.cn
$TTL 86400
@ IN SOA master.centos6.cn. test.www.centos6.cn. (
2016080507
3H
15M
1W
1D
)
@ IN NS master.centos6.cn.
@ IN NS slave.centos6.cn.
master.centos6.cn. IN A 192.168.91.67
slave.centos6.cn. IN A 192.168.91.68
@ IN MX 10 mail.centos6.cn.
www.centos6.cn. IN A 192.168.91.67
node1.centos6.cn. IN A 192.168.91.67
node2.centos6.cn. IN A 192.168.91.68
node3.centos6.cn. IN A 192.168.91.69
node4.centos6.cn. IN A 192.168.91.70
n cat /var/named/named.192.168.91
$TTL 86400
@ IN SOA master.centos6.cn. www.centos6.cn. (
2016080504
3H
15M
1W
1D
)
@ IN NS master.centos6.cn.
@ IN NS slave.centos6.cn.
67 IN PTR master.centos6.cn.
68 IN PTR slave.centos6.cn.
67 IN PTR www.centos6.cn.
67 IN PTR node1.centos6.cn.
68 IN PTR node2.centos6.cn.
69 IN PTR node3.centos6.cn.
70 IN PTR node4.centos6.cn.
n cat /var/named/named.centos.cn.intel
$TTL 86400
@ IN SOA master.centos6.cn. test.www.centos6.cn. (
2016080507
3H
15M
1W
1D
)
@ IN NS master.centos6.cn.
master.centos6.cn. IN A 10.0.1.22
@ IN MX 10 mail.centos6.cn.
www.centos6.cn. IN A 10.0.1.22
n 测试
u [root@node1 named]# dig -t A www.centos6.cn @192.168.91.67
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -t A www.centos6.cn @192.168.91.67
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31217
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;www.centos6.cn. IN A
;; ANSWER SECTION:
www.centos6.cn. 86400 IN A 192.168.91.67
;; AUTHORITY SECTION:
centos6.cn. 86400 IN NS master.centos6.cn.
centos6.cn. 86400 IN NS slave.centos6.cn.
;; ADDITIONAL SECTION:
master.centos6.cn. 86400 IN A 192.168.91.67
slave.centos6.cn. 86400 IN A 192.168.91.68
;; Query time: 1 msec
;; SERVER: 192.168.91.67#53(192.168.91.67)
;; WHEN: Wed Aug 10 16:55:41 2016
;; MSG SIZE rcvd: 121
u [root@node1 named]# dig -t A www.centos6.cn @10.0.1.22
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -t A www.centos6.cn @10.0.1.22
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15007
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;www.centos6.cn. IN A
;; ANSWER SECTION:
www.centos6.cn. 86400 IN A 10.0.1.22
;; AUTHORITY SECTION:
centos6.cn. 86400 IN NS master.centos6.cn.
;; ADDITIONAL SECTION:
master.centos6.cn. 86400 IN A 10.0.1.22
;; Query time: 0 msec
;; SERVER: 10.0.1.22#53(10.0.1.22)
;; WHEN: Wed Aug 10 16:55:54 2016
;; MSG SIZE rcvd: 85
#达到了预期的效果
原创文章,作者:jslijb,如若转载,请注明出处:http://www.178linux.com/32758