全称是domain name server域名解析服务。
我们知道每个联网的计算机都有一个ip地址吧?Ip地址是用来做什么的呢?Ip地址是用来和互联网上别的机器进行通讯的。但是ip地址很难记吧?一两个ip地址可能还好,但是,我们每天要访问的网页不仅仅只有一两个吧?
我们记得都是什么呢?www.baidu.com. www.sina.com。我们记住的其实都是字符,都是域名。就像我们的电话号码,很难记,于是我们把电话号码存到手机里,给他起个昵称或者直接输入人名对吧,把电话号码对应成人名吧?然后打电话的时候就直接找到这个人名就好了。
所以我们系统也是一样,会把ip地址对应成一个主机名。在我们系统里有这么一个文件,就是专门用来做对应关系的,这个文件叫/etc/hosts/
,我们可以打开来看一下,一条记录一行,行里面就是主机名和ip地址,当然一个ip地址可以对应多个主机名,就像人有很多的昵称一样。
那么这样是不是就解决问题了,当我们想要访问一个网站的时候,我们就不用输入ip地址,而是可以直接输入主机名就行了,机器会帮我们做一个解析,把主机名对应成ip地址进行通信。早期这样做的确没问题,但是随着互联网愈发的壮大,这个文件就不那么实用了。我们要在机器上配置大量的对应关系,是非常耗时,非常麻烦的,而且要配置的机器可不止一台。比如说我是百度,我希望世界上所有的人都要来访问我的网页,那么,我是不是需要让世界上所有的人都去添加我的ip地址和主机名的对应关系。这个是非常难做到的事情,工作量太大。于是我们就引入了一种新的机制。
DNS的实现原理
这种机制的作用和hosts文件一样,但是实现方法却不一样,这个机制就叫DNS (Domain name server)。通过dns,我们可以解决这个大批量域名解析的问题。那具体是怎么实现的呢?这就是dns的结构方面的问题了。
我们之前说我们的系统是一个什么样的结构,是不是一个分层式的结构,这个结构的体现方式就是目录吧?对不对。Dns也是如此,它也采用了分层市管理的方式。
不过不同于目录,我们的目录是一个逻辑上的概念,用来帮助我们理解文件系统的一种方式。而dns,他是实实在在的一种管理结构。
那我们来看,目录的至高点是什么。是根吧,对不对,那么对于我们dns来说,既然是分层式管理结构,它也需要有一个至高点吧。这个至高点是什么呢?
我们把它称作根域,以点代表根域。全世界总共有13台根域,是处于至高无上的位置的,只有13台机器。
那么根域下面就是顶级域了,通常我们看到的顶级域有这个com。有org,有cn还有edu等等,这些都是顶级域。顶级域下面管理二级域,以此类推。
FQDN:主机名加上域名,被称作完全合格的域名,fqdn。其实com后面应该有个点的,代表根域。只不过我们现在习惯性的将其省略了。就好像国家管理省,省管理市,市管理县等等
完整的域名 www.baidu.com. . 根域 全球一共13个根域 .com 超级域,一级域 .baidu 二级域 www 主机名
两台设备做主从同步部署
主:master:192.168.150.128
从:slave:192.168.150.129
1. 软件安装(主从都装)
yum install -y bind bind-utils bind-chroot
说明:bind是主程序bind-utils是工具包,包括dig、nslookup等NDS命令bind-chroot为bind提供一个伪装的根目录以增强安全性(将“/var/named/chroot/”文件夹作为BIND的根目录)/etc/named.conf,/etc/named.rfc1912.zones是主配置文件/var/named/named.ca是根区域解析库文件/var/named/named.localhost, /var/named/named.loopback 是本机和环回地址的解析库文件rndc---remote name domain controller这是一个辅助管理工具,默认情况下与BIND安装在同一主机,而且只能通过127.0.0.1连接named进程,监听的端口号是TCP/953。
2. 主服务器配置
修改配置文件/etc/name.conf
这个配置文件主要分3段内容,options是全局配置,logging是日志配置,最后是区域解析库配置以及所包含的区域解析库文件配置。
allow-transfer 后面跟的是从服务器的IP。
设置正向解析和反向解析:/etc/named.rfc1912.zones
# named-checkconf
没有任何输出表示 /etc/named.conf没有语法错误
在/var/named目录下创建changtian.zone正向解析库文件和changtian-v.zone反向解析库文件(可以用named.localhost做模板复制一份改就行了)
反向解析测试zone: named-checkzone "150.168.192.in-addr.arpa" changtian-v.zone
备注说明:区域解析库文件第一个记录必须是SOA记录,必须有NS记录并且正解区域要有NS记录的A记录,反解则不需要有NS记录对应的A记录。
$TTL表示宏定义,TTL(Time- To-Live),dns记录在本地DNS服务器上保留的时间
@符号可代表区域文件/etc/named.conf里面定义的区域名称,即:"hanli.com."。
2018030422 ;标识序列号,十进制数字,不能超过10位,通常使用日期
2H ;刷新时间,即每隔多久到主服务器检查一次,此处为2小时,实验环境可以设置小一点
4M ;重试时间,应该小于刷新时间,此处为4分钟,实验环境可以设置小一点
1D ;过期时间,此处为1天
2D ;主服务器挂后,从服务器至多工作的时间,此处为2天)
这个文件里所有的域名结尾的点号一定不能省略。
区域解析库文件是放在/var/named目录下,由named进程是以named用户运行,因此区域解析库文件的属组应设置为named。
- 反向解析数据文件里面只有SOA、NS、PTR资源记录,所有A记录都要改为PTR记录,名称为IP地址,IP地址可以写全也可以简写,如果写全则是IP地址反写加上.in-addr.arpa.例如:150.168.192.in-addr.arpa. PTR资源记录的值为域名。
- 注意:查看权限:目录下文件,属组应为named用户(区域解析库文件是放在/var/named目录下,由named进程是以named用户运行,因此区域解析库文件的属组应设置为named)
验证:
重启服务:service named restart
dig -t A www.changtian.com @192.168.150.128
3. 从服务器配置(192.168.150.129)
安装完bind后配置/etc/named.conf
更改监听IP:
然后vim /etc/named.rfc1912.zones
slaves文件夹下面的两个文件无需创建,重启服务后会从主服务器里同步过来;
重启服务:service named restart
看日志:tail -f /var/log/message
日志显示成功且/var/named/slaves/存在两文件(changtian.zone、changtian-v.zone)