在开始配置前,请确保:
192.168.1.100)及Web服务器IP(如192.168.1.101)。BIND(Berkeley Internet Name Domain)是CentOS默认的DNS服务器软件,通过以下命令安装:
sudo yum install bind bind-utils -y
bind:DNS服务器主程序;bind-utils:包含nslookup、dig等DNS查询工具,用于后续测试。主配置文件/etc/named.conf定义了DNS服务器的全局参数和区域规则。使用文本编辑器打开:
sudo vi /etc/named.conf
修改以下关键参数:
options {
listen-on port 53 { any; }; # 监听所有IPv4地址的53端口
listen-on-v6 port 53 { none; }; # 不监听IPv6(可选)
directory "/var/named"; # 区域文件默认存储路径
allow-query { any; }; # 允许所有客户端查询(生产环境建议限制为内网IP)
recursion yes; # 允许递归查询(客户端请求未知记录时,服务器代为查询)
};
添加域名区域配置(以example.com为例):
zone "example.com" IN {
type master; # 区域类型:master(主服务器)
file "/var/named/example.com.zone"; # 区域数据文件路径
allow-update { none; }; # 禁止动态更新(防止未经授权的修改)
};
保存并退出(:wq)。
区域文件存储了域名的具体解析记录(如A记录、NS记录)。根据named.conf中的配置,创建/var/named/example.com.zone:
sudo vi /var/named/example.com.zone
添加以下内容(按需修改):
$TTL 86400 # 默认TTL(Time To Live),单位:秒(1天)
@ IN SOA ns1.example.com. admin.example.com. ( # SOA记录(Start of Authority)
2025092401 ; Serial # 序列号(每次修改区域文件需递增,如日期+序号)
3600 ; Refresh # 刷新时间(从服务器向主服务器同步记录的间隔)
1800 ; Retry # 重试时间(从服务器同步失败后的重试间隔)
604800 ; Expire # 过期时间(从服务器超过刷新时间未同步,则认为数据过期)
86400 ; Minimum TTL # 最小TTL(缓存记录的最长时间)
)
@ IN NS ns1.example.com. # NS记录(Name Server,指定域名解析服务器)
ns1 IN A 192.168.1.100 # A记录(域名指向IPv4地址)
www IN A 192.168.1.101 # A记录(www子域名指向Web服务器IP)
mail IN A 192.168.1.102 # A记录(mail子域名指向邮件服务器IP,可选)
@:代表域名本身(example.com);Serial:每次修改区域文件后必须递增(如2025092402),否则从服务器不会同步更新;ns1.example.com.:域名解析服务器名称(需与NS记录一致,末尾.表示绝对域名,避免拼接错误)。配置完成后,启动BIND服务并设置开机自启动:
sudo systemctl start named # 启动named服务
sudo systemctl enable named # 设置开机自启动
检查服务状态(确保无报错):
sudo systemctl status named
若状态显示active (running),则表示服务启动成功。
CentOS默认使用firewalld作为防火墙,需允许DNS流量(UDP/TCP 53端口):
sudo firewall-cmd --permanent --add-service=dns # 永久添加DNS服务规则
sudo firewall-cmd --reload # 重新加载防火墙配置
验证规则是否生效:
sudo firewall-cmd --list-services
输出应包含dns。
在需要解析该域名的客户端设备上,修改网络配置文件(以以太网为例):
sudo vi /etc/resolv.conf
添加DNS服务器IP(本机IP):
nameserver 192.168.1.100
保存后,客户端将优先使用该DNS服务器解析域名。
使用nslookup或dig命令验证解析是否正确:
nslookup example.com 192.168.1.100 # 指定DNS服务器查询
dig @192.168.1.100 example.com A # 查询A记录
dig @192.168.1.100 www.example.com A # 查询www子域名A记录
若返回结果中Answer Section包含正确的IP地址(如192.168.1.101),则表示解析成功。
Serial字段(如2025092401→2025092402),否则从服务器无法同步更新;sudo setsebool -P named_writeable_zone_files 1
allow-query为内网IP(如192.168.1.0/24),避免暴露给公网;forwarders(转发器)指向公共DNS服务器(如8.8.8.8),提高外部域名解析效率;rndc(远程名称守护进程控制)工具管理BIND服务(如rndc reload example.com重新加载区域文件)。