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

# Linux服务Day04: 一站式DNS入门(原理+单域+多域+Web实战+分离解析)

前言

DNS 是互联网最基础、最重要的服务之一,没有DNS我们就只能记一串难用的IP地址访问网站。
今天我们完整掌握:
✅ DNS 是什么、怎么工作
✅ 单域名DNS解析搭建
✅ 多域名+Web虚拟主机实战
✅ DNS 分离解析(不同来源IP解析到不同IP)


一、DNS 服务基础(必懂理论)

1.1 DNS 到底是什么?

  • DNS(Domain Name System) = 域名解析服务,把好记的域名 → 翻译成IP地址
  • 相当于互联网的114查号台/导航员
  • 访问流程:客户机使用域名访问 → 向DNS服务器发起解析请求 → DNS 服务器返回给客户端对应 IP → 客户端根据返回的IP访问服务器 → 服务器向客户端提供数据和服务

1.2 两种解析方式

  • 正向解析(最常用):域名 → IP
  • 反向解析(不常用):IP → 域名

1.3 DNS 分布式结构

域名是层级结构,所有域名最后都以.(根域)结尾:
根域 → 一级域 → 二级域 → 三级域 → 主机站点

常见一级域名:

  • 国家域:.cn.us.hk
  • 组织域:.com(商业机构公司)、.net(网络服务机构)、.edu(教育机构)、.org(公益)、.gov(政府部门)

DNS 分布详解:

域名是从右往左读的,越靠右级别越高!最右边的.就是根域


完整层级结构(详解)

  1. 根域 · 最高级(.)
  • 写法:.(一个点)
  • 全球只有13组根域服务器
  • 所有域名的最顶端、起点
  • 平时我们看不见,系统自动补全
  • 比如:www.baidu.com.真实完整写法(最后有个点)
  1. 一级域(顶级域) 根域的下一级,分两类:
  • 国家域.cn(中国)、.us.hk
  • 组织域.com.net.edu.org.gov
  1. 二级域 在一级域前面,自己注册的名字:
  • baidu.com
    • .com一级域
    • baidu二级域
  • tb.cn
    • .cn一级域
    • tb二级域
  1. 三级域(子域) 二级域前面再细分:
  • image.baidu.com
  • pan.baidu.com
  • www.jx.edu.cn
  1. 主机站点(最前面) 具体服务器的名字:
  • www
  • ftp
  • mail

举个最经典例子:www.baidu.com从右往左看:

  1. .→ 根域(隐藏)
  2. com→ 一级域(组织域)
  3. baidu→ 二级域(你买的域名)
  4. www→ 主机名(服务器)

结构顺序:
根域 → 一级域 → 二级域 → 主机站点


举课堂实验例子www.tb.cn

  1. .根域
  2. cn一级域(中国)
  3. tb二级域
  4. www主机名

从右往左读,点越靠右级别越高!
根域(.)→ 一级 → 二级 → 主机名


1.4 FQDN 完全合格域名

FQDN:Fully Qualified Domain Name,完全合格域名 / 全域名
定义:主机名 + 域名,是互联网上完整、唯一、精确的主机地址。
格式:主机名.域名(主机名.二级域名.顶级域名)
示例:www.baidu.com

  • www:主机站点
  • baidu.com:域名

1.5 域名管理机构

  • IANA(Internet Assigned Numbers Authority):互联网数字分配机构
    • 整个域名系统的最高权威机构
    • 主管DNS根、.int、.arpa等国际化域名资源
  • CNNIC(China Internet Network Information Center):中国互联网络信息中心
    • 主管国家顶级域.cn
  • 域名注册/购买域名商:
    • 阿里云(https://www.aliyun.com/)
    • 华为云(https://www.huaweicloud.com/)
    • 腾讯云(https://www.cloud.tencent.com/)

二、单域 DNS 解析(BIND 服务搭建)

本章实战:搭建一台DNS服务器,解析tb.cn域名。

2.1 BIND 服务概述

  • BIND(Berkeley Internet Name Daemon):伯克利 Internet域名服务。
    • 官方站点:https://www.isc.org/

DNS(Domain Name Server):域名解析服务

Linux 下最常用DNS软件 =BIND

  • 软件包:bindbind-chroot(运行时的虚拟根环境) ,bind-utils
  • 服务名:named
  • 端口:TCP/UDP 53
  • 主配置文件:/etc/named.conf(记录负责哪些域名)
  • 地址库文件:/var/named/xxx.zone(地址库文件记录具体域名的对应IP)

2.2 实验环境

  • DNS服务器:server 192.168.8.101(DNS 服务器,提供解析)
  • 客户端:client 192.168.8.100(DNS 客户端,发起解析请求)

2.3 部署步骤

① server主机安装bind,bind-chroot,bind-utils

[root@server ~]# dnf -y install bind bind-chroot bind-utils #1.安装软件[root@server ~]# cp -p /etc/named.conf /opt/ #备份主配置文件,此文件易写错

② 修改主配置 /etc/named.conf

  • /etc/named.conf主要记录本机可以解析哪些域名及域名对应的地址库文件
  • 修改主配置文件,支持tb.cn域名,地址库文件/var/named/tb.cn.zone

若希望所有ip都监听,或有多地址需要监听53端口,可以这样写: listen-on port 53 { any; };

options{listen-on port53{192.168.8.101;};#192.168.8.101监听53端口,注意空格directory"/var/named";#地址库文件 存储位置allow-query{any;};#允许任意主机查询(访问),注意空格};zone"tb.cn"IN{#指定负责的域名typemaster;#此服务器为主服务器file"tb.cn.zone";#此域名对应的地址库文件(/var/named/tb.cn.zone)};

检查语法:

named-checkconf /etc/named.conf#检查主配置文件语法是否有误

③ 编辑地址库文件

  • server主机修改地址库文件/var/named/tb.cn.zone,完成如下解析
  • www.tb.cn 解析为 1.2.3.4
  • ftp.tb.cn 解析为 5.6.7.8
[root@server ~]# cp -p /var/named/named.localhost /var/named/tb.cn.zone #使用模板拷贝地址库文件,一定要保留属性[root@server ~]# ls -l /var/named/tb.cn.zone #查看地址库文件属性-rw-r-----1root named1524132022/var/named/tb.cn.zone
  • 使用named-checkzone 域名 [地址库文件] 检查地址库文件语法是否有误
  • NS记录为 NameServer,指定DNS服务器地址
  • A记录 为 正向解析记录,解析域名对应的IP地址

编辑地址库:

[root@server ~]# vim /var/named/tb.cn.zone #修改地址库文件...此处省略1万字... tb.cn. NS server#声明DNS服务器server A192.168.8.101#DNS服务器是192.168.8.101。www A1.2.3.4#解析记录(www.tb.cn,域名自动补齐)ftpA5.6.7.8#解析记录(ftp.tb.cn,域名自动补齐)[root@server ~]# named-checkzone tb.cn /var/named/tb.cn.zone #检查地址库文件语法[root@server ~]# systemctl start named #启动服务[root@server ~]# systemctl enable named #将服务设置为开机自启

2.4 客户端测试

配置 DNS 指向服务器:

echo"nameserver 192.168.8.101">/etc/resolv.conf

/etc/resolv.conf是 Linux 系统的 DNS 客户端配置文件

安装测试工具并验证:

dnf-yinstallbind-utilsnslookupwww.tb.cn# 解析为1.2.3.4nslookupftp.tb.cn# 解析为5.6.7.8

排错方法: 如果nslookup不行,从以下四个角度来排查问题:
1.防火墙或者selinux没关。 关掉即可再次进行尝试
2.DNS 服务没启动 在服务端启动一下服务:systemctl restart named , systemctl enable named并且查看是否监听 53 端口:ss -nutlp | grep named
3.客户端 DNS 地址没配置对cat /etc/resolv.conf看看自己IP地址对不对,只有输出:
’nameserver IP地址‘ 才是正常的
4.两台机器网络不通 直接ping一下服务端看网络是不是有问题


标准 DNS 解析完整流程(客户端 + 服务端)

  1. 客户端发起域名解析请求
  2. 优先查询本地 hosts 文件
    • 若找到对应域名 → 直接返回 IP,流程结束
  3. 若 hosts 无记录,读取/etc/resolv.conf
    • 获取配置的 DNS 服务器地址
  4. 客户端向 DNS 服务器发送 DNS 查询报文
  5. DNS 服务器收到请求
  6. 服务器先查询主配置文件,主配置文件告诉服务端去哪里读 zone 文件,然后服务器查询zone文件(自身区域数据库文件(zone 文件)
    • 有记录 → 构造 DNS 响应报文,返回对应 IP
    • 无记录 → 按配置进行递归/迭代查询,向上级 DNS 发起请求
  7. 最终将查询到的 IP 地址返回给客户端

三、多域 DNS + Web 虚拟主机 实战

本章目标:
DNS解析www.baidu.com→ 指向Web服务器,实现域名访问网站。

3.1 实验环境

  • client:192.168.8.100(测试客户端)。
  • server:192.168.8.101(DNS 服务器)。
  • web:192.168.8.102(Web 服务器,提供网页服务)。

3.2 部署 Web 虚拟主机(192.168.8.102)

① 安装httpd

dnf-yinstallhttpd

② 虚拟主机配置

vim/etc/httpd/conf.d/mysite.conf<VirtualHost *:80>ServerName www.baidu.com# 网站域名DocumentRoot /var/www/baidu# 网页根目录</VirtualHost>

③ 创建网页

mkdir/var/www/baiduecho"I am local baidu haha">/var/www/baidu/index.html

④ 重启服务并测试

systemctl restart httpd ss-nutlp|grep:80# 检查80端口curl192.168.8.102# 本地访问测试

3.3 DNS 配置(server 主机新增baidu.com域)

① 修改 named.conf 追加

vim/etc/named.conf zone"baidu.com"IN{typemaster;file"baidu.com.zone";};

语法检查:named-checkconf /etc/named.conf

② 创建地址库

cp-p/var/named/named.localhost /var/named/baidu.com.zone

③ 编辑解析记录

baidu.com. NS server server A192.168.8.101 www A192.168.8.102# www.baidu.com → Web服务器IP

语法检查:named-checkzone baidu.com /var/named/baidu.com.zone

④ 重启DNS

systemctl restart named

3.4 客户端测试

nslookupwww.baidu.com# 解析为192.168.8.102curlwww.baidu.com# 成功访问Web服务器首页内容

能看到网页内容即成功。


四、DNS 分离解析(高级功能)

4.1 什么是分离解析?

定义:不同来源 IP 的客户端,访问同一个域名,解析到不同 IP。
作用:负载均衡、就近访问、分流压力,典型场景如 CDN、12306 多地区镜像节点。
核心:用view匹配客户端 IP,调用不同地址库,返回不同解析结果。

4.2 核心规则

  • 使用view {}匹配客户端来源IP
  • 一旦用view,所有zone必须写在view里面不能单独存在

配置结构:

view"名称1"{match-clients{匹配IP;};zone"域名"IN{typemaster;file"地址库1";};};view"名称2"{match-clients{any;};zone"域名"IN{typemaster;file"地址库2";};};

4.3 实验需求

  • 删除原tb.cn配置,避免冲突。
  • client(192.168.8.100):www.baidu.com → 192.168.8.102。
  • web(192.168.8.102):www.baidu.com → 10.20.30.40。

4.4 配置步骤

① 修改主配置 named.conf

vim/etc/named.conf view"vip"{# 匹配客户端192.168.8.100match-clients{192.168.8.100;};zone"baidu.com"IN{typemaster;file"baidu.com.zone";};};view"other"{# 匹配其他所有客户端match-clients{any;};zone"baidu.com"IN{typemaster;file"baidu.com.other";};};

语法检查:named-checkconf /etc/named.conf

② 新建第二套地址库

cp-p/var/named/baidu.com.zone /var/named/baidu.com.other

③ 编辑baidu.com.other,修改解析 IP

baidu.com. NS server server A192.168.8.101 www A10.20.30.40

语法检查:named-checkzone baidu.com /var/named/baidu.com.other

重启服务:systemctl restart named

4.5 分离解析测试

  • client(192.168.8.100):nslookup www.baidu.com → 192.168.8.102
  • web(192.168.8.102):配置 DNS 后nslookup www.baidu.com → 10.20.30.40
    分离解析成功!

五、DNS 两种查询方式

  • 递归解析:户端向 DNS 服务器发起请求,直接等待最终解析结果。
    • 客户端 → DNS,直接等结果(用户端)
  • 迭代解析:DNS 服务器逐级向根域、顶级域、二级域查询,最终返回结果给客户端。
    • DNS → 根→顶级→二级,一层层查(服务器间)

六、高频易错点(必看)

  1. /etc/named.conf括号、分号、空格不能错
  2. 复制区域库必须加-p保留权限,否则启动失败
  3. view 一旦使用,所有 zone 必须放进 view
  4. 测试命令:nslookup需要装bind-utils
  5. DNS端口:53,Web端口:80

七、全文总结

本篇完整覆盖云计算运维 DNS 核心内容:

  1. DNS 域名解析原理与结构
  2. BIND 单域解析完整部署
  3. 多域 DNS + Web 虚拟主机实战
  4. DNS 分离解析(view 高级配置)
  5. 命令、配置、测试、排错一站式掌握
http://www.jsqmd.com/news/642691/

相关文章:

  • 基于Qwen3.5-9B-AWQ-4bit的SpringBoot微服务智能开发全流程
  • 简历敢写“精通RAG“? 阿里一面挂了! 这3个夺命连环问,你能扛住几个?
  • 爱毕业aibiye及其他六家专业辅导团队,凭借高效的在线服务在国内论文指导市场占据重要地位
  • [CI/CD] 排障实录:内网环境下 Jenkins + ArgoCD 流水线搭建
  • RVC语音转换效果展示:AI歌手专辑制作全流程实录分享
  • 5分钟搞定PaddleOCR的Docker部署(附常见报错解决方案)
  • 微信直连Claude Code,多账号也能用
  • Ostrakon-VL 扫描终端 Python 入门实战:3 步实现图像数据自动化处理
  • 终极指南:如何使用Python实现百度网盘直链解析与高速下载
  • ROS手眼标定实战:JAKA机械臂+ArUco标定板全流程避坑指南
  • 微信聊天数据永久保存的终极解决方案:如何用WeChatMsg高效导出并深度分析
  • Linux 的 pathchk 命令
  • **发散创新:基于日志指标的Go语言微服务可观测性实践**在现代云原生架构中,**日志 + 指标+
  • (一)Arcpy 批量提取多面要素质心并构建空间索引
  • AI对话系统可操纵购物选择
  • 计算机组成原理知识学习助手:基于GTE-Base-ZH的问答系统
  • 别只盯着DevTools了!用OpenHarmony的HiSysEvent给你的Flutter应用做一次“线上体检”
  • bootstrap怎么实现响应式的底部固定导航栏
  • Qwen3.5-35B-A3B-AWQ-4bit部署案例:高校实验报告图像数据自动解析平台
  • 太理Web历年真题解析—期末备考指南(珍藏版)
  • Linux 的 pinky 命令
  • Qwen-Image-Lightning部署教程:Mac M系列芯片Metal后端适配进展
  • 告别重复造轮子:Codex写脚本
  • 深入解析 Pandas 的 merge_asof 方法
  • 阿里小云KWS模型在安防对讲系统中的应用
  • Claude Desktop 一体化创作站:配置 11 个 MCP 服务器
  • # 发散创新:基于Python与高德地图API的智能位置服务开发实战在现代移动互联网应用
  • 语音芯片是如何让机器“开口说话”的?一文读懂语音芯片工作原理及选型指南
  • gtest断言全指南:除了EXPECT_EQ还有这些黑科技(含自定义断言模板)
  • 基于单片机的智能太阳能热水器设计(有完整资料)