Linux 搭建DNS服务器正反DNS解析和一些非常容易忽略的细节问题
DNS服务器,(Domain Name System)域名系统,在TCP/IP 网络中有非常重要的地位,能够提供域名与IP地址的解析服务。
DNS 是一个分布式数据库,命名系统采用层次的逻辑结构,如同一棵倒置的树,这个逻辑的树形结构称为域名空间,由于DNS 划分了域名空间,所以各机构可以使用自己的域名空间创建DNS信息。(这个概念和docker的命名空间像不像?)
注:DNS 域名空间中,树的最大深度不得超过127 层,树中每个节点最长可以存储63 个字符。(dockerfile层数不得超过128,是巧合吗?)
在搭建DNS服务前,至少需要理解一个概念:完全正式域。什么是完全正式域(FQDN)? 简单的说,google.com就是一个完全正式域,baidu.com也是一个完全正式域,163.com还是一个完全正式域,sina.com也是一个完全正式域,象什么com,cn,gov,edu,这些叫做顶级域,google,baidu,163,sina这样的叫二级域。通常,我们问别人,你的域名是多少? 这时候问的就是完全正式域,www这样的叫万维网子域。
顶级域可以分为组织域,地址域,反向域等等这样的类型,感兴趣的自行百度即可,不在赘述。
开始搭建DNS服务器,并配置正反解析一个域名:mycsdn.com,两台虚拟机,具体资源配置如下:
DNS服务器:IP地址---192.168.0.20,后续简称为20。
验证DNS解析效果的主机(客户端):IP地址--192.168.0.21,后续简称为21。在正式搭建前确保防火墙和selinux关闭。
20这台主机,安装DNS服务端:yum install bind bind-chroot bind-utils -y #其中bind-utils是提供各类测试管理DNS的工具
systemctl enable bind && systemctl start bind#启动服务,编辑 /etc/named.conf 这个主配置文件
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
allow-query { any; }; #13,14,17行改成这样既可。
在文末末尾添加如下:
zone "mycsdn.com" IN {
type master;
file "mycsdn.localhost";#指定DNS正向解析的数据文件名称,存放路径默认在 /var/named/目录下。客户端的域名解析就#读取这个文件
};
zone "0.168.192.in-addr.arpa" IN { #这里写的是缩略网段192.168.0.0的反写
type master;
file "mycsdn.loopback";#指定DNS正向解析的数据文件名称,存放路径默认在 /var/named/目录下。客户端的域名解析就#读取这个文件
};
以上是环境的配置,下面是写dns数据文件,根据以上所设置,需要编写一个文件,名称为 mycsdn.localhost,这个文件放在 /var/named/ 目录下。不过,通常使用自带的模板文件修改即可。
[root@centos11 named]# pwd
/var/named
[root@centos11 named]# ls -al
total 16
drwxrwx--T. 6 root named 141 Sep 4 21:54 .
drwxr-xr-x. 20 root root 280 Sep 4 13:52 ..
drwxr-x---. 7 root named 61 Sep 4 13:52 chroot
drwxrwx---. 2 named named 23 Sep 4 20:16 data
drwxrwx---. 2 named named 60 Sep 4 20:54 dynamic
-rw-r-----. 1 root named 2253 Apr 5 2018 named.ca
-rw-r-----. 1 root named 152 Dec 15 2009 named.empty
-rw-r-----. 1 root named 152 Jun 21 2007 named.localhost #正向模板文件
-rw-r-----. 1 root named 168 Dec 15 2009 named.loopback #反向模板文件
drwxrwx---. 2 named named 6 Jun 1 23:26 slaves
cp -a /var/named/named.localhost mycsdn.localhost
cp -a /var/named/named.loopback mycsdn.loopback
#这里需要提高注意了,必须加a拷贝,文件的属组必须是named,
#如果不加a,属组会改变,那么域名解析将不可能成功。现在编辑mycsdn.localhost这个文件
在编辑 mycsdn.loopback 这个文件,文件内容如下:
重启dns服务:systemctl restart named
编辑客户端,也就是21这个主机的网卡配置文件,将dns指向192.168.0.20,重启网卡服务使之生效,
ping www.mycsdn.com 和 ping bbs.mycsdn.com 应该是可以通的,这时测试的是正向解析。
nslookup 192.168.0.20,可以发现域名 mycsdn.com, 这时测试的是反向解析