一、安装 BIND 软件包
在 CentOS 6.5 中,使用以下命令安装 BIND 软件包:
sudo yum install bind bindutils y
bind 是 DNS 服务器软件,bindutils 包含了一些常用的 DNS 工具,如nslookup、dig 等,用于测试和诊断 DNS 问题。
二、配置主配置文件 named.conf
1、备份原始配置文件
sudo cp /etc/named.conf /etc/named.conf.bak
这是为了防止在配置过程中出现问题可以恢复到原始状态。
2、编辑 named.conf
使用文本编辑器(如vi 或nano)打开/etc/named.conf 文件。
设置监听地址:找到listenon 选项,将其修改为监听所有 IP 地址(如果有多个网络接口),或者指定特定的 IP 地址,要监听所有接口,可设置为:
listenon port 53 { any; };
允许查询的客户端:找到allowquery 选项,根据需要设置允许进行 DNS 查询的客户端 IP 地址或网络范围,允许任何客户端查询:
allowquery { any; };
如果只想允许特定网络的客户端查询,可以设置为相应的网络地址,如:
allowquery { 192.168.1.0/24; };
设置转发器(可选):如果需要将无法解析的域名请求转发到其他 DNS 服务器,可以配置forwarders 选项,将请求转发到 Google 的公共 DNS 服务器:
forwarders { 8.8.8.8; 8.8.4.4; };
三、创建正向和反向解析区域文件
1、创建正向解析区域文件
在/var/named/ 目录下创建一个正向解析区域文件,例如命名为example.com.zone(这里以 example.com 为例,你可以根据实际情况替换为自己的域名)。
使用文本编辑器打开该文件,并输入以下内容:
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2024042101 ;序列号,每次修改后递增
3600 ;刷新时间
1800 ;重试时间
1200 ;过期时间
86400 ) ;最小 TTL
; 定义名称服务器
NS ns1.example.com.
NS ns2.example.com.
; 定义 A 记录
ns1 IN A 192.168.1.1
ns2 IN A 192.168.1.2
; 定义域名到 IP 的映射
@ IN A 192.168.1.100
www IN A 192.168.1.100
这里定义了一个名为 example.com 的域名,指定了两台名称服务器 ns1 和 ns2,以及域名对应的 IP 地址,你可以根据实际需求添加更多的 A 记录或其他类型的记录。
2、创建反向解析区域文件
同样在/var/named/ 目录下创建一个反向解析区域文件,例如命名为1.168.192.inaddr.arpa.zone(与正向解析中的网络相对应)。
打开该文件并输入以下内容:
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2024042101 ;序列号,每次修改后递增
3600 ;刷新时间
1800 ;重试时间
1200 ;过期时间
86400 ) ;最小 TTL
; 定义名称服务器
NS ns1.example.com.
NS ns2.example.com.
; 定义 PTR 记录
100 IN PTR www.example.com.
1 IN PTR ns1.example.com.
2 IN PTR ns2.example.com.
反向解析区域文件用于将 IP 地址解析为域名,这里定义了与正向解析中相同的名称服务器,并为特定的 IP 地址设置了 PTR 记录,以便进行反向解析。
四、配置 named.conf 文件引用区域文件
1、编辑 named.conf

再次打开/etc/named.conf 文件,在文件中添加以下内容以引用刚才创建的正向和反向解析区域文件:
zone "example.com" {
type master;
file "/var/named/example.com.zone";
};
zone "1.168.192.inaddr.arpa" {
type master;
file "/var/named/1.168.192.inaddr.arpa.zone";
};
这里的type master 表示这是一个主 DNS 服务器,负责管理该区域的数据。file 选项指定了区域文件的路径。
五、设置防火墙和 SELinux(如果需要)
1、关闭 SELinux(可选)
如果你不想启用 SELinux 对 DNS 服务的限制,可以使用以下命令将 SELinux 设置为宽松模式:
sudo setenforce 0
若要永久关闭 SELinux,可以编辑/etc/selinux/config 文件,将SELINUX=enforcing 改为SELINUX=disabled,但请注意,关闭 SELinux 可能会降低系统的安全性,建议在生产环境中谨慎操作。
2、配置防火墙
使用以下命令开放 DNS 服务所需的端口(53 端口):
sudo iptables A INPUT p udp dport 53 j ACCEPT sudo iptables A INPUT p tcp dport 53 j ACCEPT
这将允许外部网络访问本机的 DNS 服务,如果你的服务器在防火墙后面,还需要在防火墙设备上进行相应的配置,以允许从外部网络访问该服务器的 53 端口。
六、启动和检查 named 服务
1、启动 named 服务
使用以下命令启动 named 服务:
sudo service named start
如果服务启动成功,将不会出现错误提示。
2、检查 named 服务状态
使用以下命令检查 named 服务的运行状态:

sudo service named status
正常情况下,服务应该处于正在运行状态,如果服务未启动或出现错误,可以根据错误提示进行排查和修复。
3、检查配置文件语法
在启动服务之前或在修改配置文件后,可以使用以下命令检查 named 配置文件的语法是否正确:
sudo namedcheckconf /etc/named.conf
如果语法正确,将不会返回任何错误信息,如果存在语法错误,会显示相应的错误提示,你需要根据提示修改配置文件。
七、客户端配置
1、配置测试机的 DNS
在客户端计算机上,打开/etc/resolv.conf 文件(对于 Windows 系统,可以通过网络连接属性中的 TCP/IP 设置来配置 DNS),添加以下一行指向你的 DNS 服务器的 IP 地址:
nameserver 192.168.1.100
这里的192.168.1.100 是你在正向解析区域文件中为域名设置的 IP 地址,即你的 DNS 服务器的 IP。
八、测试 DNS 服务
1、使用 ping 命令测试
在客户端计算机上,打开终端或命令提示符,输入以下命令测试域名是否可以正确解析为 IP 地址:
ping www.example.com
如果配置正确,应该能够收到来自192.168.1.100 的响应。
2、使用 nslookup 命令测试
还可以使用nslookup 命令进行更详细的测试,输入以下命令:
nslookup www.example.com
该命令将显示域名解析的详细信息,包括域名对应的 IP 地址、名称服务器等信息,如果一切正常,你应该能够看到正确的解析结果。
以下是两个相关问题及解答:

问题一:如何增加新的域名记录?
解答:要增加新的域名记录,需要编辑相应的正向或反向解析区域文件,如果要在example.com 域名下添加一个新的子域名mail 并指向一个特定的 IP 地址,可以按照以下步骤操作:
1、打开正向解析区域文件/var/named/example.com.zone。
2、在文件中添加以下行:
mail IN A [新的IP地址]
其中[新的IP地址] 替换为你要指向的实际 IP,保存文件后,重启 named 服务使更改生效:sudo service named restart。
问题二:为什么客户端无法解析域名?
解答:客户端无法解析域名可能有多种原因,以下是一些常见的排查步骤:
1、检查客户端的 DNS 配置:确保客户端的/etc/resolv.conf(或 Windows 系统的 DNS 设置)中正确地配置了 DNS 服务器的 IP 地址。
2、检查 DNS 服务器的状态:在服务器端使用sudo service named status 命令检查 named 服务是否正在运行,如果服务未运行,使用sudo service named start 启动它。
3、检查防火墙设置:确保服务器所在的防火墙允许外部网络访问 53 端口(UDP 和 TCP),可以使用sudo iptables L 命令查看防火墙规则。
4、检查配置文件语法:在服务器端使用sudo namedcheckconf /etc/named.conf 命令检查 named 配置文件的语法是否正确,如果存在语法错误,会根据提示进行修复。
5、查看日志文件:检查 DNS 服务器的日志文件,通常位于/var/log/messages 或/var/log/named/ 目录下,查看是否有相关的错误信息,以便进一步排查问题。
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/193142.html