12. 配置DNS服务
12. 配置DNS服务
域名
域名(Domain Name)是互联网上用来识别和访问网站的一个易于记忆的名称。它是一个通过域名系统(DNS)将IP地址转换成人类可读形式的系统。每个域名都是独一无二的,用于标识互联网上的网站或网络服务。
域名通常由几个部分组成,用点(.)分隔,例如:
www.example.com.
在这个例子中:
www是一个子域名,通常用于指向网站的主服务器。example是二级域名,是域名的核心部分,由域名注册者选择。com是顶级域名(TLD),表示该域名的类别或用途,如.com通常用于商业实体,.org用于非营利组织,.net用于网络服务提供商等。
域名注册需要通过域名注册机构(如 Verisign、GoDaddy、阿里云等)进行,注册后,用户可以通过域名访问对应的网站或服务。域名注册通常需要支付年费,以保持域名的所有权和使用权。

DNS服务
DNS就是Domain Name System的简称,即域名系统。
HOSTS文件
hosts 文件是一个操作系统用于将主机名映射到IP地址的文件。这个文件允许用户在不查询DNS服务器的情况下,直接通过主机名访问网络设备。hosts 文件通常用于本地网络解析,可以提高域名解析速度,也可以用于本地测试和开发。
功能
- 本地解析:
hosts文件提供了一种快速解析主机名的方法,无需通过DNS服务器。 - 本地测试:在开发过程中,开发者可以通过修改
hosts文件来测试本地服务器。 - 广告拦截:用户可以通过将广告服务器的域名指向本地地址(如127.0.0.1)来阻止广告加载。
- 网络安全:在某些情况下,
hosts文件可以用来防止恶意软件通过修改DNS设置来重定向流量。
位置
- Windows:通常位于
C:\Windows\System32\drivers\etc\hosts。 - macOS/Linux:通常位于
/etc/hosts。
格式
hosts 文件的格式通常如下:
IP地址 域名
IP地址 别名1 别名2 ...
例如:
127.0.0.1 localhost
192.168.1.1 example.local example
在这个例子中:
127.0.0.1是本地回环地址,通常用于指向本机。192.168.1.1是一个局域网IP地址,example.local和example是可以解析到这个IP地址的域名。
注意事项
- 修改
hosts文件通常需要管理员或root权限。 - 操作系统可能会缓存DNS解析结果,修改
hosts文件后可能需要清除DNS缓存才能生效。 - 频繁修改
hosts文件可能会影响系统性能,因为它会跳过DNS解析过程。 - 在某些情况下,修改
hosts文件可能会与系统的安全策略冲突。
hosts 文件是一个强大的工具,可以用于多种目的,但应该谨慎使用,以避免不必要的问题。
DNS服务的作用
DNS主要是将难于记忆的IP地址转换为域名,便于人们访问。
DNS服务器可以分为3种:主域名服务器、辅助域名服务器、缓存服务器。
- 主域名服务器:本身提供DNS服务,本身含有区域数据文件
- 辅助域名服务器:和Master一起提供DNS服务,当Master服务器上的配置信息修改的时候,会同步更新到Slave服务器上。
- 缓存服务器:没有区域文件,只是帮助客户端向外部DNS请求查询,然后将查询的结果保存到它的缓存中。
正向查询与反向查询
在DNS(域名系统)中,正向查询和反向查询是两种基本的查询类型:
-
正向查询(Forward Lookup):
- 正向查询是最常见的DNS查询类型,它用于将域名转换为IP地址。
- 用户或客户端设备通常使用正向查询来访问网站或服务,例如,当你在浏览器中输入
www.example.com时,你的设备会进行一个正向查询,以获取与该域名关联的IP地址。 - 正向查询的格式通常是:
domain.com IN A,其中IN表示查询的类型是Internet,A表示查询的是IPv4地址。
-
反向查询(Reverse Lookup):
- 反向查询用于将IP地址转换为域名,这通常用于确定与特定IP地址关联的域名。
- 反向查询可以用于验证IP地址的所有权,或者在安全审计中确定尝试连接到你的网络的设备的身份。
- 反向查询的格式通常是:
123.123.123.123 IN PTR,其中PTR表示指针记录,用于查找与IP地址关联的域名。 - 反向查询的结果通常是一个PTR记录,它指向一个域名,该域名通常以
.in-addr.arpa结尾(对于IPv4)或.ip6.arpa结尾(对于IPv6)。
示例
-
正向查询示例:
- 查询:
www.example.com - 结果:
93.184.216.34(这只是一个示例IP地址)
- 查询:
-
反向查询示例:
- 查询:
93.184.216.34 - 结果:
www.example.com
- 查询:
应用场景
-
正向查询:
- 网站访问:用户访问网站时,浏览器需要将域名解析为IP地址。
- 网络服务:应用程序连接到服务器时,需要将服务名称解析为IP地址。
-
反向查询:
- 网络安全:确定尝试连接到你的网络的设备的域名,以识别潜在的威胁。
- 邮件服务器验证:通过反向查询邮件服务器的IP地址,可以验证其域名所有权,这是发送邮件时防止被标记为垃圾邮件的一种方法。
正向查询和反向查询是DNS解析过程中的基础操作,它们在网络通信和安全中扮演着重要的角色。
DNS查询方式
DNS(域名系统)查询是用于将域名转换为IP地址的过程。DNS查询主要有两种方式:递归查询和迭代查询,这两种方式合称为两段式查询。
-
递归查询(Recursive Query):
- 在递归查询中,客户端向DNS服务器发送一个查询请求,如果该DNS服务器不能直接回答查询请求,它会代替客户端去查询其他DNS服务器,直到找到答案或确定不存在答案。
- 递归查询通常由本地DNS服务器(也称为递归DNS解析器)处理
- 用户的设备(如电脑、手机等)通常会将DNS查询发送到本地DNS服务器,然后由本地DNS服务器完成递归查询过程。
-
迭代查询(Iterative Query):
- 在迭代查询中,客户端向DNS服务器发送一个查询请求,如果该DNS服务器不能直接回答查询请求,它会向客户端提供一个指向另一个可能知道答案的DNS服务器的引用。
- 客户端然后需要自己向这个新的DNS服务器发送查询请求,这个过程可能会继续进行,直到找到答案或确定不存在答案。
- 迭代查询通常用于DNS服务器之间的查询,而不是客户端和DNS服务器之间。
- 迭代查询的优点是它可以分散DNS查询的负载,因为每个DNS服务器只需要处理一次查询。缺点是客户端需要自己管理查询过程,这可能会增加客户端的复杂性。
在实际的DNS查询过程中,递归查询和迭代查询往往是结合使用的。客户端通常使用递归查询来简化操作,而DNS服务器之间则使用迭代查询来高效地共享信息。

根DNS服务器
因特网上有13个根DNS服务器, 其中大部分分布在北美洲,下面显示的是2012年的根DNS服务器分布图


HOSTS 与 DNS 的共同点
hosts与dns的共同点: 都是做域名解析的,解决IP地址与域名的对应关系问题。 在早期的时候,计算机数量还不是很多,通过修改本地hosts文件就能解决域名解析的工作。后来随着互联网的发展,计算机的数量越来越多,在每一个计算机上都维护、更新hosts文件的工作量也越来越大。DNS的出现就是解决了hosts文件无法满足海量计算机与域名的对应关系问题,将域名解析工作转移到了DNS服务器上,在本地计算机上只需要配置DNS服务器的IP地址即可。
DNS工作流程

Centos 配置DNS(主服务、正向查询)
安装
前提是正确配置YUM
首先,需要安装 BIND 以及相关的工具。
yum install bind bind-utils
- bind:安装 DNS 服务器的主程序。
- bind-utils:安装用于 DNS 查询的工具,如 dig 和 nslookup。
规划
首先必须正确配置IP和DNS(静态)
DNS设置为自己
规划解析域名和对应IP地址
假设需要解析的域名为xiandai.com,其中:
- www.xiandai.com 192.168.x.100
- dns.xiandai.com 192.168.x.x(自身)
- file.xiandai.com 192.168.x.101
编辑主文件
- 编辑主配置文件 /etc/named.conf:
sudo vi /etc/named.conf

/etc/named.conf 是BIND DNS服务器的主配置文件,用于定义DNS服务的行为和操作。你提到的更改涉及到DNS服务器的监听和访问控制设置。
原始配置
-
监听设置:
listen-on port 53 { 127.0.0.1; };这行配置指定DNS服务器只在本地回环地址(127.0.0.1)上监听端口53,这意味着DNS服务只对本机上的请求响应。
-
访问控制:
allow-query { localhost; };这行配置限制了哪些IP地址可以向DNS服务器发送查询请求。在这里,它只允许来自本地回环地址(localhost)的查询。
修改后的配置
-
监听设置:
listen-on port 53 { any; };将监听设置更改为
any;意味着DNS服务器将在所有网络接口上监听端口53,而不仅仅是本地回环地址。这使得DNS服务对所有网络请求开放,而不仅仅是本机。 -
访问控制:
allow-query { any; };将访问控制更改为
any;意味着任何IP地址都可以向DNS服务器发送查询请求。这取消了对查询来源的限制,使得DNS服务对互联网上的任何设备都是可访问的。
编辑named.rfc1912.zones 文件
在DNS服务器配置中,named.conf 是BIND(Berkeley Internet Name Domain)DNS服务器的主配置文件。这个文件控制着DNS服务器的全局设置,包括监听的端口、允许查询的客户端、区域文件的位置等。
named.rfc1912.zones 是BIND DNS服务器配置中的一个,用于定义DNS服务器应该遵循的区域传输策略。这个配置文件通常包含了一系列区域(zone),每个区域定义了一组域名和相关的DNS记录。
编辑配置文件named.rfc1912.zones:
sudo vi /etc/named.rfc1912.zones
####举例
zone "xiandai.com" IN {
type master;
file "xiandai.com.zone";
allow-update { none; };
};
这段配置是BIND DNS服务器的区域(zone)配置,用于定义一个特定的域名区域(在这个例子中是 xiandai.com)的属性和行为。下面是对这段配置的详细解释:
-
zone "xiandai.com" IN:
- 这定义了一个区域的开始,
"xiandai.com"是该区域的域名。 IN表示这是一个Internet类(Internet Class)的区域,这是最常见的区域类型。
- 这定义了一个区域的开始,
-
type master:
- 这指定了这台DNS服务器是
xiandai.com区域的主服务器(master server)。作为主服务器,它负责维护该区域的DNS记录,并提供区域传输(zone transfer)给从服务器(slave servers)。
- 这指定了这台DNS服务器是
-
file "xiandai.com.zone":
- 这指定了存储
xiandai.com区域数据的文件名。这个文件包含了该区域的所有DNS记录,如A记录、MX记录等。 - BIND DNS服务器会在指定的文件中查找和存储关于
xiandai.com的DNS数据。
- 这指定了存储
-
allow-update { none; }
- 这个关键字表示不允许任何IP地址或网络对指定的DNS区域进行动态更新。这意味着没有任何外部系统或服务可以自动更改该区域的DNS记录。
添加区域文件
进入 /var/named 目录,新建一个 xiandai.com.zone 文件 (即上述文件中添加的配置信息中的file 参数) ,因为此目录下的named.localhost 文件格式与我所需要的格式一致,所以为了方便,直接通过cp命令复制重命名即可
cd /var/named
cp -p named.localhost kaisa.com.zone
思考为何要用-p
原始文件,解释
; 注意,zone文件的注释是以分号";"开始的。
$TTL 1D ; 生存期, 默认单位为秒,另可设定为[W|D|H|M]
; [zone] IN SOA [主机名] [管理员email] ([五组更新时间参数])
; @=>zone IN SOA @=>主机名 rname.invalid.=>email
; @代表根域
; rname.invalid.解析为rname@invalid,第一个"."为"@"的替代,尾部的"."为根域,表明其为绝对URL。
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @ ; 直接输入域名,访问@
A 127.0.0.1 ; 直接输入域名,解析到的IPV4的IP
AAAA ::1 ; 直接输入域名,解析到的IPV6的IP
修改为
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.xiandai.com.
dns A 192.168.x.x
www A 192.168.x.100
file A 192.168.x.101
- NS 记录指定了域名服务器。
- A 记录将域名映射到 IP 地址
- MX记录 邮件记录以后再说
重启服务
首先关闭防火墙
重启服务
systemctl restart named
服务开机自动启动
systemctl enable named
查看服务状态
systemctl status named
测试
使用nslookup 进行测试
在此之前需要先首先正确配置IP和DNS