sudo yum install bind bindutils
命令安装BIND及工具CentOS 7中安装DNS的详细指南
安装前准备
系统要求
- 操作系统:CentOS 7
- 内存:建议至少2GB以上
- 硬盘:足够的磁盘空间用于存储DNS相关文件和日志
网络配置
确保服务器具有固定的IP地址,以便客户端能够稳定地访问DNS服务,可以通过编辑/etc/sysconfig/networkscripts/ifcfgeth0
(假设网卡为eth0)文件来设置静态IP地址。
安装BIND软件包
BIND(Berkeley Internet Name Domain)是最常用的DNS服务器软件,在CentOS 7中,可以通过yum命令轻松安装BIND及其相关工具。
yum y install bind bindutils
- bind:提供DNS服务器的核心功能。
- bindutils:包含
nslookup
、dig
等实用工具,用于测试和诊断DNS问题。
配置主配置文件
主配置文件是/etc/named.conf
,它定义了DNS服务器的全局设置,如监听地址、允许查询的客户端等。
编辑named.conf
使用vim或其他文本编辑器打开/etc/named.conf
文件:
vim /etc/named.conf
在options
块中,修改或添加以下内容:
options { listenon port 53 { any; }; # 监听所有接口的53端口 listenonv6 port 53 { ::1; }; # 监听IPv6的回环地址 directory "/var/named"; # 区域文件存放目录 dumpfile "/var/named/data/cache_dump.db"; statisticsfile "/var/named/data/named_stats.txt"; memstatisticsfile "/var/named/data/named_mem_stats.txt"; recursingfile "/var/named/data/named.recursing"; secrootsfile "/var/named/data/named.secroots"; allowquery { 192.168.1.0/24; }; # 允许查询的客户端IP段 };
检查配置文件语法
在保存并退出后,使用以下命令检查配置文件是否有语法错误:
namedcheckconf /etc/named.conf
如果输出显示“syntax OK”,则表示配置文件无误。
配置区域文件
区域文件定义了具体的域名与IP地址的映射关系,包括正向解析(域名到IP)和反向解析(IP到域名)。
编辑named.rfc1912.zones
该文件位于/etc/
目录下,用于定义需要解析的区域。
vim /etc/named.rfc1912.zones
以定义一个正向解析区域和一个反向解析区域:
zone "example.com" IN { type master; file "example.com.zone"; }; zone "1.168.192.inaddr.arpa" IN { type master; file "1.168.192.arpa"; };
创建正向解析文件
正向解析文件通常命名为[domain].zone
,例如example.com.zone
。
cp /var/named/named.localhost /var/named/example.com.zone vim /var/named/example.com.zone
如下:
$TTL 86400 @ IN SOA example.com. root.example.com. ( 2023101001 ; Serial 3600 ; Refresh 1800 ; Retry 604800 ; Expire 86400 ) ; Minimum TTL ) IN NS dns.example.com. dns IN A 192.168.1.100 www IN A 192.168.1.10 mail IN A 192.168.1.20
创建反向解析文件
反向解析文件通常命名为[network].arpa
,例如168.192.arpa
。
cp /var/named/named.empty /var/named/1.168.192.arpa vim /var/named/1.168.192.arpa
如下:
$TTL 86400 @ IN SOA example.com. root.example.com. ( 2023101001 ; Serial 3600 ; Refresh 1800 ; Retry 604800 ; Expire 86400 ) ; Minimum TTL ) IN NS dns.example.com. 100 IN PTR dns.example.com. 10 IN PTR www.example.com. 20 IN PTR mail.example.com.
设置权限和所有权
为了安全起见,需要确保区域文件的所有权和权限正确。
cd /var/named/ chgrp named example.com.zone chmod 640 example.com.zone chgrp named 1.168.192.arpa chmod 640 1.168.192.arpa
配置防火墙和SELinux
开放53端口
使用firewallcmd命令开放TCP和UDP的53端口:
firewallcmd permanent addport=53/tcp firewallcmd permanent addport=53/udp firewallcmd reload
配置SELinux
如果SELinux处于启用状态,需要允许named服务使用特定的端口。
setsebool P named_write_master_zones on
启动并验证DNS服务
启动named服务
systemctl start named systemctl enable named
验证配置
使用nslookup
或dig
命令进行测试。
正向解析测试
nslookup www.example.com
预期输出应显示www.example.com
对应的IP地址,如168.1.10
。
反向解析测试
nslookup 192.168.1.10
预期输出应显示1.168.192.inaddr.arpa
对应的域名,如www.example.com
。
常见问题与解答
问题1:如何更改DNS服务器的IP地址?
解答:要更改DNS服务器的IP地址,可以在/etc/sysconfig/networkscripts/ifcfgeth0
文件中将BOOTPROTO=dhcp
改为BOOTPROTO=static
,并设置IPADDR
为新的IP地址,然后重启网络服务:
systemctl restart network
确保新的IP地址在allowquery
配置中允许查询。
问题2:如何更改DNS服务器的监听端口?
解答:默认情况下,DNS服务器监听53端口,如果需要更改监听端口,可以在/etc/named.conf
的options
块中修改listenon port
指令,将端口改为5353:
listenon port 5353 { any; }; listenonv6 port 5353 { ::1; };
确保防火墙允许新的端口通过,并更新客户端的DNS配置以