DNS

本文详细介绍了DNS的记录类型,包括A记录、PTR、CNAME和NS。讲解了DNS的递归查询和迭代查询原理,并指导如何自建DNS服务器,配置BIND及自定义区域。还涉及DNS主辅同步、高可用性设置以及父域和子域的配置策略,最后讨论了DNS转发的两种类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. dns分为根域(.)
  2. 顶级域(.com,.cn,.org等等)
    通用域和国家域
  3. 主域(二级域名)(aliyun.com)
  4. 子域(三级域名)(www.aliyun.com ,123.aliyun.com,abc.aliyun.com)

DNS的记录类型

  1. A记录
    域名指向ip,正向解析
  2. PTR
    ip查找域名,反向解析
  3. CNAME
    域名指向域名,由指向的域名做A记录查找ip换回
  4. NS
    客户通过查询dns记录,如当前的dns无法提供权威解析,则返回一条ns记录,客户端再通过ns记录提供的dns权威服务器进行解析。

DNS的两个查询原理

  1. 递归查询
    当dns服务器收到用户的请求时,必须返还用户一个准确的查询结果。(如果是企业内部使用可以关闭,但是如果需要解析公网的,建议打开,但是打开一定要做限制)。
  2. 迭代查询
    当dns服务器收到用户的请求时,并不直接回复查询结果,而是告诉另一台dns服务器的地址,用户再去请求这台的,依次反复,最后拿到结果。

自建DNS

BIND:
域名解析服务
权威域名解析
DNS调试工具

  1. 下载bind
    bind bind-utils
  2. 启动并设置开机自启
    systemctl enable named
    systamctl start named
  3. 查看端口
    netstat -lntp 默认监听在53的端口
  4. 修改配置文件/etc/named.conf,图一可以改为localhost,也可以改为any(任何),建议改为localhost。在这里插入图片描述
    在这里插入图片描述
  5. 检查语法 named-checkconf
    重启 systemctl restart named
    rndc status ,远程的方式管理named
    rndc reload 全程重启
  6. 将其他服务器的dns改为 安装bind的服务器ip地址。尝试ping 外网网站,看是否能通。

配置自定义区域

A记录设置

  1. vim /etc/named.conf 添加一个新的区域
//默认可以对任何域名提供解析服务;因为named.ca中存储的是全球根域服务器; 
zone "oldxu.com" IN {
type hint; 
file "oldxu.com.zone"; 
区域配置文件名称 
相对路径,因为默认调用的是  /var/named/  下的文件
};
  1. vim /var/named/oldxu.com.zone (邮箱右面可以不用带点)
$TTL 600

oldxu.com. IN SOA ns.oldxu.com. qq.oldxu.com. (
#区域名称 #IN SOA起始授权 #ns.dldxu.com是固定写法 #邮箱
        20210518 (序列号。通常用时间戳表示)
        10800 (刷新时间)
        900 (重试时间)
        604800 (过期时间)
        86400 (缓存dns服务器可以缓存多久)
)

oldxu.com.      IN      NS      ns1.oldxu.com.
指定域名的权威解析服务器(NS一定要写)
ns1.oldxu.com.  IN      A       172.16.1.91
设定权威服务器所在ip

设定域名解析(什么域名匹配哪个ip)
www.oldxu.com.  IN      A       1.1.1.1
ttt.oldxu.com.  IN      A       2.2.2.2                                       
  1. named-checkconf(检查配置文件)
    named-checkzone oldxu.com /var/named/oldxu.com.zone (检查zone文件)
  2. rndc reload

CNAME

和 A记录没什么差别, 就是 域名 和在/var/named/下的文件中,将域名解析配置,由域名指向域名即可。

PTR

先配置zone文件,反向解析配置:如果 你的ip是 10.0.0.100,那么在配置文件中就要倒过来写 “0.0.10.in-addr.arpa” ,建议同时配置正向解析

$TTL 600

@ IN SOA 1.16.172.in-addr.arpa. qq.oldxu.com. (
        20210518
        10800
        900
        604800
        86400
)

设置反向解析的ip地址。
@       IN      NS      ns1.oldxu.com.
91      IN      PTR     ns1.oldxu.com.

设定ip对应的域名
5       IN      PTR     lb01.oldxu.com.
6       IN      PTR     lb02.oldxu.com.

限制递归查询的网段

/etc/named.conf,再递归查询的后面 写入:allow-recursion { 网段+掩码;};(大括号里最后的分号不要忘了写)

在这里插入图片描述

dns主辅同步

master

在/etc/named.conf 配置文件中options下写入以下两行进行配置。
写在options下是全局配置。也可以写在单独的zone下面。

//允许哪个地址能同步master配置信息
        allow-transfer {172.16.1.92;};
//主动通知辅助dns域名变更
        also-notify {172.16.1.92;};

主辅同步,必须修改时间。在master上修改

backup

  1. 先修改监听地址(localhost),其次修改访问限制(允许谁来查询any)。
  2. 在 options 下 添加 masterfile-format text;
  3. 添加区域配置文件
zone "oldxu.com" IN { 
        type slave;(类型) 
        file "slaves/oldxu.com.zone";
        masters { 172.16.1.91; };
};
  1. 检查语法 named-checkconf
  2. 重启服务 systemctl restart named (rndc reload)

配置dns高可用

在/etc/resolv.conf,配置两个dns即可
nameserver 172.16.1.91
nameserver 172.16.1.92

dns父域和子域的配置

因为backup和master是同步的,所以只需要配置master即可。

二级域名 oldxu.com
三级域名 www.oldxu.com
子域是 三级域名的 附属域, 比如 ttt.www.oldxu.com

首先在父域授权子域,添加子域解析
ops.oldxu.com. 		IN 	NS	ns1.ops.oldxu.com
ns1.ops.oldxu.com.	IN	A	172.16.1.93
  1. 在子域服务器添加 zone的配置(/etc/named.conf),以及配置文件(/var/named/ops.oldxu.com.zone)。
zone "ops.oldxu.com" IN { 
        type master; (类型写master)
        file "ops.oldxu.com.zone";  
};

配置文件

$TTL 7200
ops.oldxu.com. IN SOA ns.ops.oldxu.com. qq.oldxu.com. (
        2021041516
        10800
        900
        604800
        86400
)

;配置域名解析的指向(由172.1.6.1.3来解析4级域名)
ops.oldxu.com.          IN      NS      ns1.ops.oldxu.com.
ns1.ops.oldxu.com.      IN      A       172.16.1.93

;配置四级域名
www.ops.oldxu.com.      IN      A       5.5.5.5
ttt.ops.oldxu.com.      IN      A       4.4.4.4

子域和父域的区别

子域和父域各自负责各自的区域,彼此没有联系,父域可以查到子域的,但是子域查不到父域的,如果想解决,就需要做dns转发

dns转发

转发就是将查询请求转至某一台服务器进行解析(被转发的服务器必须开启递归查询)。

转发分为两类:

  1. 区域转发:仅转发特定的区域
  2. 全局转发:来者不拒

转的 type的类型是 forward。
区域转发 写在 zone下面

zone "ZONE_NAME" IN {
	type forward; 
	forward { first | only };
 	forwarders { SERVER_IP; };
};

全局转发 写在options下面

### DNS 配置教程与问题解决 DNS(Domain Name System,域名系统)是互联网中将域名转换为IP地址的服务。以下是关于DNS配置的详细信息和解决方案: #### 一、DNS服务的基本原理 DNS通过分布式数据库实现域名解析功能,其核心任务是将易于记忆的域名转换为计算机可识别的IP地址[^1]。域名空间采用层次化结构,由根域、顶级域、二级域等组成。 #### 二、DNS服务器类型 DNS服务器主要分为以下几种类型: - **主DNS服务器**:负责存储区域文件并提供权威解析。 - **辅DNS服务器**:从主DNS服务器同步数据,用于负载均衡和冗余备份。 - **缓存DNS服务器**:不存储区域文件,仅通过缓存机制加速查询响应速度[^1]。 #### 三、DNS查询方式 DNS查询分为递归查询和迭代查询两种方式: - **递归查询**:客户端向DNS服务器发送请求后,DNS服务器负责完成整个解析过程,并将最终结果返回给客户端。 - **迭代查询**:DNS服务器只返回自己知道的部分信息,客户端需要继续向其他DNS服务器发起查询直到获得最终结果。 #### 四、DNS缓存机制 为了提高查询效率和减轻服务器负担,DNS引入了缓存机制。缓存记录包括TTL(Time To Live)值,表示该记录在缓存中的有效时间。当TTL过期时,DNS服务器会重新获取最新记录[^1]。 #### 五、DNS服务的配置文件 Linux系统中常用的DNS服务软件是BIND(Berkeley Internet Name Domain)。其主要配置文件如下: - **named.conf**:全局配置文件,定义区域和模块加载。 - **zone文件**:包含具体域名到IP地址的映射关系。 配置示例: ```bash options { directory "/var/named"; allow-query { any; }; }; zone "example.com" IN { type master; file "example.com.zone"; allow-update { none; }; }; ``` 上述代码定义了一个名为`example.com`的主DNS区域,并指定了对应的zone文件[^1]。 #### 六、如何搭建DNS服务? ##### 服务端配置 1. 安装BIND软件包。 2. 编辑`named.conf`文件,添加或修改区域配置。 3. 创建或编辑zone文件,填写正向解析(A记录)和反向解析(PTR记录)。 4. 启动或重启DNS服务。 ```bash systemctl start named systemctl enable named ``` ##### 客户端配置 在客户端操作系统中设置DNS服务器地址。例如,在Windows系统中,可以通过网络适配器属性进行设置;在Linux系统中,编辑`/etc/resolv.conf`文件: ```bash nameserver 8.8.8.8 nameserver 8.8.4.4 ``` 此处以Google公共DNS为例[^2]。 #### 七、常见DNS问题及解决方法 1. **无法解析域名**:检查DNS服务器是否正常运行,确保客户端配置了正确的DNS地址。 2. **解析速度慢**:优化DNS缓存策略,减少递归查询次数。 3. **安全问题**:启用DNSSEC(Domain Name System Security Extensions),防止中间人攻击和数据篡改。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值