当前位置: 首页 > news >正文

[Linux入门] 初学者入门:Linux DNS 域名解析服务详解

目录

一、域名服务基础:从 “名字” 到 “地址” 的转换

1️⃣什么是域名?

2️⃣什么是 DNS?

3️⃣DNS 用 TCP 还是 UDP?

二、DNS 服务器:各司其职的 “导航站”

1️⃣根域名服务器

2️⃣顶级域名服务器

3️⃣权威域名服务器

4️⃣本地 DNS 服务器

5️⃣转发服务器

三、正向解析与反向解析:DNS 的两种 “查询模式”

1️⃣正向解析:域名→IP

2️⃣反向解析:IP→域名

3️⃣区域(Zone)的概念

四、DNS 查询方式:递归与迭代

1️⃣递归查询:“你帮我搞定”

2️⃣迭代查询:“你告诉我下一步找谁”

3️⃣完整查询过程(以www.linuxprobe.com为例)

五、Linux 构建缓存域名服务器

1️⃣为什么需要缓存 DNS?

2️⃣工具:BIND(最常用的 DNS 软件)

3️⃣配置缓存 DNS 服务器(步骤)

步骤 1:修改主配置文件

步骤 2:重启服务并测试

六、Linux 构建主从域名服务器

1️⃣主从服务器的角色

2️⃣配置示例(环境:主服务器 192.168.141.130,从服务器 192.168.141.129)

步骤 1:配置主服务器

步骤 2:配置从服务器

步骤 3:测试


DNS(域名系统)是互联网的 “导航系统”,让我们能通过好记的域名(如www.baidu.com)访问网站,而不是复杂的 IP 地址(如 14.215.177.38)。对于 Linux 初学者来说,理解 DNS 的工作原理并掌握其配置方法,是搭建网络服务的重要基础。

一、域名服务基础:从 “名字” 到 “地址” 的转换

1️⃣什么是域名?

域名(Domain Name)是互联网上计算机或服务器的 “名字”,由一串用点分隔的字符组成,必须以点结尾(如www.qq.com.cn.),我们日常看到的 “www.qq.com.cn” 只是简略形式。

它的核心作用是替代 IP 地址:人类对 “www.baidu.com” 的记忆远比对 “14.215.177.38” 容易,而 DNS 的任务就是把 “名字” 翻译成 “地址”。

通过域名系统(DNS)实现域名与IP地址的映射。

2️⃣什么是 DNS?

DNS 就是用于将网站的域名转换为IP地址的系统。DNS(域名系统)是一个分布式数据库,负责存储域名与 IP 地址的对应关系,并提供查询服务。简单说,当你在浏览器输入 “www.example.com” 时:

  1. 你的电脑会向 DNS 服务器发送查询:“这个域名对应的 IP 是多少?”
  2. DNS 服务器通过一系列查询,找到对应的 IP(如 93.184.216.34)并返回;
  3. 电脑用 IP 地址连接服务器,获取网页内容。

DNS 的关键参数:

  • 使用端口:TCP 和 UDP 的 53 端口;
  • 长度限制:每级域名最长 63 字符,总长度不超过 253 字符。

3️⃣DNS 用 TCP 还是 UDP?

DNS 根据场景选择协议,初学者只需记住:

  • UDP:用于常规查询(如浏览器查域名),速度快、数据量小(≤512 字节),适合缓存查询、迭代查询;
  • TCP:用于大量数据传输(如主从服务器同步数据)、大型响应(>512 字节),或防止攻击,因为 TCP 需要建立连接,更可靠。

二、DNS 服务器:各司其职的 “导航站”

DNS 系统是分层的,不同服务器负责不同环节,就像 “国家 - 省 - 市” 的行政体系:

1️⃣根域名服务器

DNS 的 “顶层领导”,全球共 13 组(标识为 A-M),不直接解析域名,而是指引查询到对应的顶级域名服务器。例如:

  • A 根服务器:管理单位INTERNIC.NET,位于美国弗吉尼亚州,IP 为 198.41.0.4;
  • M 根服务器:由 WIDE Project 管理,位于日本东京,IP 为 202.12.27.33。

2️⃣顶级域名服务器

负责 “顶级域名”(如.com、.org、.cn)的解析,指引查询到下一级服务器。例如:

  • .com 服务器:管理所有以.com 结尾的域名;
  • .cn 服务器:管理中国国家域名(如.qq.com.cn的顶级域是.cn)。

3️⃣权威域名服务器

“具体管事的”,保存某一域名的详细解析记录(如www.baidu.com的 IP),是该域名的 “官方服务器”(如阿里云 DNS、腾讯云 DNS)。

4️⃣本地 DNS 服务器

你家宽带或公司网络提供的 DNS(如 114.114.114.114),负责替你完成整个查询过程:

  1. 先查自己的缓存,有结果直接返回;
  2. 没有则依次向根、顶级、权威服务器查询,最后把结果返回给你,并缓存下来。

5️⃣转发服务器

可选的 “中间代理”,接收查询后转发给其他 DNS 服务器,适合大型网络减少重复查询(比如公司内网用转发服务器统一处理外部查询)。

三、正向解析与反向解析:DNS 的两种 “查询模式”

DNS 的核心是 “地址对应关系”,分为两种查询方向:

1️⃣正向解析:域名→IP

最常用的功能,根据域名查 IP。例如:输入 “www.baidu.com”,得到 IP“14.215.177.38”。

2️⃣反向解析:IP→域名

根据 IP 查域名,用途较少但重要(如反垃圾邮件验证:验证发送邮件的 IP 是否对应宣称的域名)。例如:输入 “14.215.177.38”,得到 “www.baidu.com”。

3️⃣区域(Zone)的概念

每台 DNS 服务器只负责一小部分 “范围”(称为 “区域”):

  • 正向区域:存储域名→IP 的记录(如xykj.com区域);
  • 反向区域:存储 IP→域名的记录(如 192.168.141.x 网段的区域)。

四、DNS 查询方式:递归与迭代

DNS 查询有两种方式,就像 “找人” 的两种策略:

1️⃣递归查询:“你帮我搞定”

客户端(如你的电脑)向本地 DNS 服务器查询时,本地 DNS 会 “包办到底”:如果自己不知道,就主动向其他服务器查询,直到拿到结果返回给你。
特点:只需发一次请求,等待结果即可(类似 “我问快递员我的快递在哪,他查清楚告诉我市井”)。

2️⃣迭代查询:“你告诉我下一步找谁”

本地 DNS 服务器向其他服务器(如根、顶级服务器)查询时,对方不会直接给结果,而是告诉你 “去问下一个服务器”。本地 DNS 需要自己一步步找下去。
特点:可能发多次请求,目标不断变化(类似 “我问路人邮局在哪,他说‘前面路口问交警’,我再去问交警”)。

3️⃣完整查询过程(以www.linuxprobe.com为例)

  1. 你的电脑先查本地缓存和 hosts 文件(hosts 文件优先级高于 DNS,Linux 路径为 /etc/hosts,Windows 为 C:\Windows\System32\drivers\etc\hosts);
  2. 缓存和 hosts 中没有,就向本地 DNS 服务器发送递归查询;
  3. 本地 DNS 服务器查自己的缓存,没有则开始迭代查询:
    • 问根服务器:“www.linuxprobe.com在哪?” 根服务器说:“去问.com 顶级服务器”;
    • 问.com 顶级服务器,对方说:“去问linuxprobe.com的权威服务器”;
    • 问linuxprobe.com的权威服务器,得到 IP 地址;
  4. 本地 DNS 服务器将结果缓存,再返回给你的电脑。

五、Linux 构建缓存域名服务器

缓存 DNS 服务器的作用是 “记住” 之前的查询结果,让后续查询更快(类似 “记笔记”),适合内网环境(如公司、学校)。

1️⃣为什么需要缓存 DNS?

  • 提高速度:重复访问同一域名时,直接用缓存结果,不用再查外部服务器;
  • 节省流量:减少对外部 DNS 的依赖,降低出口带宽占用;
  • 增强安全:可屏蔽恶意网站,限制内网用户访问风险站点;
  • 方便管理:内网设备用缓存服务器,统一解析规则。

2️⃣工具:BIND(最常用的 DNS 软件)

BIND(Berkeley Internet Name Domain)是 Linux 上主流的 DNS 服务软件,通过以下步骤安装和控制:

  1. 安装:sudo apt install bind9(Debian/Ubuntu)或yum install bind(CentOS);
  2. 服务控制:systemctl start named(启动)、systemctl status named(查看状态)。

3️⃣配置缓存 DNS 服务器(步骤)

以 “192.168.141.130” 作为缓存服务器为例:

步骤 1:修改主配置文件

主配置文件为/etc/bind/named.conf.options,关键设置:

options

directory "/var/cache/bind";  # 数据文件存放目录
recursion yes;  # 启用递归查询(必须,因为缓存服务器要替客户端查询)
listen-on { any; };  # 监听所有网络接口
allow-query { any; };  # 允许所有客户端查询
forwarders {  # 转发器:自己查不到时,转发给这些服务器223.5.5.5;  # 阿里云DNS114.114.114.114;  # 国内通用DNS
};
dnssec-validation auto;  # 自动验证DNS数据有效性
步骤 2:重启服务并测试

bash

sudo systemctl restart named  # 重启服务
sudo systemctl stop firewalld  # 关闭防火墙(避免端口被挡)

在客户端(如 192.168.141.128)的/etc/resolv.conf中设置 DNS 为 192.168.141.130,然后用nslookup www.baidu.com测试:如果能返回 IP,说明配置成功。

六、Linux 构建主从域名服务器

主从域名服务器用于 “热备份”:主服务器负责维护数据,从服务器同步主服务器的数据,避免主服务器故障导致解析失效。

1️⃣主从服务器的角色

  • 主域名服务器:拥有某区域的 “决定权”,维护该区域的解析记录(如xykj.com的 A 记录),可自主修改数据;
  • 从域名服务器:同步主服务器的数据,提供相同的解析服务,作为备份(不能自己修改数据)。

2️⃣配置示例(环境:主服务器 192.168.141.130,从服务器 192.168.141.129)

步骤 1:配置主服务器
  1. 安装 bind9:sudo apt install bind9
  2. 修改区域配置文件/etc/bind/named.conf.default-zones,添加正向区域:

    zone

    zone "xykj.com" {type master;  # 主服务器file "/etc/bind/xykj.local";  # 区域数据文件路径
    };
    
  3. 创建区域数据文件/etc/bind/xykj.local(存储域名→IP 记录):

    zone

    $TTL 604800  # 记录在缓存中存活7天
    @ IN SOA xykj.com. admin.xykj.com. (2  ; 序列号(每次修改+1)604800  ; 刷新时间(7天,从服务器多久查一次主服务器)86400   ; 重试时间(1天,查不到时多久再试)2419200 ; 过期时间(28天,超过多久不再同步)604800  ; 否定缓存时间(7天,查不到的记录缓存多久)
    )
    @ IN NS xykj.com.  # 域名服务器记录
    @ IN A 192.168.141.131  # xykj.com对应IP
    www IN A 192.168.141.131  # www.xykj.com对应IP
    
  4. 检查配置:named-checkzone xykj.com /etc/bind/xykj.local,显示 “OK” 则有效;
  5. 启动服务:systemctl start named
步骤 2:配置从服务器
  1. 安装 bind9:sudo apt install bind9
  2. 修改区域配置文件/etc/bind/named.conf.default-zones,添加正向区域(指向主服务器):

    zone

    zone "xykj.com" {type slave;  # 从服务器masters { 192.168.141.130; };  # 主服务器IPfile "/var/cache/bind/xykj.local.slave";  # 同步的文件路径
    };
    

  3. 启动服务:systemctl start named,从服务器会自动同步主服务器的数据。
步骤 3:测试

在客户机(192.168.141.128)的/etc/resolv.conf中设置 DNS 为 192.168.141.129,用nslookup www.xykj.com测试:能返回 192.168.141.131,说明从服务器工作正常。

http://www.lryc.cn/news/600442.html

相关文章:

  • STM32 FreeRTOS基础
  • 垃圾回收算法与垃圾收集器
  • cacti的命令执行和回显
  • JVM参数
  • 学习游戏制作记录(剑投掷技能)7.26
  • Flutter开发实战之原生平台集成
  • 暑期算法训练.9
  • 如何查找php配置文件php.ini
  • ICMPv6报文类型详解表
  • 面条式代码(Spaghetti Code)
  • 编程与数学 03-002 计算机网络 06_网络层职责
  • RK3568笔记九十三:基于RKNN Lite的YOLOv5目标检测
  • 【Spring AI】SiliconFlow-硅基流动
  • MySQL操作进阶
  • 备份一下我的 mac mini 的环境变量配置情况
  • Android Studio Profiler工具使用流程
  • MyBatis_3
  • 零基础学后端-PHP语言(第二期-PHP基础语法)(通过php内置服务器运行php文件)
  • 【安全漏洞】防范未然:如何有效关闭不必要的HTTP请求方法,保护你的Web应用
  • Java中List集合对象去重及按属性去重
  • linux内核电源管理
  • Java同步锁性能优化:15个高效实践与深度解析
  • [spring6: Mvc-函数式编程]-源码解析
  • 栈----2.最小栈
  • 【VLLM】open-webui部署模型全流程
  • JavaWeb(苍穹外卖)--学习笔记11(Filter(过滤器) 和 Interceptor(拦截器))
  • JavaScript中.splice()的用法
  • 从压缩到加水印,如何实现一站式图片处理
  • 动态SQL标签
  • 【动态规划-斐波那契数列模型】理解动态规划:斐波那契数列的递推模型