BIND(Berkeley Internet Name Domain)是CentOS系统中最常用的DNS服务器软件,以下是从安装到验证的全流程配置步骤,覆盖正向解析(域名→IP)的核心场景:
通过yum包管理器安装BIND主程序、工具包及安全模块(bind-chroot用于增强安全性):
sudo yum install bind bind-utils bind-chroot -y
安装完成后,BIND服务会自动安装至/etc/named目录,核心配置文件为/etc/named.conf。
编辑/etc/named.conf,修改全局参数以允许DNS服务监听所有IP地址(any)并接受所有客户端的查询请求(any):
sudo vi /etc/named.conf
在options块中添加或修改以下内容:
options {
listen-on port 53 { any; }; # 监听所有IPv4地址的53端口
listen-on-v6 port 53 { any; }; # 监听所有IPv6地址的53端口(可选)
directory "/var/named"; # 区域文件的存储目录
allow-query { any; }; # 允许所有客户端查询
recursion yes; # 允许递归查询(客户端请求时,服务器会帮其查询其他DNS服务器)
};
注意:若需限制查询范围,可将allow-query改为具体网段(如{ 192.168.1.0/24; })。
在/etc/named.conf中定义正向解析区域(以example.com为例),指定区域名称、类型(master表示主服务器)及区域文件路径:
sudo vi /etc/named.conf
在文件末尾添加以下内容:
zone "example.com" IN {
type master; # 区域类型(主服务器)
file "/var/named/example.com.zone"; # 区域文件路径(需手动创建)
allow-update { none; }; # 禁止动态更新(防止未经授权的修改)
};
说明:区域文件路径需确保named用户有读写权限(后续创建文件时会调整)。
进入/var/named目录,复制模板文件named.localhost生成example.com.zone(模板文件包含基础结构,避免手动编写错误):
cd /var/named
sudo cp -a named.localhost example.com.zone
sudo chown named:named example.com.zone # 修改文件所属用户组为named(BIND服务运行用户)
sudo chmod 640 example.com.zone # 设置文件权限(named用户可读写,组用户可读)
编辑example.com.zone,添加DNS记录(以下为示例):
sudo vi example.com.zone
$TTL 86400 # 默认TTL(Time To Live,缓存时间,单位:秒)
@ IN SOA ns1.example.com. admin.example.com. ( # SOA记录(Start of Authority)
2025110101; # 序列号(每次修改区域文件需递增,如2025110102)
3600; # 刷新时间(辅助服务器向主服务器同步的间隔,单位:秒)
1800; # 重试时间(辅助服务器同步失败后的重试间隔,单位:秒)
604800; # 过期时间(辅助服务器在未收到同步时的有效时间,单位:秒)
86400; ) # 负缓存时间(客户端查询失败后的缓存时间,单位:秒)
@ IN NS ns1.example.com. # NS记录(Name Server,指定域名服务器)
@ IN A 192.168.1.100 # A记录(域名→IPv4地址)
ns1 IN A 192.168.1.100 # 域名服务器自身的A记录
www IN A 192.168.1.101 # www子域名的A记录
说明:
@表示当前区域(example.com);SOA记录中的admin.example.com.需替换为管理员邮箱(需将@替换为.);2025110101改为2025110102),否则辅助服务器不会同步。启动BIND服务并设置为开机自启:
sudo systemctl start named # 启动服务
sudo systemctl enable named # 开机自启
检查服务状态(确保无报错):
sudo systemctl status named
若状态显示active (running),则表示服务启动成功。
DNS服务使用UDP和TCP的53端口,需通过防火墙放行:
sudo firewall-cmd --permanent --add-service=dns # 永久放行DNS服务(包含53端口)
sudo firewall-cmd --reload # 重新加载防火墙规则
或手动指定端口:
sudo firewall-cmd --permanent --add-port=53/tcp # 放行TCP 53端口
sudo firewall-cmd --permanent --add-port=53/udp # 放行UDP 53端口
sudo firewall-cmd --reload # 重新加载防火墙规则
使用nslookup或dig命令测试域名解析结果(在CentOS服务器本地或客户端测试均可):
nslookup example.com 127.0.0.1 # 指定DNS服务器为本地(127.0.0.1)
dig @127.0.0.1 example.com A # 使用dig命令查询A记录
若输出结果中包含example.com对应的IP地址(如192.168.1.100),则表示DNS配置生效。
若需让其他设备通过该DNS服务器解析域名,需在客户端设备的/etc/resolv.conf文件中添加DNS服务器IP地址:
sudo vi /etc/resolv.conf
添加以下内容(将192.168.1.100替换为DNS服务器的实际IP):
nameserver 192.168.1.100
保存后,客户端即可通过该DNS服务器解析example.com域名。
注意事项:
/etc/named.conf中添加反向区域(如220.168.192.in-addr.arpa),并创建对应的反向区域文件(如named.220.168.192.zones);recursion no)并配置访问控制列表(allow-query限制为信任网段),提升DNS服务器安全性。