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

Lesson 7 DNS域名解析服务器

域名服务器说明

  • 根域名服务器: 全球总计只有十三台服务器,记录了所有顶级域名服务器服务器的地址。

    • 根域名服务器知道 *.com,*.net,*.uk,*.jp..... 等等这些服务器的地址。

  • 顶级域名服务器:记录了所有权威域名服务器的地址 (区域:*.com)

  • 权威域名服务器:记录了所有区域内站点的ip地址。(区域:*.网站名.com )

  • 本地域名服务器: 缓存访问过的网站的域名信息。

域名解析的过程

搭建DNS域名解析服务器

dns服务相关软件安装

  • 安装 

# 如果不知道dns服务器的软件包的名称 可以去搜索dns关键字
[root@server ~]# dnf search dns // 搜索
...
bind.aarch64 : The Berkeley Internet Name Domain (BIND) DNS (Domain Name System): server
...
dnf install bind -y #软件即可完成安装

/etc/named.conf :该文件是主配置文件

  • options:dns服务器选项设置

  • logging: 日志的配置

  • zone : 区域管理配置

  • include:引用到的子配置

options{listen-on port 53 { 172.25.254.100; }; #监听的端口号和ip...allow-query     { 172.25.254.0/24; }; #允许访问的网段
}
  • /etc/named.rfc1912.zones :这里区域管理配置文件

  • /var/named : 该目录存放着详细的域名解析配置文件

正向解析服务器搭建

1.设置主配置文件

[root@server ~]# vim /etc/named.conf
...910 options {11     listen-on port 53 { 192.168.25.100; };12     listen-on-v6 port 53 { ::1; };13     directory   "/var/named";14     dump-file   "/var/named/data/cache_dump.db";15     statistics-file "/var/named/data/named_stats.txt";16     memstatistics-file "/var/named/data/named_mem_stats.txt";17     secroots-file   "/var/named/data/named.secroots";18     recursing-file  "/var/named/data/named.recursing";19     allow-query     { 192.168.25.0/24; };20
...
[root@server ~]# systemctl enable --now named.service
Created symlink /etc/systemd/system/multi-user.target.wants/named.service → /usr/lib/systemd/system/named.service.
[root@server ~]#

2.设置区域文件  

[root@Server ~]# vim /etc/named.rfc1912.zones
...2829 zone "zhangsan.org" IN{30         type master;31         file "zhangsan.org.zone" # 文件的绝对路径 /var/named/heroliu.org.zone32 };
...

3.设置域名解析文件

[root@server ~]# cd /var/named
[root@Server named]# cp -p named.localhost heroliu.org.zone # 通过复制模创建区域解析文件
[root@server named]# vim zhangsan.org.zone
...
1 $TTL 1D  # 域名存活时间是一天2 @   IN SOA  dns.zhangsan.org. mail.admin.zhangsan. (3                     2025042002  ; serial4                     1D  ; refresh5                     1H  ; retry6                     1W  ; expire7                     3H )    ; minimum8         NS  dns.zhangsan.org.11 dns     A   192.168.25.10013 image   A   192.168.25.10114 www     A   192.168.25.102
...

4.开启/重启服务

[root@Server named]# systemctl start/restart named

 5.将客户端的网络设置中dns指向本地dns服务器

//4.客户端修改dns指向自己的dns服务器
# [root@Client ~]# dnf install bind-utils -y #安装测试工具
# [root@Client ~]# nmcli connection modify xxxx(你的会话文件名,如ens160) ipv4.dns # 172.25.254.100
# [root@Client ~]# nmcli connection reload
# [root@Client ~]# nmcli connection up xxxx(你的会话文件名,如ens160) 
# 连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/7)
[root@Client ~]# dnf install bind -y
[root@client ~]# nmcli connection modify ens160 ipv4.dns 192.168.25.100
[root@client ~]# nmcli connection reload
[root@client ~]# nmcli connection up ens160
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/4)
[root@client ~]#

6.在客户端验证能否解析

[root@client ~]# nslookup www.zhangsan.org
Server:         192.168.25.100
Address:        192.168.25.100#53Name:   www.zhangsan.org
Address: 192.168.25.102[root@client ~]# nslookup dns.zhangsan.org
Server:         192.168.25.100
Address:        192.168.25.100#53Name:   dns.zhangsan.org
Address: 192.168.25.100

反向解析服务器

如果说 正向解析:通过 域名 -> ip

那么 反向解析: 通过 ip -> 域名

1.设置主配置文件

[root@Server ~]#vim /etc/named.conf
..
options{listen-on port 53 { 172.25.254.100; };...allow-query     { 172.25.254.0/24; };
}

2.设置区域文件 

    # 创建反向解析的区域配置
    [root@Server named]# vim /etc/named.rfc1912.zones
    ...46 zone "25.168.192.in-addr.arpa" IN {47         type master;48         file "192.168.25.arpa";49 };50
    ...# 检查etc下的配置文件是否ok
    [root@server named]# named-checkconf
    

    3.设置反向解析的解析文件 

      [root@Server named]# cd /var/named[root@server named]# cp -p named.loopback 192.168.25.arpa[root@server named]# vim 192.168.25.arpa
      ...
      1 $TTL 1D2 @   IN SOA  dns.zhangsan.org. rname.invalid. (3                     0   ; serial4                     1D  ; refresh5                     1H  ; retry6                     1W  ; expire7                     3H )    ; minimum8                         NS  dns.zhangsan.org.9 dns.zhangsan.org.       A   192.168.25.10010 101                     PTR image.zhangsan.org.11 102                     PTR www.zhangsan.org.12 100                     PTR dns.zhangsan.org.
      ...
      [root@server named]# named-checkzone 25.168.192.in-addr.arpa 192.168.25.arpa
      192.168.25.arpa:9: ignoring out-of-zone data (dns.zhangsan.org)
      zone 25.168.192.in-addr.arpa/IN: loaded serial 0
      OK
      

      4.重启服务 

      [root@server named]# systemctl restart named
      

       5.在客户端使用nslookup 通过ip后去域名

      
      [root@client ~]# nslookup 192.168.25.100
      100.25.168.192.in-addr.arpa     name = dns.zhangsan.org.[root@client ~]# nslookup 192.168.25.101
      101.25.168.192.in-addr.arpa     name = image.zhangsan.org.[root@client ~]# nslookup 192.168.25.102
      102.25.168.192.in-addr.arpa     name = www.zhangsan.org.
      

      主从DNS服务

      主服务器设置

      1.DNS指向自己

      [root@server named]# nmcli connection modify ens160 ipv4.dns 192.168.25.100
      [root@server named]# nmcli connection reload
      [root@server named]# nmcli connection up ens160
      连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/3)
      [root@server named]#
      

      2.每一个区域配置文件中添加一个 转发从服务器的设置allow-transfer { 192.168.25.200; };

      
      [root@server named]# vim /etc/named.rfc1912.zones
      ...2829 zone "zhangsan.org" IN{30         type master;31         file "zhangsan.org.zone";32         allow-transfer{192.168.25.200;};33 };47 zone "25.168.192.in-addr.arpa" IN {48         type master;49         file "192.168.25.arpa";50         allow-transfer{192.168.25.200;};51 };
      ...

      3.在正/反数据解析配置文件中,添加从服务器dns设置

      # 正向数据解析配置文件中
      [root@server named]# vim zhangsan.org.zone
      ...8         NS  dns.zhangsan.org.9         NS  slave.zhangsan.org.# 新增10 dns     A   192.168.25.10011 slave   A   192.168.25.200# 新增
      ...
      # 反向数据解析配置文件中
      [root@server named]# vim 192.168.25.arpa
      ...8                         NS  dns.zhangsan.org.9                         NS  slave.zhangsan.org.13 200                     PTR slave.zhangsan.org.
      ...

      4.重启

      [root@server named]# systemctl restart named
      从服务器设置

      1.安装bidn及DNS指向自己

      [root@Client ~]# dnf install bind -y
      [root@client ~]# nmcli connection modify ens160 ipv4.dns 192.168.25.200
      [root@client ~]# nmcli connection reload
      [root@client ~]# nmcli connection up ens160
      连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/4)
      [root@client ~]#
      

      2.设置主配置文件

      [root@Client ~]# vim /etc/named.conf
      ...11     listen-on port 53 { 192.168.25.200; };19     allow-query     { 192.168.25.0/24; };
      ...
      

      3.添加区域信息 type slave;设置masters {172.25.254.100;};设置正反向数据解析配置文件的保存位置,必须在slaves(/var/named/slaves)

      
      [root@client ~]# vim /etc/named.rfc1912.zones
      ...
      zone "zhangsan.org" IN {type slave;file "slaves/zhangsan.org.zone";masters {192.168.25.100;};
      };zone "25.168.192.in-addr.arpa" IN {type slave;file "slaves/192.168.25.arpa";masters {192.168.25.100;};
      };
      ...

      4.重启

      [root@client ~]# systemctl restart named
      检测主从是否生效
      # 从服务器因为dns设置的是自己 如果也可以实现域名解析说明,主从设置成功
      [root@client ~]# nslookup www.zhangsan.org
      Server:         192.168.25.200
      Address:        192.168.25.200#53Name:   www.zhangsan.org
      Address: 192.168.25.102[root@client ~]# nslookup dns.zhangsan.org
      Server:         192.168.25.200
      Address:        192.168.25.200#53Name:   dns.zhangsan.org
      Address: 192.168.25.100[root@client ~]# nslookup 192.168.25.101
      101.25.168.192.in-addr.arpa     name = image.zhangsan.org.[root@client ~]# dig @192.168.25.100 dns.zhangsan.org; <<>> DiG 9.16.23-RH <<>> @192.168.25.100 dns.zhangsan.org
      ; (1 server found)
      ;; global options: +cmd
      ;; Got answer:
      ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63011
      ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1;; OPT PSEUDOSECTION:
      ; EDNS: version: 0, flags:; udp: 1232
      ; COOKIE: 06506cea86bf21e3010000006804f093cc70e23d363ee556 (good)
      ;; QUESTION SECTION:
      ;dns.zhangsan.org.              IN      A;; ANSWER SECTION:
      dns.zhangsan.org.       86400   IN      A       192.168.25.100;; Query time: 2 msec
      ;; SERVER: 192.168.25.100#53(192.168.25.100)
      ;; WHEN: Sun Apr 20 21:03:15 CST 2025
      ;; MSG SIZE  rcvd: 89[root@client ~]#
      
      增量区域传送
      • 功能:仅复制区域里变化的文件

      • 第一步:主服务端操作,修改数据配置文件

      [root@server ~]# vim  /var/named/openlab.com.zone1 $TTL 1D2 @   IN SOA  dns.zhangsan.org. mail.admin.zhangsan. (3                     2025042002  ; serial4                     1D  ; refresh5                     1H  ; retry6                     1W  ; expire7                     3H )    ; minimum8         NS  dns.zhangsan.org.9         NS  slave.zhangsan.org.10         MX  8 mail.zhangsan.org11 dns     A   192.168.25.10012 slave   A   192.168.25.20013 image   A   192.168.25.10114 www     A   192.168.25.10215 www1    CNAME www #添加16 mail    A   192.168.25.103 # 添加# 注意:1 ; serial 处的序号数字必须加1,否则从服务端不更新
      • 第二步:主服务端操作,重启服务

      [root@server named]# systemctl restart named
      • 第三步:从服务端操作,重启服务

      [root@client ~]# systemctl restart named
      
      • 第四步:从服务端操作,测试

      [root@client ~]# nslookup mail.zhangsan.org
      Server:         192.168.25.200
      Address:        192.168.25.200#53Name:   mail.zhangsan.org
      Address: 192.168.25.103[root@client ~]# nslookup www1.zhangsan.org
      Server:         192.168.25.200
      Address:        192.168.25.200#53www1.zhangsan.org       canonical name = www.zhangsan.org.
      Name:   www.zhangsan.org
      Address: 192.168.25.102[root@client ~]#
      注意:
      • 序号需要比原序号大(一般改一次加一)

      • 更新频率可以改小一点,这样比较快看到实验结果(如 1D  ; refresh>>3S ; refresh)

      • 需要写一条关于从服务器的NS和A记录,不然新增的数据有时能更新有时无法更新

      http://www.xdnf.cn/news/903.html

      相关文章:

    1. Java秒杀功能-案例
    2. jvm-获取方法签名的方法
    3. 【uniapp-兼容性处理】安卓uView组件中u-input后置插槽不展示
    4. 03-HTML常见元素
    5. win10设置软件开机自启
    6. 从0开始配置spark-local模式
    7. 聊透多线程编程-线程互斥与同步-12. C# Monitor类实现线程互斥
    8. Prompt 攻击与防范:大语言模型安全的新挑战
    9. Google Store 如何利用 glTF 3D 模型改变产品教育
    10. L1-1、Prompt 是什么?为什么它能“控制 AI”?
    11. C++入门语法
    12. 在线查看【免费】 mp3,wav,mp4,flv 等音视频格式文件文件格式网站
    13. Spark,IDEA编写Maven项目
    14. c++算法-(1)
    15. Precision Machine Dynamics/Mechatronics Design - 5
    16. 算法工程师面试题与参考答案资料(2025年版)
    17. Python实例题:Pvthon3实现简单的FTP认证服
    18. Pycharm(九)函数的闭包、装饰器
    19. 【TeamFlow】4.1 Git使用指南
    20. 高级java每日一道面试题-2025年4月19日-微服务篇[Nacos篇]-Nacos未来的发展方向和规划有哪些?
    21. mac 本地 docker 部署 nacos
    22. 本地搭建一个简易版本的 Web3 服务
    23. 【Easylive】AdminFilter 详细解析
    24. Sentinel源码—7.参数限流和注解的实现一
    25. 经典算法 输出在环上的点
    26. 【阿里云大模型高级工程师ACP学习笔记】2.1 用大模型构建新人答疑机器人
    27. 绿色体育直播赛事扁平自适应M25直播模板源码
    28. Qt项目——汽车仪表盘
    29. git详解
    30. Vue v-for 循环DOM 指定dom个数展示一行