一、什么叫DNS?
DNS 为Domain Name System(域名系统)的缩写,它是一种将ip地址转换成对应的主机名或将主机名转换成与之相对应ip地址的一种服务机制。它在互联网的作用是:把域名转换成网络可以识别的ip地址,在通过IP地址访问主机。比如:我们上网时输入的 www.163.com会自动转换成为202.108.9.16。其中通过域名解析出ip地址的叫做正向解析,通过ip地址解析出域名的叫做反向解析。 DNS使用TCP和UDP, 端口号都是53, 但它主要使用UDP,服务器之间备份使用TCP。
全世界只有13台“根”服务器,1个主根服务器放在美国,其他12台为辅根服务器,DNS服务器根据角色可以分为:主DNS, 从DNS, 缓存DNS服务器,DNS转发服务器。
什么是A记录?
A (Address) 记录是用来指定主机名(或域名)对应的IP地址记录。用户可以将该域名下的网站服务器指向到自己的web server上。同时也可以设置您域名的二级域名。
什么是NS记录?
NS(Name Server)记录是域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析。
什么是别名记录(CNAME)?
也被称为规范名字。这种记录允许您将多个名字映射到同一台计算机。通常用于同时提供WWW和MAIL服务的计算机。例如,有一台计算机名为“host.domain.com”(A记录)。它同时提供WWW和MAIL服务,为了便于用户访问服务。可以为该计算机设置两个别名(CNAME):WWW和MAIL。这两个别名的全称就是“www.domain.com”和“mail.domain.com”。实际上他们都指向“host.domain.com”。
什么是泛域名解析?
泛域名解析定义为: 用户的域名aaa.com,之下所设的*.aaa.com全部解析到同一个IP地址上去。 比如客户设mail.aaa.com就会自已自动解析到与aaa.com同一个IP地址上去。
DNS的查询方式
递归查询:只要发出递归查询,服务器必需回答目标IP与域名的映射关系。一般客户机和服务器之间属递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外DNS服务器发出查询请求,得到结果后转交给客户机;
迭代查询:服务器收到一次迭代查询回复一次结果,这个结果不一定是目标IP与域名的映射关系,也可以使其他的DNS服务器地址。
一般DNS服务器之间属迭代查询,若DNS2不能响应DNS1的请求,则它会将DNS3的IP给DNS2,以便再向DNS3发出请求;
二、使用bind搭建DNS服务器
测试环境: CentOS 6.5
主DNS服务器IP:192.168.1.5
辅DNS服务器IP:192.168.1.8
yum install -y bind bind-utils
cp /etc/named.conf{,.bak} ## 备份主配置文件
> /etc/named.conf
vim /etc/named.conf
加入如下配置:
options {
directory "/var/named"; ## 配置文件目录
};
zone "." IN { ## root根解析
type hint;
file "named.ca";
};
zone "localhost" IN { ## 本地解析,localhost解析到127.0.0.1
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN { ## 本地反解析,127.0.0.1解析到localhost
type master;
file "named.local";
allow-update { none; };
};
include "/etc/rndc.key";
chown named /etc/named.conf ## 更改权限 cd /var/named/ dig -t NS . > named.ca
vim localhost.zone ## 加入
$TTL 600
@ IN SOA localhost. admin.localhost. (
2 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS localhost.
localhost. IN A 127.0.0.1
vim named.loca ## 加入
$TTL 86400
@ IN SOA localhost. admin.localhost. (
2 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS localhost.
1 IN PTR localhost.
检测配置是否有问题:
named-checkconf
检测正解析:
named-checkzone "localhost" /var/named/localhost.zone
检测反解析:
named-checkzone "0.0.127.in-addr.arpa" /var/named/named.local
生成 rndc.key, 如果没有这个key namd 是启动不了的。
rndc-confgen -r /dev/urandom -a
更改权限
chown named:named /etc/rndc.key
启动服务
/etc/init.d/named start
查看一下named进程是否监听了53端口
netstat -lnp |grep named
首先测试正向解析:
dig @127.0.0.1 localhost.
接着测试反解析:
dig @127.0.0.1 -x 127.0.0.1
三、增加一个域名(zone)
vim /etc/named.conf ## 增加
zone "123.com" IN { ## 域名解析
type master;
file "123.com.dns";
allow-update { none; }; ## 表示允许指定的 client 來更新 zone 內的资料
allow-transfer { 192.168.1.8; }; ## 如果有辅助DNS,是否充许它可以同步zone文件。
};
zone "1.168.192.in-addr.arpa" IN { ## 域名反解析,通过IP解析域名
type master;
file "123.com.rev";
allow-update { none; };
allow-transfer { 192.168.1.8; };
};
1.168.192.in-addr.arpa 是 192.168.1 网段倒着写 in-addr.arpa 是固定格式
编辑zone文件:
vim /var/named/123.com.dns ## 增加 注意是这里是正向解析
$TTL 600
@ IN SOA 123.com. root.123.com. (
2 ; serial
120 ; refresh
14400 ; retry
3600000 ; expiry
86400 ) ; minimum
IN NS ns.123.com.
ns IN A 192.168.1.5
www IN A 192.168.1.5
编辑反解析文件:
vim /var/named/123.com.rev ## 增加 注意这里是反向解析
$TTL 600
@ IN SOA 123.com. root.123.com. (
2 ; Serial
120 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
@ IN NS 123.com.
5 IN PTR www.123.com.
5 IN PTR mail.123.com.
5 IN PTR bbs.123.com.
分别检测两个配置文件是否有问题:
named-checkzone "123.com" 123.com.dns named-checkzone "1.168.192.in-addr.arpa" 123.com.rev
重启named服务测试:
dig @127.0.0.1 www.123.com dig @127.0.0.1 -x 192.168.1.5
四、配置DNS转发
我们配置的DNS是只能解析我们定义的zone的,我们没有定义的是不能解析的。配置DNS转发就可以解析其他互联网上的域名了,前提是这个域名在互联网中的确在使用,也就是说这个域名已经被某个DNS服务器解析了。
vim /etc/named.conf 在options{} 里面增加
forward first;
forwarders { 8.8.8.8;
8.8.4.4; };
如果只写添加主解析 8.8.8.8 貌似不能解析,需要主辅DNS一起填写,虽然 /etc/resolv.conf 只填写主DNS也可以正常解析外网.
原理大概就是我们执行 dig @127.0.0.1 www.123.com 可以成功解析,那是因为我们定义了个域名(Zono),但是我们执行 dig @127.0.0.1 www.baidu.com 不会成功,是因为www.baidu.com这个域名,我们并没有在Bind中定义(Zone),所以,当用127.0.0.1这个DNS服务器不能解析www.baidu.com的时候,可以自动转发请求到 8.8.8.8 这个DNS服务器
重启服务
service named restart
再执行
dig @127.0.0.1 www.baidu.com
五、配置主从
在从服务器上
yum install -y bind bind-utils
拷贝主上的配置文件到从上:
scp /etc/named.conf [email protected]:/etc/named/ scp /var/name/{localhost.zone,named.local} [email protected]:/var/named/
/etc/named.conf, /var/named/localhost.zone, /var/named/named.local
拷贝过来后,修改一下从的/etc/named.conf
内容参考:
options {
directory "/var/named";
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};
zone "123.com" IN {
type slave;
file "slaves/123.com.dns";
masters { 192.168.1.5; };
};
zone "1.168.192.in-addr.arpa" IN {
type slave;
file "slaves/123.dns.rev";
masters { 192.168.1.5; };
};
include "/etc/rndc.key";
生成rndc.key
rndc-confgen -r /dev/urandom -a
更改权限
chown named:named /etc/rndc.key
启动named
/etc/init.d/named start
启动成功后会在 /var/named/下生成一个slaves目录,这个目录下会有 123.com.dns 123.com.rev 这两个文件,内容是和主上的一样的
在从上测试
dig @127.0.0.1 www.123.com
再测试没有定义的域名
dig @127.0.0.1 www.baidu.com
六、测试主从同步
在主dns上更改文件 /var/named/123.com.dns ## 在最后增加一行 ,随便加的哈
test IN A 1.1.1.1
另外需要修改一下第三行的那个数字串,这个是用来做标记的,只有这个数字变化了,才可以让从自动跟着变,数字只能是变大,不能减小
重启主namd服务:
/etc/init.d/named restart
经测试我们发现一个问题,就是从经常会同步特别慢,这是很要命的。所以需要我们做一个特殊操作,在主上的/etc/named.conf中,abc.com的zone中增加两行:
notify yes;
also-notify { 192.168.0.12; };
Leave a Reply
You must be logged in to post a comment.