简介:
DNS服务器的作用就是就好比生活中的电话簿、114查号台一样,为各种网络程序找到对应目标主机的IP地址或对应的主机域名。
DNS系统的作用:
正向解析:根据主机名称(域名)查找对应的IP地址(实际应用中最多的)
反向解析:根据IP地址查找对应的主机域名(不常用,一般用于搭建邮件服务器时。)
根据服务器与所提供域名解析记录的关系,将DNS服务器分为不同的角色:
缓存域名服务器
也称为 唯高速缓存服务器
通过向其他域名服务器查询获得域名->IP地址记录
将域名查询结果缓存到本地,提高重复查询时的速度
主域名服务器
特定DNS区域的官方服务器,具有唯一性
负责维护该区域内所有域名->IP地址的映射记录
从域名服务器(通俗一点就是用于备份DNS服务器的)
也称为 辅助域名服务器
其维护的 域名->IP地址记录 来源于主域名服务器
搭建DNS服务应用的软件为:BIND(Berkeley Internet Name Daemon)
官方站点:https://www.isc.org/
相关软件包:
bind-9.3.3-7.el5.i386.rpm
bind-utils-9.3.3-7.el5.i386.rpm
bind-chroot-9.3.3-7.el5.i386.rpm
caching-nameserver-9.3.3-7.el5.i386.rpm
cache-nameserver软件包实际上只是提供了一些配置样例文件,对于熟悉BIND配置文件的系统管理员来说,也可以不用安装该软件包
bind,提供了域名服务的主要程序及相关文件
bind-utils,提供了对DNS服务器的测试工具程序(如nslookup、dig等)
bind-chroot,为bind提供一个伪装的根目录以增强安全性(将“/var/named/chroot/”文件夹作为BIND的根目录)
caching-nameserver,为配置BIND作为缓存域名服务器提供必要的默认配置文件,这些文件在配置主、从域名服务器时也可以作为参考
named作为标准的系统服务脚本,通过”service named start/stop/restart“的形式可以实现对服务器程序的控制
named默认监听TCP、UDP协议的53端口,以及TCP的953端口:
其中UDP 53端口一般对所有客户机开放,以提供解析服务;
TCP 53端口一般只对特定从域名服务器开放,提高解析记录传输通道;TCP 953端口默认只对本机(127.0.0.1)开放,用于为rndc远程管理工具提供控制通道
如果没有安装bind-chroot软件包,则主配置文件默认位于 /etc/named.conf,数据文件默认保存在 /var/named/ 目录
1、安装软件包
[root@centos etc]# yum -y install bind
2、修改相关目录权限
安装完BIND以后,BIND的主配置文件通常是保存在两个位置:
/etc/named.conf -BIND服务主配置文件
/var/named/ -域的zone配置文件
[root@centos etc]# cd /var/named
[root@centos named]# chown -R named:named /var/named/
[root@centos named]# chmod -R 664 /var/named/
[root@centos named]# chmod 775 /var/named
[root@centos named]#chmod +x /var/named/data /var/named/dynamic /var/named/slaves
或者直接暴力 chmod -R 770 /var/named/
[root@centos named]# chown root:named /etc/named.conf
3、修改/etc/named.conf
[root@centos etc]# cat /etc/named.conf
options {
listen-on {192.168.183.128;}; # 监听地址
listen-on {172.20.33.33;}; # 监听地址
allow-transfer {"none";};
recursion yes; # DNS是否可递归
allow-query {any;}; # 允许所有地址
max-cache-ttl 900;
directory "/var/named";
pid-file "/var/named/named.pid";
dump-file "/var/named/named_dump.db";
statistics-file "/var/named/named.status";
forward only;
forwarders { 180.76.76.76 ; }; # 转发地址
query-source address 172.20.33.33; # 转发请求源地址
};
acl external_ip {
172.20.32.0/22; # 定义外网地址段
};
view "external" { # 定义外网IP的区域文件,这里注意view的时候所有的zone都要写在view区域里面
match-clients {external_ip;};
zone "babyshen.com" in {
type master; # 指定我们要配置的是域主DNS服务器
file "zone.babyshen.com.external"; # 指定域的zone文件名
allow-update{none;};
};
};
acl internal_ip {
192.168.183.0/24; # 定义内网地址
};
view "internal" { # 定义内网IP的区域文件,这里注意view的时候所有的zone都要写在view区域里面
match-clients {internal_ip;};
zone "babyshen.com" in {
type master;
file "zone.babyshen.com.internal";
allow-update{none;};
};
};
view "default" { # 默认的,匹配不到以上执行这个
match-clients {any;};
allow-query {any; };
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
4、建立zone.babyshen.com.external和zone.babyshen.com.internal文件
[root@centos etc]# cd /var/named
[root@centos named]# cat zone.babyshen.com.external
$TTL 60
@ IN SOA babyshen.com admin.babyshen.com. (
2016121201 ; serial
86400 ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1
ns1 IN A 172.20.33.33
@ IN A 172.20.33.33
www IN A 172.20.33.33
* IN A 172.20.33.33
[root@centos named]# cat zone.babyshen.com.internal
$TTL 60
@ IN SOA babyshen.com admin.babyshen.com. (
2016121201 ; serial
86400 ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1
ns1 IN A 192.168.183.128
@ IN A 192.168.183.128
www IN A 192.168.183.128
* IN A 192.168.183.128
5、检查文件是否有语法错误
1)检查主配置文件是否有错误
[root@centos named]# named-checkconf /etc/named.conf
2)检查区域文件是否有错误
[root@centos named]# named-checkzone babyshen.com zone.babyshen.com.external
zone babyshen.com/IN: loaded serial 2016121201
OK
[root@centos named]# named-checkzone babyshen.com zone.babyshen.com.external
zone babyshen.com/IN: loaded serial 2016121201
OK
6、可以实现
1)当用192.168.183.0/24这个段去解析www.babyshen.com的时候,解析地址为192.168.183.128
2)当用172.20.32.0/22这个段去解析www.babyshen.com的时候,解析地址为172.20.33.33
3)当解析其他域名的时候(不在view里面的域名,即babyshen.com以外的域名),转发给180.76.76.76解析
即完成了DNS的简单部署,实现了DNS转发和view的实现
记录类型
1.A记录:A记录是来指定与主机名对应的IP地址记录,通俗的来说A记录就是服务器的IP地址,域名绑定A记录就是告诉DNS服务器,当你输入域名时引导你去正确的对应服务器。A记录就是域名的IP地址。
2.NS记录:NS记录为域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析,注册域名后,会有一个默认的DNS服务器,每个注册的域名都是由一个DNS域名服务器来进行解析,一般NS记录出现的形式说,ns1.domain.xx.. ns2.domain.xx等等。NS记录就是指定由哪个DNS服务器来进行你的域名解析。
3.MX记录:MX记录为邮件交互记录,它指向一个邮件服务器,在使用mail系统时,发件人根据收件人地址的后缀来定位mail server。例如我们要发邮件给zjs@babyshen.com,我的邮件系统通过DNS查找到netpas.cc这个域名,继而查找到的MX记录,如果MX记录存在,我的计算机就将邮件发送到MX记录所指定的邮件服务器。
4.CNAME记录:CNAME记录为别名记录,允许多个名字映射到一台服务器上,通常用于提供多个服务。例如我有一台计算机域名为host.babyshen.com,需要同时提供mail服务和www服务。则全称为www.babyshen.com,和mail.babyshen.com。实际上这两个域名指向的都是host.babyshen.com。
5.TXT记录:TXT记录一般用于某个主机名或者域名的记录,IN TXT “location:””21vianet DAXING ROOM”这段应该是说明我们这台主机的存放位置的相关信息。TXT记录还有拓展的应用有SPF记录。SPF记录一般用于反垃圾游戏,MX记录作用是向发信人指明某个域名的邮件服务器有哪些。SPF记录则正好相反,SPF记录向收信者表明,哪些邮件服务器是经过某个域名的认可发邮件的。主要针对伪造域名的垃圾邮件。例如我的邮件服务器收到邮件是来自lfy@babyshen.com的邮件,那这份邮件到底是不是babyshen.com发送过来的。我们可以查询babyshen.com的SPF记录,防止别人伪造域名来发邮件。
6.TTL:简单的说TTL值就是一条域名解析记录在DNS服务器里的存留时间,当DNS服务器接收到解析请求时,会向域名指定的NS服务器发出解析请求从来获得解析记录,获得这条记录后,记录会在DNS服务器中保留一段时间这段时间DNS服务器不再向NS服务器发出请求,收到解析请求后直接返回。这个记录在DNS服务器上保存的时间就是TTL值。一般增大TTL值,可以节约域名解析时间,访问网站会加速。
7.PTR值:反向解析的记录类型,可以看出是A记录的反向。PTR主要用于邮件服务器,比如zjs@babyshen.com给lfy@babyshen.com发邮件,邮件服务器收邮件时会查看头文件,并分析是由哪个IP地址发出来的。然后根据这个IP地址进行反解,如果解析的结果和IP地址相对应就接受这封邮件,不对应就拒绝。
8.泛域名以及泛解析:泛域名是指在一个域名的根下,所有以同样形式未建立的子域名。例如*.babyshen.com。
泛解析是指把*.babyshen.com的A记录解析到某个IP地址上,通过访问任意的babyshen.com都能访问到你解析的站点上去。
9.SOA记录:初始授权记录,SOA记录表明了DNS服务器之间的联系,SOA记录表明了谁是这个域的所有者。一般用于主从服务器。
<1>Serial:表示当前DNS数据库的版本号,供从服务器判断是否需要从主服务器上获取新数据。
<2>Refresh:设置SDNS多长时间与MDNS连接一次。
<3>Retry:当SDNS向MDNS试图获取serial时候,如果MDNS无响应,多长时间重新检查。
<4>Expire:数值决定SDNS在没有MDNS权威的提供下解析域名的时间长短。
<5>Minimum:一些没有生存周期的解析记录的生存时间。
<6>Notify:可设置MDNS更新时都会主动通知SDNS。
本文出自 “baby神” 博客,请务必保留此出处http://babyshen.blog.51cto.com/8405584/1881989
原文地址:http://babyshen.blog.51cto.com/8405584/1881989