CentOS安装DNS服务详细指南
一、DNS简介
1、定义:DNS(Domain Name System,域名系统)是一个分布式数据库系统,用于将人类可读的域名(如www.baidu.com)解析为计算机可理解的IP地址(如192.168.1.1),这种解析过程被称为域名解析。

2、作用:DNS的主要功能是将用户友好的域名转换为IP地址,从而使得用户能够访问互联网资源而无需记住复杂的数字地址,DNS还支持反向解析,即将IP地址解析为域名。
3、组件:
DNS服务器:存储并管理域名和IP地址之间的映射关系。
BIND:一个广泛使用的开源DNS服务器软件,由互联网系统联盟(Internet Systems Consortium,ISC)开发和维护。
named:BIND的主要守护进程,负责处理DNS查询请求。
4、工作原理:当用户输入一个域名时,操作系统会向本地DNS服务器发出请求,如果本地DNS服务器没有缓存该域名的IP地址,它会代表客户端向其他DNS服务器递归查询,直到获得结果并将结果返回给客户端。

二、实验环境
组件 | 内存 | 硬盘 | 网络模式 | IP地址 |
DNS服务端 | 2GB | 80GB | NAT | 192.168.180.132 |
DNS客户端 | 2GB | 40GB | NAT | 192.168.180.135 |
三、安装前准备
1. 关闭防火墙和SELinux
在安装BIND之前,建议先关闭防火墙和SELinux,以避免它们干扰DNS服务的正常运行。
- 临时关闭防火墙
- systemctl stop firewalld
- 永久关闭防火墙
- systemctl disable firewalld
- 临时关闭SELinux
- setenforce 0
- 永久关闭SELinux
- vi /etc/selinux/config
- 将 SELINUX=enforcing 改为 SELINUX=disabled
2. 更新系统
确保系统软件包是最新的,以减少潜在的兼容性问题。
- yum update y
四、安装DNS服务
1. 安装BIND软件包
使用YUM包管理器安装BIND和BINDutils。

- yum install y bind bindutils
2. 修改BIND主配置文件/etc/named.conf
编辑/etc/named.conf
文件,进行以下修改:
- vi /etc/named.conf
添加或修改以下内容:
- options {
- listenon port 53 { any; };
- allowquery { any; };
- directory "/var/named";
- dumpfile "/var/named/data/cache_dump.db";
- statisticsfile "/var/named/data/named_stats.txt";
- memstatisticsfile "/var/named/data/named_mem_stats.txt";
- recursingfile "/var/named/data/named.recursing";
- allowrecursion { any; };
- dnssecenable yes;
- dnssecvalidation yes;
- managedkeysdirectory "/var/named/dynamic";
- pidfile "/run/named/named.pid";
- sessionkeyfile "/run/named/session.key";
- };
3. 配置正向解析区域文件
编辑/etc/named.rfc1912.zones
文件,添加正向解析区域,假设我们要添加的域名为kaisa.com
。
- vi /etc/named.rfc1912.zones
添加以下内容:
- zone "kaisa.com" IN {
- type master;
- file "kaisa.com.zone";
- allowupdate { none; };
- };
4. 创建区域文件
在/var/named
目录下创建一个新的区域文件kaisa.com.zone
,并复制模板文件named.localhost
的内容进行修改。
- cd /var/named
- cp p named.localhost kaisa.com.zone
- vi kaisa.com.zone
修改后的内容如下:
- $TTL 86400
- @ IN SOA dns.kaisa.com. root.kaisa.com. (
- 2023101001 ; Serial
- 7200 ; Refresh
- 120 ; Retry
- 604800 ; Expire
- 86400 ) TTL ) ; Minimum TTL
- )
- IN NS dns.kaisa.com.
- dns IN A 192.168.180.132
- www IN A 192.168.180.132
- ftp IN A 192.168.180.132
5. 配置反向解析区域文件
编辑/etc/named.rfc1912.zones
文件,添加反向解析区域,假设我们的网段是192.168.180.inaddr.arpa
。
- vi /etc/named.rfc1912.zones
添加以下内容:
- zone "180.168.192.inaddr.arpa" IN {
- type master;
- file "hzl.com.zone";
- allowupdate { none; };
- };
6. 创建反向解析区域文件
在/var/named
目录下创建一个新的区域文件hzl.com.zone
,并复制模板文件named.loopback
的内容进行修改,注意,这里的文件名需要与named.rfc1912.zones
中的配置一致。
- cd /var/named
- cp p named.loopback hzl.com.zone
- vi hzl.com.zone
修改后的内容如下:
- $TTL 86400
- @ IN SOA dns.hzl.com. root.hzl.com. (
- 2023101001 ; Serial
- 7200 ; Refresh
- 120 ; Retry
- 604800 ; Expire
- 86400 ) TTL = ; Minimum TTL
- )
- IN NS dns.hzl.com.
- 132 IN PTR dns.kaisa.com.
- 133 IN PTR www.kaisa.com.
- 134 IN PTR ftp.kaisa.com.
五、启动和测试DNS服务
1. 重启网络服务和BIND服务
- systemctl restart network
- systemctl restart named
2. 测试DNS解析
在客户端机器上,编辑/etc/resolv.conf
文件,添加DNS服务器的IP地址。
- vi /etc/resolv.conf
添加以下内容:
- nameserver 192.168.180.132
然后重启网络服务。
- systemctl restart network
使用nslookup
命令测试DNS解析。
- nslookup www.kaisa.com
如果一切正常,你应该看到类似以下的输出:
- Server: 192.168.180.132
- Address: 192.168.180.132#53
- Name: www.kaisa.com
- Address: 192.168.180.132
六、常见问题及解答(FAQs)
Q1:如何更改BIND监听的端口号?如何在BIND中添加额外的监听地址?
A1:要更改BIND监听的端口号,可以编辑/etc/named.conf
文件中的options
部分,将listenon port 53
修改为所需的端口号,要将端口号更改为5353,可以进行以下修改:
- options {
- listenon port 5353 { any; }; # 修改此处的端口号为5353
- ...
- };
还需要确保防火墙开放新的端口号,使用firewalld开放5353端口:
- firewallcmd permanent addport=5353/udp
- firewallcmd reload
要在BIND中添加额外的监听地址,可以在listenon
指令中指定多个地址或地址范围,要添加监听地址192.168.2.1
和192.168.3.1
,可以进行以下修改:
- options {
- listenon port 53 { 192.168.2.1; 192.168.3.1; any; }; # 添加额外的监听地址
- ...
- };
完成配置后,重新启动BIND服务使更改生效:
- systemctl restart named