一、安装 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/
目录下,查看是否有相关的错误信息,以便进一步排查问题。