CentOS下简单的DNS配置

Posted 林之森火

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS下简单的DNS配置相关的知识,希望对你有一定的参考价值。

一.本文环境

  1.三台虚拟机。一台DNS服务器,一台web服务器,一台客户端

  2.DNS服务器软件:bind,powerdns,unbound,本文使用bind

  3.BIND相关程序包:yum list all bind*

    bind:服务器

    bind-libs:相关库

    bind-utils:客户端

   bind 程序名 named

二.DNS结构及介绍

  1.DNS介绍

  目前在网络中的设备之间进行通信,是利用和依赖于IP地址实现的。但IP地址是难以记忆。于是一种有文字类型的记录方式由此而来,但是文字记录的方式可以利于人类记忆,可是计算机并不是理解这样的名称,于是我们可以利用一种名字解析服务将名称解析成IP地址,进行网络中的通讯,这种解析的方式之一就是DNS解析.(早期有其他方式的解析,目前大多都是DNS解析)

  DNS(domain name system)是应用层协议,它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网. C/S,53/udp, 53/tcp BIND:BekerleyInternat Name Domain,由ISC (www.isc.org)提供的DNS软件实现.

 

  2.DNS,域名结构

  DNS域名是一个分布式工作方式,并且这个系统是倒状,以根域,顶级域,二级域,主机来组成。

  

 

 

 三,实现操作

  1.配置DNS服务器

    yum install -y bind   安装dns服务软件

    有两个文件配置DNS /etc/named.conf  /var/named/

    其中/etc/named.conf 定义了区域,对应的端口信息,配置文件路径等信息

1 listen-on port 53 { 127.0.0.1; };  #若为服务器将监听的IP改为localhost
2         listen-on-v6 port 53 { ::1; };
3         directory       "/var/named";
4         dump-file       "/var/named/data/cache_dump.db";
5         statistics-file "/var/named/data/named_stats.txt";
6         memstatistics-file "/var/named/data/named_mem_stats.txt";
7         secroots-file   "/var/named/data/named.secroots";
8         recursing-file  "/var/named/data/named.recursing";
9         allow-query     { localhost; };  #作为DNS服务器的话注释掉此行或者改为any

     /var/named/是bind的资源记录目录,其中根域也在其中

 1 ;; ADDITIONAL SECTION:
 2 a.root-servers.net.    518400    IN    A    198.41.0.4
 3 b.root-servers.net.    518400    IN    A    199.9.14.201
 4 c.root-servers.net.    518400    IN    A    192.33.4.12
 5 d.root-servers.net.    518400    IN    A    199.7.91.13
 6 e.root-servers.net.    518400    IN    A    192.203.230.10
 7 f.root-servers.net.    518400    IN    A    192.5.5.241
 8 g.root-servers.net.    518400    IN    A    192.112.36.4
 9 h.root-servers.net.    518400    IN    A    198.97.190.53
10 i.root-servers.net.    518400    IN    A    192.36.148.17
11 j.root-servers.net.    518400    IN    A    192.58.128.30
12 k.root-servers.net.    518400    IN    A    193.0.14.129
13 l.root-servers.net.    518400    IN    A    199.7.83.42
14 m.root-servers.net.    518400    IN    A    202.12.27.33

   在/var/named/目录中可以增加自己定义的资源记录

    在DNS解析中有七种资源记录,A,SOA,NS,MX,AAAA,PTR,CNAME,一般常用A,SOA,MX,NS,SNAME,AAAA是ipv6解析,PTR反向解析,与A记录相反。

 

 

资源解析记录的语法格式

name              [TTL]                 IN                   RR_TYPE                   VALUE

(1) TTL可从全局继承
(2) @可用于引用当前区域的名字 (当前域是需要在另一个配置文件中定义,所有@是一个变量,而在记录中的邮箱便不能写@符号,要以.替代)
(3) 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应
(4) 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机

现在来写自己的资源记录。

 1 [root@CentOS-8 named]# cat baidu.com.dns 
 2 $TTL 1D
 3 @   IN SOA master.baidu.com. admin-mail.baidu.com. (
 4             201911141803 ;序列号,不可过长否则服务无法启动 我这写的太长了 等会 会报错的。
 5             1D           ;与从DNS服务的同步时间
 6             1H           ;重试时间
 7             3D           ;过期时间
 8             1D              ;否定时间
 9 )
10 @   IN A ns.baidu.com.;对NS记录而言,任何一个ns记录后面的服务器名字,应该需要一个对应的A记录解析
11 master   IN A 192.168.39.8
12 ns       IN A 192.168.39.8
13 www      IN A 192.168.39.6

资源记录写完之后还需要写配置文件,不然配置的资源文件怎么使用?

配置文件/etc/named.conf ,这里各文件中的配置文件,但是应写在/etc/named.rfc1912.zones  文件中 这个里面都有官方写好的模板,改改就好

1 zone "baidu.com" IN {
2         type master;
3         file "baidu.com.dns";
4         allow-update { none; };
5 };

使用命令检查

1 [root@CentOS-8 ~]# named-checkconf #检查配置文件语法
2 [root@CentOS-8 ~]# named-checkzone "baidu.com" /var/named/baidu.com.dns  #检查解析库的语法
3 dns_rdata_fromtext: /var/named/baidu.com.dns:2: near \'201911141803\': out of range  #  序列号过长
4 dns_rdata_fromtext: /var/named/baidu.com.dns:9: near \'ns.baidu.com.\': bad dotted quad   #这里写错了  应该是NS记录写成了A记录
5 zone baidu.com/IN: loading from master file /var/named/baidu.com.dns failed: out of range
6 zone baidu.com/IN: not loaded due to errors.
7 [root@CentOS-8 ~]# 

更改完了检查如下

1 [root@CentOS-8 ~]# named-checkzone "baidu.com" /var/named/baidu.com.dns
2 zone baidu.com/IN: loaded serial 2911141803
3 OK
4 [root@CentOS-8 ~]# 

到这里我们的服务器已经配置好了。

四,配置一个页面,一个DNS客户端

配置页面

[root@CentOS-6 ~]$service httpd start
Starting httpd: httpd: Could not reliably determine the server\'s fully qualified domain name, using 127.0.0.1 for ServerName
                                                           [  OK  ]
[root@CentOS-6 ~]$echo "<h1>www.google.com</h1>" > /var/www/html/index.html
[root@CentOS-6 ~]$

配置DNS客户

[root@centos7-lvm ~]# vim /etc/resolv.conf
[root@centos7-lvm ~]# 
1 # Generated by NetworkManager
2 search localdomain
3 nameserver 192.168.39.8
4 ~                             

 

在DNS服务器上启动DNS

客户端结果如下:

 

 1 [root@centos7-lvm ~]# dig www.baidu.com
 2 
 3 ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-9.P2.el7 <<>> www.baidu.com
 4 ;; global options: +cmd
 5 ;; Got answer:
 6 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47635
 7 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
 8 
 9 ;; OPT PSEUDOSECTION:
10 ; EDNS: version: 0, flags:; udp: 4096
11 ;; QUESTION SECTION:
12 ;www.baidu.com.            IN    A
13 
14 ;; ANSWER SECTION:
15 www.baidu.com.        86400    IN    A    192.168.39.6
16 
17 ;; AUTHORITY SECTION:
18 baidu.com.        86400    IN    NS    ns.baidu.com.
19 
20 ;; ADDITIONAL SECTION:
21 ns.baidu.com.        86400    IN    A    192.168.39.8
22 
23 ;; Query time: 0 msec
24 ;; SERVER: 192.168.39.8#53(192.168.39.8)
25 ;; WHEN: Thu Nov 14 19:12:07 CST 2019
26 ;; MSG SIZE  rcvd: 91

五。总结

其实在DNS客户端的资源记录文件的权限应该与其他文件相同,我这里没有改

 1 [root@CentOS-8 named]# ll
 2 total 20
 3 -rw-r--r-- 1 root  root   475 Nov 14 05:03 baidu.com.dns
 4 drwxrwx--- 2 named named   23 Nov 14 05:12 data
 5 drwxrwx--- 2 named named   60 Nov 14 05:12 dynamic
 6 -rw-r----- 1 root  named 2253 Apr  5  2018 named.ca
 7 -rw-r----- 1 root  named  152 Dec 15  2009 named.empty
 8 -rw-r----- 1 root  named  152 Jun 21  2007 named.localhost
 9 -rw-r----- 1 root  named  168 Dec 15  2009 named.loopback
10 drwxrwx--- 2 named named    6 Jul 25 11:39 slaves
11 [root@CentOS-8 named]# 

SOA记录必须定义要在前面先定义

 

以上是关于CentOS下简单的DNS配置的主要内容,如果未能解决你的问题,请参考以下文章

centOS8下配置dns

CentOS7.0下智能DNS服务配置

Centos7 下配置主从dns(bind)

Centos6.5下配置DNS服务器

CentOS7 搭建 DNS 域名解析服务器

CentOS7.4下DNS服务器软件BIND安装及相关的配置