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配置的主要内容,如果未能解决你的问题,请参考以下文章