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

编写实现一个简易的域名服务器

文章目录

  • 编写实现一个简易的域名服务器
  • 完成如下测试:
  • 另一台电脑的域名服务器设为你的IP,能正常解析所有域名
    • **一、实现流程:**
      • **步骤 1:安装 BIND 9**
        • 1.1 在Linux操作系统上执行如下指令,安装 BIND 9
      • **步骤 2:修改 BIND 配置文件**
        • 2.1 编辑主配置文件 `/etc/bind/named.conf.options`:
        • 2.2 我使用的是`nano` 编辑器,在完成BIND配置文件的修改后保存流程如下:
          • **保存文件**:按下 **`Ctrl + O`进行保存操作。
          • **确认文件名为`/etc/bind/named.conf.options`:**直接按 **`Enter`** 键确认保存。
          • **退出编辑器**:保存之后,按 **`Ctrl + X`** 退出 `nano` 编辑器。
      • **步骤 3:重启 BIND 服务器**
        • 3.1 执行以下命令,重启BIND服务器,使配置生效:
        • 3.2 检查 BIND 是否正常运行:
      • **步骤 4:配置客户端使用你的 DNS 服务器**
        • 4.1 Windows 客户端 (可通过 ipconfig 获取IP地址)
        • 4.2 Linux 客户端(可通过 hostname -I 或者 ifconfig 获取IP地址)
      • **步骤 5:测试 DNS 解析结果**
        • 5.1 背景介绍:
          • 1. 权威应答(Authoritative Answer)
          • 2. 非权威应答(Non-Authoritative Answer)
        • 5.2 在客户端 Windows运行(若已完成网络配置):
        • 5.3 在客户端 Linux运行:
        • 5.4 测试结果
    • **二、参考链接**
      • [nslookup 非权威应答 权威服务器 权威应答](https://blog.csdn.net/weixin_34161083/article/details/92648205?ops_request_misc=%257B%2522request%255Fid%2522%253A%25224c727753035767d58e98aefa5943df4e%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=4c727753035767d58e98aefa5943df4e&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-3-92648205-null-null.142^v102^control&utm_term=%E6%9D%83%E5%A8%81%E5%BA%94%E7%AD%94&spm=1018.2226.3001.4187)
      • DNS
      • 使用nslookup定位权威域名服务器得到权威应答

编写实现一个简易的域名服务器

完成如下测试:

另一台电脑的域名服务器设为你的IP,能正常解析所有域名

在这里插入图片描述

一、实现流程:

步骤 1:安装 BIND 9

1.1 在Linux操作系统上执行如下指令,安装 BIND 9
sudo apt update
sudo apt install bind9 -y

步骤 2:修改 BIND 配置文件

2.1 编辑主配置文件 /etc/bind/named.conf.options
sudo nano /etc/bind/named.conf.options

options {} 部分,做如下修改:

options {
    directory "/var/cache/bind";  // 缓存目录

    // 启用递归解析
    recursion yes;

    // 设置允许递归查询的 IP 范围
    allow-recursion { any; };

    // 设置转发 DNS 服务器
    forwarders {
        8.8.8.8;   
        8.8.4.4;   
        1.1.1.1;   
    };
    dnssec-validation no;

    // 监听所有 IPv6 地址
    listen-on-v6 { any; };

    // 监听所有 IPv4 地址
    listen-on { any; };

};
2.2 我使用的是nano 编辑器,在完成BIND配置文件的修改后保存流程如下:
  1. 保存文件:按下 **Ctrl + O进行保存操作。
  2. **确认文件名为/etc/bind/named.conf.options:**直接按 Enter 键确认保存。
  3. 退出编辑器:保存之后,按 Ctrl + X 退出 nano 编辑器。

步骤 3:重启 BIND 服务器

3.1 执行以下命令,重启BIND服务器,使配置生效:
sudo systemctl restart bind9
3.2 检查 BIND 是否正常运行:
sudo systemctl status bind9

测试结果:

lzc@Annihilation:~$ sudo systemctl restart bind9
lzc@Annihilation:~$ sudo systemctl status bind9
● named.service - BIND Domain Name Server
     Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; preset: enabled)
     Active: active (running) since Mon 2025-03-24 18:33:53 CST; 7s ago
       Docs: man:named(8)
   Main PID: 1227 (named)
     Status: "running"
      Tasks: 82 (limit: 9359)
     Memory: 23.8M ()
     CGroup: /system.slice/named.service
             └─1227 /usr/sbin/named -f -u bind

Mar 24 18:33:53 Annihilation named[1227]: configuring command channel from '/etc/bind/rndc.key'
Mar 24 18:33:53 Annihilation named[1227]: command channel listening on ::1#953
Mar 24 18:33:53 Annihilation named[1227]: managed-keys-zone: loaded serial 3
Mar 24 18:33:53 Annihilation named[1227]: zone 0.in-addr.arpa/IN: loaded serial 1
Mar 24 18:33:53 Annihilation named[1227]: zone 255.in-addr.arpa/IN: loaded serial 1
Mar 24 18:33:53 Annihilation named[1227]: zone localhost/IN: loaded serial 2
Mar 24 18:33:53 Annihilation named[1227]: zone 127.in-addr.arpa/IN: loaded serial 1
Mar 24 18:33:53 Annihilation named[1227]: all zones loaded
Mar 24 18:33:53 Annihilation named[1227]: running
Mar 24 18:33:53 Annihilation systemd[1]: Started named.service - BIND Domain Name Server.>

步骤 4:配置客户端使用你的 DNS 服务器

4.1 Windows 客户端 (可通过 ipconfig 获取IP地址)
  1. 打开 控制面板网络和Internet网络和共享中心
  2. 点击 更改适配器设置
  3. 右键 当前网络连接,选择 属性
  4. 双击 Internet 协议版本 4 (TCP/IPv4),选择 手动设置 DNS 服务器
    • 首选 DNS 服务器192.168.73.53(当前服务器的 IP地址)
    • 备用 DNS 服务器:留空或填 8.8.8.8
4.2 Linux 客户端(可通过 hostname -I 或者 ifconfig 获取IP地址)
  1. 编辑 /etc/resolv.conf

    sudo nano /etc/resolv.conf
    
  2. 修改 nameserver

    nameserver 172.28.32.182
    

    保存并退出(若使用nano编辑器,则操作流程见2.2)

步骤 5:测试 DNS 解析结果

5.1 背景介绍:
1. 权威应答(Authoritative Answer)
  • 定义:如果 DNS 服务器是某个域名的 权威服务器(Authoritative Name Server),它直接存储该域名的 正式 DNS 记录(A 记录、MX 记录等)。当客户端查询时,服务器会直接返回准确的、权威性的 DNS 解析结果,这就是权威应答
  • 特点
    • 来自 权威 DNS 服务器(如根服务器、顶级域名服务器或具体域名的权威解析服务器)。
    • 该 DNS 服务器 直接管理 该域名的数据。

2. 非权威应答(Non-Authoritative Answer)
  • 定义:当 DNS 服务器 不是 查询域名的权威服务器,而是从缓存递归查询其他服务器获取到的结果,这种应答称为非权威应答
  • 特点
    • 递归 DNS 服务器缓存 DNS 服务器 返回(如本地 ISP 的 DNS 服务器)。
    • 结果来自于其他权威服务器的查询或缓存,而非自身管理的正式 DNS 记录
5.2 在客户端 Windows运行(若已完成网络配置):
nslookup google.com
5.3 在客户端 Linux运行:
nslookup google.com 172.28.32.182

或者:

dig google.com @172.28.32.182
5.4 测试结果

5.4.1 非权威应答:

lzc@Annihilation:~$ nslookup bilibili.com 172.28.32.182
Server:         172.28.32.182
Address:        172.28.32.182#53

Non-authoritative answer:
Name:   google.com
Address: 142.250.196.206
Name:   google.com
Address: 2404:6800:4004:822::200e
lzc@Annihilation:~$ nslookup bilibili.com 172.28.32.182
Server:         172.28.32.182
Address:        172.28.32.182#53

Non-authoritative answer:
Name:   bilibili.com
Address: 119.3.70.188
Name:   bilibili.com
Address: 8.134.50.24
Name:   bilibili.com
Address: 47.103.24.173
Name:   bilibili.com
Address: 139.159.241.37

5.4.2 权威应答:

lzc@Annihilation:~$ host -t ns bilibili.com
//查询权威域名服务器
bilibili.com name server ns4.dnsv5.com.
bilibili.com name server ns3.dnsv5.com.
lzc@Annihilation:~$ nslookup bilibili.com ns4.dnsv5.com
Server:         ns4.dnsv5.com
Address:        49.7.107.152#53

Name:   bilibili.com
Address: 139.159.241.37
Name:   bilibili.com
Address: 8.134.50.24
Name:   bilibili.com
Address: 47.103.24.173
Name:   bilibili.com
Address: 119.3.70.188
lzc@Annihilation:~$ nslookup ns4.dnsv5.com 172.28.32.182
Server:         172.28.32.182
Address:        172.28.32.182#53

Non-authoritative answer:
Name:   ns4.dnsv5.com
Address: 112.80.181.106
Name:   ns4.dnsv5.com
Address: 1.12.0.16
Name:   ns4.dnsv5.com
Address: 43.140.78.52
Name:   ns4.dnsv5.com
Address: 1.12.0.19
Name:   ns4.dnsv5.com
Address: 49.7.107.152
Name:   ns4.dnsv5.com
Address: 117.135.128.152
Name:   ns4.dnsv5.com
Address: 117.89.178.200
Name:   ns4.dnsv5.com
Address: 240d:c000:f06f:fefe::f

二、参考链接

nslookup 非权威应答 权威服务器 权威应答

DNS

使用nslookup定位权威域名服务器得到权威应答

http://www.dtcms.com/a/111835.html

相关文章:

  • 长龙通信机CAN数据查看(工具版)
  • AI Agent设计模式一:Chain
  • 出现次数最多的子树元素和——深度优先搜索
  • 如何将Android 应用上传到国内各大应用市场
  • Webpack中loader的作用。
  • 【AI4CODE】5 Trae 锤一个基于百度Amis的Crud应用
  • AI+OCR:解锁数字化新视界
  • 33、web前端开发之JavaScript(二)
  • KingbaseES之KDts迁移Mysql
  • 【11408学习记录】英语写作黄金模板+语法全解:用FTC数据泄漏案掌握书信结构与长难句拆解(附思维导图)
  • 【统计方法】LASSO筛变量
  • 循环引用问题和专门用来解决的weak_ptr
  • 第二十八章:Python可视化图表扩展-和弦图、旭日图、六边形箱图、桑基图和主题流图
  • 算法设计学习8
  • 从零构建大语言模型全栈开发指南:第五部分:行业应用与前沿探索-5.2.3前沿方向:MoE架构、世界模型与具身智能
  • html5炫酷3D文字效果项目开发实践
  • Flink 1.20 Kafka Connector:新旧 API 深度解析与迁移指南
  • 泰博云平台solr接口存在SSRF漏洞
  • Docker安装、配置Mysql5.7
  • hackmyvm-Principle
  • Java 大视界 -- 基于 Java 的大数据机器学习模型在图像识别中的迁移学习与模型优化(173)
  • 软路由安装指南
  • MySQL体系架构
  • leetcode数组-移除元素
  • 基于RDK X3的“校史通“机器人:SLAM导航+智能交互,让校史馆活起来!
  • SpringKafka消息消费:@KafkaListener与消费组配置
  • 大模型如何优化数字人的实时交互与情感表达
  • 【小沐杂货铺】基于Three.JS绘制三维数字地球Earth(GIS 、WebGL、vue、react)
  • Oracle SQL 执行计划分析与优化指南
  • autoconf 笔记250404