前言:
了解下DNS服务器的作用和原理:
DNS是在互联网上进行域名解析到对应IP地址的服务器,保存互联网上所有的IP与域名的对应信息,然后将我们对网址的访问,解析成IP地址并返回,然后电脑再去通过IP地址去访问服务器,获得数据。
首先就要讲一下域名,这里我拿百度的地址来进行讲解:
www.baidu.com.
完整的域名,后面都是有一个“.”的,但是一般使用中都是默认省略点了,这是一个完整的域名。通过 “.” 来进行分割成三个部分:
www: www是 主机名
baidu: baidu是 域名
com: com是 类型
但是平时,我们习惯将整 域名+类型合起来成为域名,主机名,称之为子域名。 而实际上并不是这样的。严格来说就是 主机名,域名,类型。
然后,当我们访问 www.baidu.com 时,电脑会先去dns服务器上查找与这个网址对应的 ip并返回。这个过程就是DNS解析。而DNS服务器又分为下面几种:
“.” :完整网址中最后的那个“.” 就代表DNS的根服务器,根服务器是DNS服务器中最上层的服务器,分布在全球各地。其中保存着该区域的所有 的类型DNS服务器的IP地址
com : com是一个DNS类型,像常见的com,net,org,edu,gov是*的规定的正式类型,还有常见的商用类型等。里面保存着的都是类型为 com 的域名服务器的IP地址。
baidu.com : baidu为域名,是com的下级dns服务器,里面保存着域名为 baidu.com 的所有主机对应的IP地址
当我们访问 www.baidu.com 时,会先去 根服务器中 查找所有的 com类型服务器的地址,然后再去com类型的服务器上查找所有 baidu.com 域名的服务器地址,最后再去 所有baidu.com的域名服务器上找到 www.baidu.com 这个网址对应的IP地址,然后返回给访问www.baidu.com的电脑主机。 然后主机就用这个IP与服务器建立连接。
另外,所有这些不同层级DNS服务器都一般是由多台服务器同时提供服务,做一个冗余好可用,负载均衡。 在这上面分为:
主服务器: 又名master服务器,所有其他从服务器和缓存服务器的域名解析信息都是由master服务器上抓取下来的,所有的修改都直接在master上修改就行了,别的自动同步
从服务器: 又名salve服务器,是作为master服务器的冗余备份,让master故障后,salve还能继续提供服务。
缓存服务器: 主要作用就是缓存DNS信息,提供服务给用户查询,并不能自定义域名配置进行解析。
然后再DNS服务器上进行查询的时候,分为两种查询模式,递归查询和循环查询:
递归查询 :就时去去到一个dns服务器查询到结果后,就将结果返回给查询者,查询者再去查询别的DNS服务器,这样一次一次的进行查询返回,直到找到数据。
循环查询: 循环查询就是查询者像一个DNS服务器发起查询后,由这个DNS服务器去查询别的服务器A,A又去查询别的服务器B,直到找到结果,然后返回B,B返回给A,A 再返回给查询者。
一般情况下,是我们个人主机,向我们网络配置中配置的DNS服务器进行查询,使用循环查询,由指定的DNS服务器代替我们用递归查询去网络上查询得到结果。然后返回给个人用户主机。 这就是DNS服务器的工作原理。
而现在我们就是要搭建自己DNS服务器,让公司内所有员工的DNS服务器地址都指向到这台服务器上。通过这个本地的DNS服务器来进行解析,代替常用的DNS服务器,如果各大运行商的,114的,阿里云的等等。
这样做就可以自定义自己内部的域名,通过域名来访问内网的服务器,像公司内网的论坛,内网的网站等等,都可以直接输入网址进行访问。
yum install bind bind-utils bind-chroot -y (bind-utils和bind-chroot dns的常用工具,不下也可以,不影响服务)
配置文件:
/etc/named.conf主配置文件
/etc/named/zone文件
如过你安装了bind-chroot,则bind-chroot会将bind服务放置于一个伪根目录下,这样如何黑客攻破了你的服务器,进到来的就是在伪根目录下,不会危害到你真正的根目录,是一个安全的措施。
伪根目录:
/var/named/chroot/etc/named.conf 红色就是伪根目录。
这个就是bind-chroot生成的伪根目录。在这个目录下,会生产完整的bind服务的结构,进到这个目录下,会发现里面基本没有文件,只有目录文件夹,这就需要你将真实的根目录下的bind的配置文件和一些需要的文件都复制一份到这个伪根下,或创建一些基础文件,给与权限啊等操作:
$ cp -R /usr/share/doc/bind-9.9.4/sample/var/named/* /var/named/chroot/var/named/
$ touch /var/named/chroot/var/named/data/cache_dump.db
$ touch /var/named/chroot/var/named/data/named_stats.txt
$ touch /var/named/chroot/var/named/data/named_mem_stats.txt
$ touch /var/named/chroot/var/named/data/named.run
$ mkdir /var/named/chroot/var/named/dynamic
$ touch /var/named/chroot/var/named/dynamic/managed-keys.bind
$ chmod -R 777 /var/named/chroot/var/named/data
$ chmod -R 777 /var/named/chroot/var/named/dynamic
$ cp -R /etc/named* /var/named/chroot/etc/
$ chown -R root.named /var/named/chroot/ ##直接将伪根目录下的所有文件都给named用户,让其能够修改。避免权限问题报错。
注意:如果不使用 bind-chroot 的话,就不需要上面的操作!!!
Dns服务器所用命令:
14 systemctl stop firewalld
15 setenforce 0
17 yum -y install bind*
18 Ifconfig
20 ping 192.168.136.134
22 vi /etc/selinux/config
23 vim /etc/named.conf
24 cat /etc/named.conf
26 cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bak
27 vim /etc/named.rfc1912.zones
28 cat /etc/named.rfc1912.zones
29 cp -p /var/named/named.localhost /var/named/zjs.zone
30 vim /var/named/zjs.zone
31 cat /var/named/zjs.zone
32 cp -p /var/named/named.empty /var/named/zjs.fan
33 vim /var/named/zjs.fan
37 cat /var/named/zjs.fan
39 named-checkconf -z /etc/named.conf
40 systemctl start named
42 named -checkzone
客户机所用命令:
6 vi /etc/selinux/config
7 systemctl stop firewalld
8 setenforce 0
ifconfig
9 ping 192.168.136.133
10 vim /etc/sysconfig/network-scripts/ifcfg-ens33
11 cat /etc/sysconfig/network-scripts/ifcfg-ens33
13 service network restart
14 cat /etc/resolv.conf
15 ifcofig
18 nslookup
一 DNS服务器操作:
1安装bind时网络适配器在NAT模式下——成功。
2查看IP地址
我的dns是192.168.136.133
客户端是192.168.136.134
3修改保护文件vi /etc/selinux/config
把中间的SELINUX=忘了
改为SELINUX=disabled
4 关闭防火墙
systemctl stop firewalld
setenforce 0
5安装bind
yum -y install bind*
(网络适配器先在NAT模式下,装好后再改到仅主机模式下)
6修改主配置文件vim /etc/named.conf
只需要改两个地方
7修改 区域配置文件
8修改 正向解析文件 和 反向解析文件。
9. 全部配置文件编写完成后可以使用以下命令对所有DNS相关的配置文件进行检查,如有语法错误的地方,会依次指出。
10. 开启服务systemctl start named
客户机操作:
1.先修改保护文件
vi /etc/selinux/config
2.关闭防火墙
systemctl stop firewalld
setenforce 0
3.查看本机IP
Ifconfig
4.看一下客户机和dns服务器能不能ping通
ping 192.168.136.133
5修改网卡文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33
cat /etc/sysconfig/network-scripts/ifcfg-ens33
6重启网卡
service network restart
7查看
cat /etc/resolv.conf
8用 nslookup进行验证
我做了3遍但是都是正向解析成功,反向失败,搜了很多也和同学讨论但是都未能解决。
第一遍:
第二遍: