CentOS安装DNS服务详细指南
一、DNS简介
1、定义:DNS(DomAIn Name System,域名系统)是一个分布式数据库系统,用于将人类可读的域名(如www.baidu.com)解析为计算机可理解的IP地址(如192.168.1.1),这种解析过程被称为域名解析。
2、作用:DNS的主要功能是将用户友好的域名转换为IP地址,从而使得用户能够访问互联网资源而无需记住复杂的数字地址,DNS还支持反向解析,即将IP地址解析为域名。
3、组件:
DNS服务器:存储并管理域名和IP地址之间的映射关系。
BIND:一个广泛使用的开源DNS服务器软件,由互联网系统联盟(Internet Systems Consortium,ISC)开发和维护。
named:BIND的主要守护进程,负责处理DNS查询请求。
4、工作原理:当用户输入一个域名时,操作系统会向本地DNS服务器发出请求,如果本地DNS服务器没有缓存该域名的IP地址,它会代表客户端向其他DNS服务器递归查询,直到获得结果并将结果返回给客户端。
二、实验环境
组件 | 内存 | 硬盘 | 网络模式 | IP地址 |
DNS服务端 | 2GB | 80GB | NAT | 192.168.180.132 |
DNS客户端 | 2GB | 40GB | NAT | 192.168.180.135 |
三、安装前准备
1. 关闭防火墙和SELinux
在安装BIND之前,建议先关闭防火墙和SELinux,以避免它们干扰DNS服务的正常运行。
临时关闭防火墙 systemctl stop firewalld 永久关闭防火墙 systemctl disable firewalld 临时关闭SELinux setenforce 0 永久关闭SELinux vi /etc/selinux/config 将 SELINUX=enforcing 改为 SELINUX=disabled
2. 更新系统
确保系统软件包是最新的,以减少潜在的兼容性问题。
yum update y
四、安装DNS服务
1. 安装BIND软件包
使用YUM包管理器安装BIND和BINDutils。
yum install y bind bindutils
2. 修改BIND主配置文件/etc/named.conf
编辑/etc/named.conf
文件,进行以下修改:
vi /etc/named.conf
添加或修改以下内容:
options { listenon port 53 { any; }; allowquery { any; }; 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"; allowrecursion { any; }; dnssecenable yes; dnssecvalidation yes; managedkeysdirectory "/var/named/dynamic"; pidfile "/run/named/named.pid"; sessionkeyfile "/run/named/session.key"; };
3. 配置正向解析区域文件
编辑/etc/named.rfc1912.zones
文件,添加正向解析区域,假设我们要添加的域名为kaisa.com
。
vi /etc/named.rfc1912.zones
添加以下内容:
zone "kaisa.com" IN { type master; file "kaisa.com.zone"; allowupdate { none; }; };
4. 创建区域文件
在/var/named
目录下创建一个新的区域文件kaisa.com.zone
,并复制模板文件named.localhost
的内容进行修改。
cd /var/named cp p named.localhost kaisa.com.zone vi kaisa.com.zone
修改后的内容如下:
$TTL 86400 @ IN SOA dns.kaisa.com. root.kaisa.com. ( 2023101001 ; Serial 7200 ; Refresh 120 ; Retry 604800 ; Expire 86400 ) TTL ) ; Minimum TTL ) IN NS dns.kaisa.com. dns IN A 192.168.180.132 www IN A 192.168.180.132 ftp IN A 192.168.180.132
5. 配置反向解析区域文件
编辑/etc/named.rfc1912.zones
文件,添加反向解析区域,假设我们的网段是192.168.180.inaddr.arpa
。
vi /etc/named.rfc1912.zones
添加以下内容:
zone "180.168.192.inaddr.arpa" IN { type master; file "hzl.com.zone"; allowupdate { none; }; };
6. 创建反向解析区域文件
在/var/named
目录下创建一个新的区域文件hzl.com.zone
,并复制模板文件named.loopback
的内容进行修改,注意,这里的文件名需要与named.rfc1912.zones
中的配置一致。
cd /var/named cp p named.loopback hzl.com.zone vi hzl.com.zone
修改后的内容如下:
$TTL 86400 @ IN SOA dns.hzl.com. root.hzl.com. ( 2023101001 ; Serial 7200 ; Refresh 120 ; Retry 604800 ; Expire 86400 ) TTL = ; Minimum TTL ) IN NS dns.hzl.com. 132 IN PTR dns.kaisa.com. 133 IN PTR www.kaisa.com. 134 IN PTR ftp.kaisa.com.
五、启动和测试DNS服务
1. 重启网络服务和BIND服务
systemctl restart network systemctl restart named
2. 测试DNS解析
在客户端机器上,编辑/etc/resolv.conf
文件,添加DNS服务器的IP地址。
vi /etc/resolv.conf
添加以下内容:
nameserver 192.168.180.132
然后重启网络服务。
systemctl restart network
使用nslookup
命令测试DNS解析。
nslookup www.kaisa.com
如果一切正常,你应该看到类似以下的输出:
Server: 192.168.180.132 Address: 192.168.180.132#53 Name: www.kaisa.com Address: 192.168.180.132
六、常见问题及解答(FAQs)
Q1:如何更改BIND监听的端口号?如何在BIND中添加额外的监听地址?
A1:要更改BIND监听的端口号,可以编辑/etc/named.conf
文件中的options
部分,将listenon port 53
修改为所需的端口号,要将端口号更改为5353,可以进行以下修改:
options { listenon port 5353 { any; }; # 修改此处的端口号为5353 ... };
还需要确保防火墙开放新的端口号,使用firewalld开放5353端口:
firewallcmd permanent addport=5353/udp firewallcmd reload
要在BIND中添加额外的监听地址,可以在listenon
指令中指定多个地址或地址范围,要添加监听地址192.168.2.1
和192.168.3.1
,可以进行以下修改:
options { listenon port 53 { 192.168.2.1; 192.168.3.1; any; }; # 添加额外的监听地址 ... };
完成配置后,重新启动BIND服务使更改生效:
systemctl restart named