CentOS 7.0配置DNS服务
安装BIND软件包
在CentOS 7.0中,使用yum
命令来安装BIND(Berkeley Internet Name Domain)软件包及其相关工具,以root用户登录系统后,执行以下命令:
sudo yum install bind bindutils y
这将安装BIND主程序(bind
)以及一些实用工具(如nslookup
、dig
等),用于后续的配置和测试。
配置BIND主配置文件
BIND的主配置文件是/etc/named.conf
,使用文本编辑器(如vi
或nano
)打开该文件:
sudo vi /etc/named.conf
修改监听地址
找到options
部分,将listenon port 53
改为listenon port 53 { any; };
,使DNS服务器监听所有网络接口的53端口。
options { listenon port 53 { any; }; ... };
允许查询
将allowquery
改为allowquery { any; };
,允许任何客户端进行DNS查询。
options { ... allowquery { any; }; ... };
其他可选设置
- 转发器(Forwarders):如果需要将无法解析的请求转发给上游DNS服务器,可以添加
forwarders
指令,使用Google的公共DNS服务器:options { ... forwarders { 8.8.8.8; 8.8.4.4; }; ... };
- 递归查询:确保
recursion
设置为yes
,允许递归查询。options { ... recursion yes; ... };
配置正向解析区域
正向解析区域用于将域名解析为IP地址,需要在主配置文件中定义一个区域,然后创建一个区域文件来存储具体的记录。
定义正向解析区域
编辑/etc/named.rfc1912.zones
文件,添加以下内容(以example.com
为例):
zone "example.com" IN { type master; file "/var/named/zone.example.com"; allowupdate { none; }; };
创建区域文件
根据上一步定义的文件路径,创建并编辑/var/named/zone.example.com
文件:
sudo vi /var/named/zone.example.com
$TTL 86400 @ IN SOA ns1.example.com. root.example.com. ( 2025072201 ; Serial 3600 ; Refresh 1800 ; Retry 604800 ; Expire 86400 ; Minimum TTL ) @ IN NS ns1.example.com. ns1 IN A yourdnsserverip www IN A yourwebserverip
- $TTL:Time to Live,记录的存活时间。
- SOA记录:起始授权机构记录,包含区域的版本号(Serial)、刷新时间(Refresh)、重试时间(Retry)、过期时间(Expire)和最小TTL。
- NS记录:命名服务器记录,指定区域的权威DNS服务器。
- A记录:将主机名映射为IPv4地址。
配置反向解析区域(可选)
反向解析区域用于将IP地址解析为域名,如果需要反向解析,可以按照以下步骤操作。
定义反向解析区域
在/etc/named.rfc1912.zones
文件中添加以下内容(以168.0
为例):
zone "0.168.192.inaddr.arpa" { type master; file "/var/named/zone.192.168.0"; allowupdate { none; }; };
创建区域文件
创建并编辑/var/named/zone.192.168.0
文件:
sudo vi /var/named/zone.192.168.0
$TTL 86400 @ IN SOA ns1.example.com. root.example.com. ( 2025072201 ; Serial 3600 ; Refresh 1800 ; Retry 604800 ; Expire 86400 ; Minimum TTL ) @ IN NS ns1.example.com. yourreverseip IN PTR ns1.example.com.
- PTR记录:将IP地址映射为域名。
启动和配置自动启动BIND服务
完成配置后,启动BIND服务并设置为开机自启:
sudo systemctl start named sudo systemctl enable named
检查服务状态
使用以下命令检查服务是否正常运行:
sudo systemctl status named
如果显示active (running)
,则表示服务已成功启动。
防火墙配置
如果系统启用了防火墙,需要允许DNS流量通过,执行以下命令:
sudo firewallcmd permanent addservice=dns sudo firewallcmd reload
这将开放UDP和TCP的53端口。
测试DNS配置
使用nslookup
或dig
命令测试DNS解析是否正常,测试www.example.com
的解析:
nslookup www.example.com
如果配置正确,应该返回www.example.com
对应的IP地址。
常见问题与解答
如何更改DNS服务器的监听地址?
在/etc/named.conf
文件中,找到listenon port 53
指令,并将其修改为listenon port 53 { any; };
,使DNS服务器监听所有网络接口,如果需要限制监听地址,可以将any
替换为具体的IP地址或接口名称(如0.0.1
或eth0
)。
如何设置DNS转发?
在/etc/named.conf
文件的options
部分,添加forwarders
指令,指定上游DNS服务器的IP地址。
options { ... forwarders { 8.8.8.8; 8.8.4.4; }; ... };
这将使本地DNS服务器无法解析的请求转发到指定的上游DNS服务器