最近想整个DNS服务器玩玩,让解析网站稍微快一点,之前搞的Windows Server,但是感觉这个太重量级了,简单是简单但是占用的资源比较大,而且服务器一般都是Linux系统,这回我就想在CentOS上整一把,虽然CSDN上类似的文章很多,但是很多文章要么就是太旧了,要么就是搞得太复杂,我决定再重写一篇,尽量言简意赅。

主要参考:https://www.linuxidc.com/Linux/2019-03/157277.htm

1、安装DNS服务器——Bind(Berkeley Internet Name Domain)

在root权限下输入:

yum -y install bind

2、进入/etc下,找到named.conf并编辑(如果没有vim请自行安装)

vim /etc/named.conf

需要修改:(左边是修改好的,右边是原来的,作用是让这个DNS服务器让所有电脑都能使用访问)

个人centos云服务器部署DNS centos的dns配置_DNS

 完整配置如下:

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html

options {
	listen-on port 53 { any; };
	listen-on-v6 port 53 { any; };
	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; };

	/* 
	 - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
	 - If you are building a RECURSIVE (caching) DNS server, you need to enable 
	   recursion. 
	 - If your recursive DNS server has a public IP address, you MUST enable access 
	   control to limit queries to your legitimate users. Failing to do so will
	   cause your server to become part of large scale DNS amplification 
	   attacks. Implementing BCP38 within your network would greatly
	   reduce such attack surface 
	*/
	recursion yes;

	dnssec-enable yes;
	dnssec-validation yes;

	/* Path to ISC DLV key */
	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";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

3、定下自己的域名,以及需要绑定的IP

我需要绑定的IP:192.168.0.211,这里面是一个Nginx服务器,后面用${ip}代替

个人centos云服务器部署DNS centos的dns配置_Centos_02

 需要绑定的域名是:dctant.com,后面用${domain}来代替。

4、创建.zone文件

创建一个名为named.${domain}.com.zone这个文件,我这边叫named.dctant.com.zone,具体为什么要这么命名,我也是参考网上的,算一个命名规范吧,事实上随便怎么命名都行,但是最好按规范来。

填入以下内容:

$TTL 1D
@       IN SOA  ${domain}. admin.${domain} (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@       IN      NS      ns1.${domain}.
ns1     IN      A       ${ip}
www     IN      A       ${ip}

这里各个参数的具体含义请看我文章起始处的参考链接,里面有说明,这里由于篇幅所限就不介绍了。

注意:这里的${domain}和${ip}替换为自己的域名和IP,建议使用编辑器全局替换,而不是自己一个个改!!

5、上传这个文件到/etc目录下

将这个文件上传到/etc目录下

 

个人centos云服务器部署DNS centos的dns配置_Centos_03

 6、编辑/etc/named.rfc1912.zones这个文件

在结尾添加一段

zone "${domain}" IN {
        type master;
        file "/etc/named.${domain}.zone";
        allow-update { none; };
};

这样你刚才创建的named.${domain}.com.zone这个文件就和DNS服务器的配置文件关联上了。

还是这句话,记得替换${domain}和${ip}为自己的域名和IP!

完整的/etc/named.rfc1912.zones文件如下:

// named.rfc1912.zones:
//
// Provided by Red Hat caching-nameserver package 
//
// ISC BIND named zone configuration for zones recommended by
// RFC 1912 section 4.1 : localhost TLDs and address zones
// and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt
// (c)2007 R W Franks
// 
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

zone "localhost.localdomain" IN {
	type master;
	file "named.localhost";
	allow-update { none; };
};

zone "localhost" IN {
	type master;
	file "named.localhost";
	allow-update { none; };
};

zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
	type master;
	file "named.loopback";
	allow-update { none; };
};

zone "1.0.0.127.in-addr.arpa" IN {
	type master;
	file "named.loopback";
	allow-update { none; };
};

zone "0.in-addr.arpa" IN {
	type master;
	file "named.empty";
	allow-update { none; };
};

zone "${domain}" IN {
        type master;
        file "/etc/named.${domain}.zone";
        allow-update { none; };
};

 7、启动DNS服务器

输入命令:

systemctl start named.service

查看DNS服务器运行状态:

systemctl status named.service

8、配置电脑使用该DNS服务器

我这个DNS服务器的IP地址是:192.168.0.201

个人centos云服务器部署DNS centos的dns配置_dns服务器_04

随便找个同一个局域网下的电脑,将它的网络适配器的IPV4的DNS改为:

个人centos云服务器部署DNS centos的dns配置_Centos_05

 然后保存即可。

9、测试DNS服务器效果

个人centos云服务器部署DNS centos的dns配置_Centos_06

 输入www.dctant.com,即可连接到192.168.0.211上的Nginx服务器了

10、如果要编辑DNS的配置文件

如果我想把192.168.0.211映射到abc.dctant.com,该怎么做呢?

只需要在named.dctant.com.zone最后加一行

abc     IN      A       192.168.0.211

即可。

个人centos云服务器部署DNS centos的dns配置_dns服务器_07

 然后重启DNS服务器:

systemctl restart named.service

 11、设置DNS服务开机自启

输入命令:

systemctl enable named.service

这样重启后DNS服务也会自动启动。

写在最后:我发现DNS服务完全不需要搞什么反向解析,照样可以完成DNS服务器的所有功能。