今天继续给大家介绍Linux基础知识,本文主要内容是DNS的实战配置。
如果采用YUM的安装方式,DNS设计到三个包,相关命令如下:
yum install -y bind bind-chroot bind-utils
bind是DNS的服务端软件,其中bind的英文全称是Berkeley Internet Name Domain,即伯克利因特网域名,bind-chroot是DNS的补充软件,主要实现了牢笼机制,所谓牢笼机制就是创建一个目录,作为DNS服务的根目录,以防止当DNS服务被攻击后波及系统安全,bind-utils是DNS的客户端软件,主要是包含了nslookup等命令。
对于DNS客户端而言,配置文件在/etc/目录下,并且以named开头,如下所示:
在上述文件中,/etc/named.conf是全局配置文件,/etc/named.rfc1912.conf是区域配置文件,我们在配置DNS服务端时最主要使用的就是这两个配置文件。
在DNS的全局配置文件/etc/named.conf中,options选项是全局配置参数,其中重要参数如下:
listen-on port:指定DNS要监听的IP地址和端口号,在配置时必须将原始配置文件中的127.0.0.1改为any或者指定网段的地址,否则DNS无法正常对外提供服务。
allow-query:指定允许访问的客户端网址,在配置时如同listen-on port参数一样,也是必须将127.0.0.1修改称为any或者别的网段的地址。
recursion:表示是否允许DNS服务器采用递归查询的方式,此选项默认是yes,表示支持递归查询的方式,但是如果配置时同时启用了加密功能,则递归配置不生效。
dnssec-enable、dnssec-validation:表示是否启用DNS加密。
bind-keyfile:表示DNS加密时使用的加密文件。
zone是区域配置参数,重要参数如下:
type:指定区域的类型,对于该区域有重要作用。type字段的值可以为以下5种:
①Master:表示为主DNS服务器,拥有区域数据文件,并向从DNS服务器进行文件备份。
②Slave:表示为从DNS服务器,从DNS服务器上本身没有区域数据文件,但是该服务器会从主DNS服务器上下载区域数据文件,也能够提供DNS服务。
③Stub:stub区域与Slave区域类似,两者之间的区别在于Stub只复制DNS服务器上的NS记录而不是复制所有区域数据。
④Forward:forward区域是转发区域,类似于一个DNS的缓存服务器,采用该配置的DNS区域会从外网其他DNS服务器复制数据并起到向导的作用。一个forward区域可以包含一个forward或者forwards语句,这些语句指定了查询的域。
⑤Hint:根域名服务器的初始化组指定使用的线索区域,当服务器启动时,还会使用跟线索查找根域名服务器,并找到最近的根服务器列表。
file:配置DNS服务器生成的各项记录数据文件名称
allow-update:当配置DNS主从架构时使用,在主服务器上配置允许进行同步的从服务器。
接下来,我们就来配置一个简单的DNS服务,实现本地的DNS服务器搭建。要实现DNS服务器的运行,首先要实现的就是主配置文件的编写,具体内容如下(注释内容略):
options {
listen-on port 53 {
any; };
listen-on-v6 port 53 {
::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query {
any; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
bindkeys-file "/etc/named.root.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
zone "pzz.com." IN {
type master;
file "pzz.com.zone";
};
zone "136.168.192.inaddr.arpa" IN {
type master;
file "192.168.136.arpa";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
之后,我们需要写正向解析文件和反向解析文件,关于这两个文件,文件名应该与主配置文件中的pzz.com.zone和192.168.136.arpa保持一致,并且在/var/named目录下。正向解析文件可以直接复制/var/named/named.localhost,反向解析文件可以直接复制/var/named/named.loopback。我们在复制时,可以使用cp -a命令,连带着文件属性一起复制,关于这两个文件,不管采用何种方式创建、授权,都必须要保证named用户有读的权限,否则DNS服务就会启动失败。
在本实验中,pzz.com.zone文件内容如下:
$TTL 1D
@ IN SOA ns.pzz.com. root.pzz.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.pzz.com.
ns.pzz.com. IN A 192.168.136.101
www.zzp.pzz.com. IN A 192.168.136.101
news.pzz.com. IN A 192.168.136.101
www.pzz.com. IN A 192.168.136.101
www.zzp.com. IN A 192.168.136.101
wwww.pzz.com. IN A 192.168.136.101
bbs.pzz.com. IN A 192.168.136.101
www1.pzz.com. CNAME www.pzz.com
abc IN A 192.168.136.101
在该配置文件第一行,TTL为外DNS服务器在本DNS服务器的查询结果的缓存时间,单位为秒。配置文件上半部分,为SOA记录,serial为修改次序,如果做DNS主从架构,则每次修改该号码加1,这样DNS从服务器就可以通过号码得知记录的新旧,从而决定自身是否要同步信息。refresh为DNS主从同步时的同步时间,retry表示DNS从服务器更新失败后的重试时间,expire为数据过期时间,即当超过该时间后,从DNS服务器会放弃与主DNS服务器的重试链接。minimum为最小的TTL值。前面的单位D表示天,H表示小时,W表示周。后面的大都是NS记录和A记录需要注意的是每个域名的后面必须以“.”结束。
192.168.136.arpa文件内容如下:
$TTL 1D
@ IN SOA pzz.com. root.pzz.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.pzz.com.
ns A 192.168.136.101
101 PTR www.pzz.com.
101 PTR bbs.pzz.com.
101 PTR qqq.pzz.com.
A 127.0.0.1
AAAA ::1
PTR localhost.
该配置文件的前半部分和正向配置文件类似,后版部分为PTR记录,配置文件中的101为简写,实际上指的是配置文件中A记录的网段,即192.168.136.101,我们也可以直接写这个IP地址。
上述配置文件写好后,我们启动DNS服务,相关命令如下所示:
systemctl start named
完成后发现系统监听53端口,如下所示:
接下来,我们选择一台主机(也可以是本机器),将其DNS服务器修改为192.168.136.101。修改方式有两种,一种是通过修改网卡配置文件,然后重启网卡,另一种是直接修改/etc/resolv.conf配置文件,将设备的DNS服务器指向本设备。之后,我们可以直接PING测试www.pzz.com等我们前面配置的域名,观察其解析后的IP地址,结果如下所示:
另外,我们也可以使用nslooup工具查询DNS的反向记录,查询结果如下:
由上述验证结果可知,我们的DNS服务器配置成功并且能够正常运行了。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200