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

文章目录

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

完成如下测试:

另一台电脑的域名服务器设为你的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定位权威域名服务器得到权威应答

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ac157ol

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值