Minimal Linux系统配置DNS服务(以CentOS/RHEL Minimal为例)
DNS服务是网络基础设施的核心组件,用于实现域名与IP地址的映射。以下是在Minimal版Linux系统(如CentOS/RHEL Minimal)上配置DNS服务的详细步骤,以BIND(Berkeley Internet Name Domain)软件为例,涵盖从安装到验证的全流程。
DNS服务器需要稳定的网络环境,因此需先将系统网络接口配置为静态IP(避免DHCP动态分配导致IP变动,影响DNS解析稳定性)。
编辑网络接口配置文件(路径因系统而异,常见为/etc/sysconfig/network-scripts/ifcfg-ens33,ens33为网卡名称,可通过ip addr命令查看):
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改以下内容(根据实际网络环境调整):
BOOTPROTO=static # 关闭DHCP,改为静态IP
ONBOOT=yes # 开机自动启用网卡
IPADDR=192.168.1.100 # 设置静态IP地址
NETMASK=255.255.255.0 # 子网掩码
GATEWAY=192.168.1.1 # 网关地址
DNS1=8.8.8.8 # 备用DNS(可选,用于自身解析外部域名)
DNS2=114.114.114.114 # 备用DNS(可选)
保存后重启网络服务使配置生效:
sudo systemctl restart network
通过系统包管理器安装BIND及相关工具(bind为核心服务,bind-utils提供nslookup、dig等解析工具):
sudo yum install -y bind bind-utils
安装完成后,检查BIND服务状态:
sudo systemctl status named
若服务未启动,可使用sudo systemctl start named启动。
BIND的主配置文件为/etc/named.conf,需修改以下关键参数:
sudo vi /etc/named.conf
any)或指定IP(如192.168.1.100):listen-on port 53 { any; };
192.168.1.0/24或localhost):allow-query { localhost; 192.168.1.0/24; };
recursion yes;
修改完成后保存,使用以下命令验证配置文件语法是否正确:
sudo named-checkconf
若无报错,则配置生效。
DNS区域文件用于存储域名的解析记录(如A记录、MX记录等),需完成正向区域(域名→IP)和反向区域(IP→域名)的配置。
编辑/etc/named.conf.local文件,添加自定义区域(以example.com为例):
sudo vi /etc/named.conf.local
添加以下内容:
zone "example.com" IN {
type master; # 区域类型(master为主DNS服务器)
file "/var/named/example.com.zone"; # 区域文件路径
allow-update { none; }; # 禁止动态更新(生产环境建议开启TSIG认证)
};
创建正向区域文件/var/named/example.com.zone(需root权限):
sudo vi /var/named/example.com.zone
添加以下内容(根据实际情况修改Serial、IP等参数):
$TTL 604800 # 记录缓存时间(1周)
@ IN SOA ns1.example.com. admin.example.com. ( # SOA记录(Start of Authority)
2025100501 ; Serial # 序列号(每次修改区域文件需递增)
604800 ; Refresh # 刷新时间(主从服务器同步间隔)
86400 ; Retry # 重试时间(同步失败后的重试间隔)
2419200 ; Expire # 过期时间(从服务器无法同步后的过期时间)
604800 ) ; Negative Cache TTL # 负缓存时间(解析失败的缓存时间)
@ IN NS ns1.example.com. # NS记录(Name Server)
ns1 IN A 192.168.1.100 # A记录(域名→IP)
www IN A 192.168.1.101 # A记录(www子域名→IP)
反向区域用于将IP地址解析为域名,需创建反向区域文件(以1.168.192.in-addr.arpa为例,对应192.168.1.0/24网段):
编辑/etc/named.conf.local,添加反向区域配置:
zone "1.168.192.in-addr.arpa" IN {
type master;
file "/var/named/1.168.192.in-addr.arpa.zone";
allow-update { none; };
};
创建反向区域文件/var/named/1.168.192.in-addr.arpa.zone:
sudo vi /var/named/1.168.192.in-addr.arpa.zone
添加以下内容(根据实际情况修改Serial、IP等参数):
$TTL 604800
@ IN SOA ns1.example.com. admin.example.com. (
2025100501 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 )
@ IN NS ns1.example.com.
100 IN PTR ns1.example.com. # PTR记录(IP→域名)
101 IN PTR www.example.com. # PTR记录(IP→域名)
BIND区域文件需属于named用户(BIND服务运行的用户),否则服务无法读取文件:
sudo chown root:named /var/named/example.com.zone
sudo chown root:named /var/named/1.168.192.in-addr.arpa.zone
sudo chmod 640 /var/named/example.com.zone
sudo chmod 640 /var/named/1.168.192.in-addr.arpa.zone
启动BIND服务并设置为开机自启动:
sudo systemctl start named
sudo systemctl enable named
检查服务状态:
sudo systemctl status named
若服务状态显示为active (running),则表示启动成功。
DNS服务使用UDP 53端口(查询)和TCP 53端口(区域传输),需配置防火墙允许这些端口的流量:
sudo firewall-cmd --permanent --add-service=dns
sudo firewall-cmd --reload
使用dig或nslookup命令测试DNS解析是否正常(需在另一台设备上配置DNS服务器IP为192.168.1.100):
# 测试正向解析(域名→IP)
dig @192.168.1.100 www.example.com
# 测试反向解析(IP→域名)
dig @192.168.1.100 -x 192.168.1.101
若返回结果中包含正确的解析记录(如www.example.com. 604800 IN A 192.168.1.101),则表示DNS服务配置成功。
注意事项:
allow-query限制为信任网络(如公司内网),避免开放给公网;/var/named/目录),防止数据丢失;named.conf.local中添加allow-transfer指令,并在从服务器上配置区域文件同步。