DNS主服务器和辅助服务器的搭建
DNS以及DNS服务器的搭建
一、什么是DNS
DNS 是域名服务 (Domain Name System) 的缩写,它是由解析器和域名服务器组成的。
域名服务器是指保存有该网络中所有主机的域名和对应IP地址,
并具有将域名转换为IP地址功能的服务器。
域名必须对应一个IP地址,而IP地址不一定有域名。
域名系统采用类似目录树的等级结构。
域名服务器为客户机/服务器模式中的服务器方,它主要有两种形式:主服务器和转发服务器。
将域名映射为IP地址的过程就称为"域名解析"。
在Internet上域名与IP地址之间是一对一(或者多对一)的,
也可采用DNS轮循实现一对多,域名虽然便于人们记忆,
但机器之间只认IP地址,它们之间的转换工作称为域名解析,
域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。
DNS 命名用于 Internet等 TCP/IP网络中,通过用户友好的名称查找计算机和服务。
当用户在应用程序中输入 DNS 名称时,
DNS 服务可以将此名称解析为与之相关的其他信息,如 IP 地址。
因为,你在上网时输入的网址,是通过域名解析系统解析找到了相对应的IP地址,
这样才能上网。其实,域名的最终指向是IP
二、域名的规则
-
域名空间结构:【例:】www.baidu.com.
-
根域:
com
后面的用"."表示 -
顶级域:顶级域分为组织域和国家或地区域。
- 组织域采用3个字符代号,如.com .edu .gov
- 国家或地区域,采用两个字符代号。如.cn .jp
-
二级域:二级域注册到个人、组织或者公司名称,如
baidu
、taobao
等 -
主机名称:主机名称处于域名空间的最底层,主机名与上述各级域名结合构成FQND(完全合格域名),如
www
。
注意:每个域用一个点号“.”分开
三、DNS服务的作用
-
核心作用:实现域名与 IP 地址的双向翻译
【例】用户在浏览器输入
www.baidu.com
,DNS 服务器将其解析为百度服务器的 IP 地址(如14.215.177.38
),从而建立网络连接;网络设备(如防火墙、服务器)通过 IP 地址反查域名,用于日志记录、访问控制或故障排查(如判断某个 IP 是否属于可信域名)。 -
扩展作用:支撑网络服务的高效与稳定
【例】实现负载均衡与流量分配;提高服务冗余与高可用性;提高网络安全与访问控制
四、域名查询的过程
DNS查询类别:
递归查询:发生在客户端和DNS服务器之间
迭代查询:发送在DNS服务器和DNS服务器之间
DNS解析方式:
正向解析:将FQDN解析为对应的IP
反向解析:将IP解析为对应的FQDN
五、DNS服务搭建方式
1. bind
优点
- 功能强大:作为最流行的 DNS 服务器软件之一,BIND 具有丰富的功能和高度的可配置性,支持各种复杂的 DNS 架构和功能需求,如区域传输、动态 DNS 更新、负载均衡等。
- 稳定性高:能够在高负载和复杂的网络环境中稳定运行。
- 支持多种操作系统:可以在多种 Linux 发行版以及其他操作系统上运行,具有良好的跨平台性。
缺点
- 配置复杂:配置起来比较麻烦,需要对域名系统的原理和它的配置规则有深入了解,不然很容易搞错。
- 安全风险:由于其功能强大且广泛暴露于网络中,若配置不当,容易成为黑客攻击的目标,存在一定的安全风险,需要进行严格的安全配置和管理。
- 资源消耗:在处理大量并发请求时,可能会消耗较多的系统资源,对服务器的硬件性能有一定要求。
2. unbound
优点
- 轻量级高效:Unbound 是一个轻量级的 DNS 服务器,具有较高的性能和效率,能够快速响应 DNS 查询请求,在处理大量查询时表现出色,且对系统资源的消耗相对较少。
- 安全特性:内置了一些安全功能,如 DNSSEC(Domain Name System Security Extensions)支持,能够有效防止 DNS 欺骗和篡改等安全攻击,增强了 DNS 系统的安全性。
- 简单易配置:与 BIND 相比,Unbound 的配置相对简单,配置文件的语法较为直观,易于理解和掌握,适合初学者快速搭建 DNS 服务器。
- 隐私保护:支持隐私增强功能,如不记录客户端的查询日志等,有助于保护用户的隐私信息。
缺点
- 功能相对有限:相比于 BIND,Unbound 的功能不够丰富,某些高级的 DNS 功能可能不被支持,或者支持程度不如 BIND 完善,对于一些复杂的 DNS 应用场景可能无法满足需求。
- 社区支持相对较小:虽然有一定的社区支持,但与 BIND 相比,其社区规模和文档资源相对较少,在遇到问题时可能较难找到全面的解决方案。
- 兼容性:在与一些老旧的 DNS 客户端或特定的网络环境交互时,可能会存在兼容性问题,但这种情况相对较少。
DNS重要的配置文件及目录解释
/etc/hosts 本地解析配置文件
/etc/resolv.conf 客户端的DNS指向
named DNS服务名称
bind,bind-chroot DNS安装软件包
/var/named DNS的家目录
/etc/named.conf 映射的DNS主配置文件
/var/named/chroot/etc/named.rfc1912.zones 记录DNS正向和反向的全局解析配置文件
/var/named/named.localhost 正向解析的配置文件模板
/var/named/named.empty 反向解析的配置文件模板/etc/named.conf 映射的DNS主配置文件
/var/named/chroot/etc/named.rfc1912.zones全局解析配置文件
DNS 服务器类型(主 DNS 与辅助 DNS)
- 主 DNS 服务器(Primary/Authoritative DNS)
- 定义:负责维护特定域名区域(Zone)的原始数据,是该区域的权威数据源。
- 权限:可直接修改域名记录(如 A、MX、CNAME 等),并生成更新序列号(Serial)。
- 存储:区域文件存储在本地(如
/var/named/example.com.db
)。
- 辅助 DNS 服务器(Secondary DNS)
- 定义:从主 DNS 服务器同步区域数据,提供冗余备份和负载分担。
- 权限:只读,无法直接修改记录,需通过主 DNS 更新。
- 同步机制:通过 AXFR/IXFR 协议定期检查主 DNS 的序列号,发现更新时拉取全量或增量数据
定义域和网段的映射关系分为:正向解析(FQDN → IP)和 反向解析(IP → FQDN)
【例:】
maoqi.example.com-->192.168.100.10
#此时,主机名称和主机位是映射关系(例:mapqi和10),域名和网络为是映射关系(例:example.com和192.168.100.0网段)。
六、使用bind方式搭建主DNS服务器
-
配置本地yum仓库
-
挂载yum仓库
mount /dev/cdrom /mnt/
-
配置主DNS服务器
安装bind、bind-chroot软件
yum -y install bind bind-chroot -
进入
vim /etc/named.conf
,编辑DNS服务器主配置文件
修改文件中的以下配置:
listen-on port 53 { any; }; listen-on-v6 port 53 { any; }; allow-query { any; };
-
编辑正向和反向解析全局配置文件
vim /etc/named.rfc1912.zones #在named.rfc1912.zones文件内 zone "example.com" IN { type master; file "example.com"; #告诉配置文件我的正向解析文件是谁 allow-update { none; }; }; zone "100.168.192.in-addr.arpa" IN { type master; file "com.example"; #告诉配置文件我的反向解析文件是谁 allow-update { none; }; };
-
配置正向解析文件和反向解析文件
(1)将原先的正向和反向解析文件的模板复制到我们刚刚设置的配置文件中
此时一定要注意文件的所有者和所属组,不能改变,所以在cp的时候一定要加上-p的选项cd /var/named cp -p named.localhost example.com cp -p named.empty com.example
(2)编辑正向解析文件
vim /var/named/example.com #在example.com文件内 $TTL 1D @ IN SOA server.example.com. root.example.com. ( 2025042801 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS server.example.com. server IN A 172.16.30.20 client IN A 172.16.30.10
**$TTL 1D:**缓存周期为1天
**SOA:**起始授权记录,就是由谁让你做解析的,即DNS服务器
**serial:**序列号,可以随便写
**refresh:**定义辅助DNS刷新的时间,也就是说辅助DNS会隔多久同步主dns解析数据。**retry:**表示重试延迟,也就是说辅助dns第一次同步数据失败,那么就需要隔多久(就是retry来定义)来同步
**expire:**表示失效的时间,超过这个时间,辅助DNS一直同步数据失败,那么该辅助DNS服务器将失效,则不会再去同步主DNS数据。
**minimum:**表示定义无效解析的缓存时间。
一个FQDN只能对应一个IP,但是一个IP可以对应多个FQDN。
(3)编辑反向解析文件
vim /var/named/com.example #在com.example文件内 $TTL 3H @ IN SOA server.example.com. root.example.com. ( 20210228 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS server.example.com. 10 IN PTR client.example.com. 20 IN PTR server.example.com.
-
重启服务
systemctl restart named systemctl enable named
-
设置防火墙
配置允许访问的网段
firewall-cmd --add-service=dns --permanent firewall-cmd --reload #或者使用富规则 firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.100.0/24 service name=dns accept' --permanent firewall-cmd --reload
配置关闭防火墙,关闭SELinux
systemctl stop firewalld #关闭防火墙 systemctl disable firewalld #设置开启自启 setenforce 0 #设置SElinux状态为全部允许访问模式 getenforce #查看SWlinux状态
-
在网卡配置文件中配置DNS为服务器的IP
vim /etc/sysconfig/network-scripts/ifcfg-ens33 #在ifcfg-ens33网卡文件中 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=78fae162-eb2f-4a4e-b46f-e77f72410498 DEVICE=ens33 ONBOOT=yes IPADDR=192.168.100.100 PREFIX=24 DNS1=192.168.100.100
保存退出后,重启网卡服务并激活网络连接
systemctl restart network
-
验证
在client上ping服务器server.example.com,看能否ping通ping server.example.com #或者使用 nslookup
七、搭建DNS辅助服务器
-
配置本地yum仓库
-
配置主DNS服务器,安装bind、bind-chroot软件
yum -y install bind bind-chroot
-
进入
vim /etc/named.conf
,编辑DNS服务器主配置文件
修改文件中的以下配置:
listen-on port 53 { any; }; listen-on-v6 port 53 { any; }; allow-query { any; };
-
编辑正向和反向解析全局配置文件
vim /etc/named.rfc1912.zones #在named.rfc1912.zone内 zone "example.com" IN { type slave; file "slaves/maoqi.com"; masters { 192.168.100.100; }; #里面的IP为DNS主机的IP地址 }; zone "100.168.192.in-addr.arpa" IN { type slave; file "slaves/com.maoqi"; masters { 192.168.100.100; }; };
-
启动服务
systemctl restart named systemctl enable named
由于上一步配置了/etc/named.rfc1912.zones文件,所以在启动服务后会在/var/named目录内创建maoqi.com文件和com.maoqi文件。
-
配置关闭防火墙,关闭SELinux
systemctl stop firewalld #关闭防火墙 systemctl disable firewalld #设置开启自启 setenforce 0 #设置SElinux状态为全部允许访问模式 getenforce #查看SElinux状态
-
给所有主机上的网卡配置文件配置辅助DNS的IP地址
vim /etc/sysconfig/network-scripts/ifcfg-ens33 #在ifcfg-ens33服务内作出以下修改 DNS1=192.168.100.100 DNS2=192.168.100.111
保存退出后,重启网卡服务并激活网络连接
systemctl restart network
-
验证
在client上ping服务器server.example.com,看能否ping通ping server.example.com #或者使用nslookup